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)
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ı!")
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)
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("°", "°") ) 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)
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ı!")
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)