import discord from discord.ext import commands from api_osu import (ask_osu_profile, ask_osu_last_game, ask_osu_acc) class OsuCmds(commands.Cog, name='Osu! commands'): def __init__(self, bot): self.bot = bot @commands.command(ignore_extra=False) async def osu_profile(self, ctx, username): lst = await ask_osu_profile(username) if lst == 1: await ctx.send('The username you entered is unknown.') else: embed = discord.Embed(title=username, url='https://osu.ppy.sh/users/' + str(lst[0])) embed.set_author(name='Osu! - Profile', url='https://osu.ppy.sh/home', icon_url=r'https://upload.wikimedia.org/wikipedia/commons/4/44/Osu%21Logo_%282019%29.png') embed.set_thumbnail(url='https://a.ppy.sh/' + str(lst[0])) embed.add_field(name='Global Ranking', value='#'+str('{:,}'.format(lst[8]))) embed.add_field(name='Total Play Time', value=str("%.0f" % ((lst[6] % (86400 * 30)) / 86400)) + 'd ' + str("%.0f" % ((lst[6] % 86400) / 3600)) + 'h ' + str("%.0f" % ((lst[6] % 3600) / 60)) + 'm ') embed.add_field(name='|', value='|') embed.add_field(name='Level', value=str("%.0f" % lst[7])) embed.add_field(name='Ranked Score', value=str('{:,}'.format(lst[1]))) embed.add_field(name='Hit Accuracy', value=str("%.2f" % lst[2]) + '%') embed.add_field(name='Play Count', value=str('{:,}'.format(lst[3]))) embed.add_field(name='Total Score', value=str('{:,}'.format(lst[4]))) embed.add_field(name='Total Hits', value=str('{:,}'.format(lst[5]))) await ctx.send(embed=embed) @commands.command(ignore_extra=False) async def osu_lastgame(self, ctx, username): lst = await ask_osu_last_game(username) if lst == 1: await ctx.send('The player you entered is unknown or didn\'t played any game recently.') else: embed = discord.Embed(title=str(lst[1]) + ' by ' + str(lst[2]), url='https://osu.ppy.sh/beatmapsets/' + str(lst[0]), description='BPM: ' + str("%.0f" % lst[3]) + ' ; Stars: ' + str("%.1f" % lst[4]) + ' ; CS: ' + str(lst[5]) + ' ; AR: ' + str(lst[7]) + ' ; OD: ' + str(lst[6]) + ' ; HP: ' + str(lst[8])) embed.set_author(name='Osu! - Last game', url='https://osu.ppy.sh/home', icon_url=r'https://upload.wikimedia.org/wikipedia/commons/4/44/Osu%21Logo_%282019%29.png') embed.set_thumbnail(url='https://b.ppy.sh/thumb/' + str(lst[0]) + 'l.jpg') embed.add_field(name='Rank', value=str(lst[11])) embed.add_field(name='Score', value=str('{:,}'.format(lst[9]))) embed.add_field(name='Max Combo', value=str(lst[10])) embed.add_field(name='300', value=str(lst[12])) embed.add_field(name='Geki', value=str(lst[17])) embed.add_field(name='Accuracy', value=str("%.2f" % (((lst[12]*300) + (lst[13]*100) + (lst[14]*50)) / (sum(lst[12:16]) * 300) * 100) + '%')) embed.add_field(name='100', value=str(lst[13])) embed.add_field(name='Katu', value=str(lst[16])) embed.add_field(name='Player :', value=str(username)) embed.add_field(name='50', value=str(lst[14])) embed.add_field(name='Miss', value=str(lst[15])) embed.add_field(name='|', value='|') await ctx.send(embed=embed) @commands.command(ignore_extra=False) async def osu_acc(self, ctx, username): test_acc = await ask_osu_acc(username) if test_acc: embed = discord.Embed() embed.set_author(name='Osu! - Accuracy', icon_url=r'https://upload.wikimedia.org/wikipedia/commons/4/44/Osu%21Logo_%282019%29.png') embed.set_image(url="attachment://acc.jpeg") await ctx.send(embed=embed, file=discord.File('acc.jpeg')) else: await ctx.send('The player you entered is unknown or didn\'t played any game recently.') def setup(bot): bot.add_cog(OsuCmds(bot))