Beispiel #1
0
    async def get_page_contents(self) -> Union[str, Embed]:
        if self.search_type == SearchType.YOUTUBE:
            video_url = self.results[self.page_index].url

            return f"{self.tr.format('search_command_yt_title', self.query)}\n{video_url}"
        else:
            if self.search_type == SearchType.GOOGLE:
                page_results = self.results[(
                    self.page_index * GOOGLE_PAGE_SIZE):][:GOOGLE_PAGE_SIZE]

                embed = styled_embed_generator.get_embed(
                    Style.INFO,
                    title=self.tr.format("search_command_google_title",
                                         self.query),
                    author=self.original_author,
                    guild=self.guild)

                for result in page_results:
                    embed.add_field(name=result.title,
                                    value=f"[{result.snippet}]({result.url})",
                                    inline=False)
            else:
                image = self.results[self.page_index]

                embed = styled_embed_generator.get_embed(
                    Style.INFO,
                    title=self.tr.format("search_command_img_title",
                                         self.query),
                    author=self.original_author,
                    guild=self.guild)
                embed.set_image(url=image.url)
                embed.set_author(name=image.title, url=image.context_url)

            return embed
Beispiel #2
0
    async def get_page_contents(self) -> Union[str, Embed]:
        title = self.pages[self.page_index]

        session = ClientSession(timeout=ClientTimeout(20))

        params = {"action": "query",
                  "prop": "extracts",
                  "titles": title,
                  "format": "json",
                  "exintro": "true",
                  "explainttext": "true"}

        try:
            response = await session.get("https://ru.wikipedia.org/w/api.php",
                                         params=params)
        except (asyncio.TimeoutError, ClientConnectionError):
            return styled_embed_generator.get_embed(Style.ERROR, self.tr.translate("search_connection_error"))

        data = await response.json()

        await session.close()
        response.close()

        pages = data["query"]["pages"]
        text = data["query"]["pages"][next(iter(pages))]["extract"]
        text = markdownify(text, strip=["img"])

        embed = styled_embed_generator.get_embed(Style.INFO, text, title=title, author=self.original_author,
                                                 guild=self.guild)

        return embed
    def get_embed(self, style: Style, desc: str = None, title: str = None,
                  color: Union[int, Color] = None) -> Embed:
        embed = styled_embed_generator.get_embed(style, desc, title, color,
                                                 self.author if not self.interaction else None, self.guild,
                                                 self)

        return embed
Beispiel #4
0
    async def interaction_check(self, interaction: Interaction) -> bool:
        if self.author is None or interaction.user == self.author:
            return True

        embed = styled_embed_generator.get_embed(
            Style.ERROR,
            self.tr.translate("mrvn_core_views_not_an_author"),
            translator=self.tr)

        await interaction.response.send_message(embed=embed, ephemeral=True)

        return False
Beispiel #5
0
    async def get_page_contents(self) -> Union[str, Embed]:
        embed = styled_embed_generator.get_embed(Style.INFO, title=self.tr.format("std_command_help_embed_title",
                                                                                  self.category_name),
                                                 author=self.original_author,
                                                 guild=self.guild)
        page_commands = self.commands[(self.page_index * PAGE_SIZE):][:PAGE_SIZE]

        for command in page_commands:
            embed.add_field(name=runtime.bot.get_command_desc(command, self.tr),
                            value=runtime.bot.get_translatable_desc(command, self.tr),
                            inline=False)

        return embed
Beispiel #6
0
    async def get_page_contents(self) -> Union[str, Embed]:
        embed = styled_embed_generator.get_embed(
            Style.INFO,
            title=
            f"{self.category_name} ({self.tr.translate('std_command_settings_list_' + ('global' if self.is_global else 'guild'))})",
            author=self.original_author,
            guild=self.guild)
        page_settings = self.settings_list[(self.page_index *
                                            PAGE_SIZE):][:PAGE_SIZE]

        for setting in page_settings:
            embed.add_field(name=setting[0], value=setting[1], inline=False)

        return embed