示例#1
0
    async def emojis(self, ctx, guild_id=None):
        """Shows you about the emoji info int the server."""

        embeds = []

        if guild_id is not None and await self.bot.is_owner(ctx.author):
            guild = self.bot.get_guild(guild_id)

            if guild is None:
                return await ctx.send("Sunucu bulunamadı!")
        else:
            guild = ctx.guild

        for emojis in functions.list_to_matrix(guild.emojis):
            embed = discord.Embed(color=self.bot.color)
            embed.set_author(name=guild, icon_url=guild.icon.url)

            embed.description = ("\n".join([
                "{} `{} (Eklendi: {})`".format(
                    ctx.get_emoji(guild, e.id),
                    ctx.get_emoji(guild, e.id),
                    util_time.humanize(e.created_at, g=["day"]),
                ) for e in emojis
            ]) + "\n\nToplam: `{}`".format(len(guild.emojis)))
            embeds.append(embed)

        menu = menus.MenuPages(
            timeout=30,
            clear_reactions_after=True,
            source=paginator.EmbedSource(data=embeds),
        )
        await menu.start(ctx)
示例#2
0
    async def emojistats(self, ctx, member: discord.Member = None):
        """Shows you statistics about the emoji usage on author."""

        embeds = []
        guild = ctx.guild

        if member == None:
            member = ctx.author

        data = (await models.EmojiUsageStat.filter(
            Q(guild_id=guild.id)
            & Q(user_id=member.id)).order_by("-amount").values(
                "emoji_id", "amount", "last_usage"))
        total = sum([d["amount"] for d in data])

        for data in functions.list_to_matrix(data):
            embed = discord.Embed(color=self.bot.color)
            embed.set_author(name=member, icon_url=member.avatar.url)
            embed.description = "{}\n\n{}".format(
                self.get_emoji_stats(ctx, data),
                "Toplam: `{}`".format(total),
            )
            embeds.append(embed)

        menu = menus.MenuPages(
            timeout=30,
            clear_reactions_after=True,
            source=paginator.EmbedSource(data=embeds),
        )
        try:
            await menu.start(ctx)
        except IndexError:
            await ctx.send("Kayıt bulunamadı!")
示例#3
0
    async def feeds(self, ctx):
        """Shows the list of feeds on the server."""

        embeds = []
        guild = ctx.guild
        data = await models.Feed.filter(guild_id=guild.id).values()
        total = sum([1 for d in data])

        if not len(data):
            return await ctx.send("Kayıt bulunamadı!")

        for data in functions.list_to_matrix(data, col=5):
            embed = discord.Embed(color=self.bot.color)
            embed.set_author(name=guild, icon_url=guild.icon.url)
            embed.description = "{}\n{}".format(
                "\n".join([
                    "ID: `{0}`\n"
                    "Kanal: {1} `(En son: {2})`\n"
                    "Adres: [`{3}`]({3})\n".format(
                        d["feed_id"],
                        guild.get_channel(d["channel_id"]).mention,
                        util_time.humanize(d["last_entry"]),
                        d["feed_url"],
                    ) for d in data
                ]),
                "Toplam: `{}`".format(total),
            )
            embeds.append(embed)

        menu = menus.MenuPages(
            timeout=30,
            clear_reactions_after=True,
            source=paginator.EmbedSource(data=embeds),
        )
        await menu.start(ctx)
示例#4
0
    async def quake(self, ctx, last: int = 1):
        """Show quake information from the Kandilli Observatory."""

        embeds = []
        max_data = 50

        async with self.bot.session.get(
            "https://api.berkealp.net/kandilli/index.php",
            params={"last": max_data if last > max_data else last},
            ssl=True,
        ) as resp:
            if resp.status != 200:
                return await ctx.send(
                    "API connection error! Status code: `{}`".format(
                        resp.status
                    )
                )
            data = await resp.json()

        for d in data:
            embed = discord.Embed(color=self.bot.color)
            embed.description = (
                "Latitude: `{}`\n"
                "Longitude: `{}`\n"
                "Magnitude-Depth: `{}-{} Km`\n"
                "Datetime: `{}`\n"
                "Region: `{}`".format(
                    d["Latitude"].split(";")[0],
                    d["Longitude"].split(";")[0],
                    d["Magnitude"],
                    d["Depth"],
                    d["Time"],
                    d["Region"],
                ).replace("&deg", "°")
            )
            embed.set_thumbnail(url=d["MapImage"])
            embeds.append(embed)

        menu = menus.MenuPages(
            timeout=30,
            clear_reactions_after=True,
            source=paginator.EmbedSource(data=embeds),
        )
        await menu.start(ctx)
示例#5
0
    async def emojistats_server(self, ctx):
        """Shows statistics about the emoji usage on server."""

        embeds = []
        guild = ctx.guild
        get_member = lambda member_id: guild.get_member(member_id)

        data = (await models.EmojiUsageStat.filter(guild_id=guild.id).annotate(
            sum=Sum("amount")).group_by("emoji_id").order_by("-sum").values())

        last_usage = (await models.EmojiUsageStat.filter(
            guild_id=guild.id).order_by("-last_usage").limit(1).values())

        last_usage = last_usage[0]

        for data in functions.list_to_matrix(data):
            emoji = ctx.get_emoji(ctx.guild, last_usage["emoji_id"])

            if not emoji:
                emoji = "\U0001f5d1"

            embed = discord.Embed(color=self.bot.color)
            embed.set_author(name=guild, icon_url=guild.icon.url)
            embed.description = "{}\n\nEn son: {}".format(
                self.get_emoji_stats(ctx, data, key="sum"),
                "{} {} `({})`".format(
                    emoji,
                    get_member(last_usage["user_id"]).mention,
                    util_time.humanize(last_usage["last_usage"]),
                ),
            )
            embeds.append(embed)

        menu = menus.MenuPages(
            timeout=30,
            clear_reactions_after=True,
            source=paginator.EmbedSource(data=embeds),
        )
        try:
            await menu.start(ctx)
        except IndexError:
            await ctx.send("Kayıt bulunamadı!")
示例#6
0
    async def wiki(self, ctx, *, search):
        """Search the Turkish Wikipedia."""

        embeds = []

        async with ctx.typing():
            wiki = aiowiki.Wiki.wikipedia("tr")

            for page in await wiki.opensearch(search):
                embed = discord.Embed(colour=self.bot.color)
                embed.title = page.title
                embed.url = (await page.urls())[0].split("(")[0]
                embed.description = (await page.summary())[:2000] + "..."
                embeds.append(embed)

        menu = menus.MenuPages(
            timeout=30,
            clear_reactions_after=True,
            source=paginator.EmbedSource(data=embeds),
        )
        await menu.start(ctx)