diff --git a/python/cmd_lol.py b/python/cmd_lol.py index 1419dd2..bb36e07 100644 --- a/python/cmd_lol.py +++ b/python/cmd_lol.py @@ -11,86 +11,68 @@ class LolCmds(commands.Cog, name='League of Legend commands'): def __init__(self, bot): self.bot = bot - @commands.command() + @commands.command(ignore_extra=False) @commands.cooldown(1, 2, commands.BucketType.user) - async def lol_rank(self, ctx, invocator_name, x=None): - global CD_LOLRANK - CD_LOLRANK = 0 - if x is None: - player = what_player(invocator_name) - if player != 0: - ranks = rank_track(player) - embed = discord.Embed(title=invocator_name, url='https://bit.ly/3biTekM') - embed.set_thumbnail(url='http://ddragon.leagueoflegends.com/cdn/11.2.1/img/profileicon/' + str( - player['profileIconId']) + '.png') - embed.set_author(name='League Of Legend - Rank', url='https://euw.leagueoflegends.com/en-gb/', - icon_url='https://static.wikia.nocookie.net/leagueoflegends/images/0/07/' + - 'League_of_Legends_icon.png/revision/latest?cb=20191018194326') - if isinstance(ranks, list): - for rank_s in ranks: - embed.add_field(name=rank_s[0], value=str(rank_s[1]) + ' ' + str(rank_s[2]) + ' ' + str( - rank_s[3]) + ' LP' + '\n' + str(rank_s[4]) + 'W/' + str(rank_s[5]) + 'L', inline=False) - else: - embed.description = ranks - await ctx.send(embed=embed) + async def lol_rank(self, ctx, invocator_name): + player = what_player(invocator_name) + if player != 0: + ranks = rank_track(player) + embed = discord.Embed(title=invocator_name, url='https://bit.ly/3biTekM') + embed.set_thumbnail(url='http://ddragon.leagueoflegends.com/cdn/11.2.1/img/profileicon/' + str( + player['profileIconId']) + '.png') + embed.set_author(name='League Of Legend - Rank', url='https://euw.leagueoflegends.com/en-gb/', + icon_url='https://static.wikia.nocookie.net/leagueoflegends/images/0/07/' + + 'League_of_Legends_icon.png/revision/latest?cb=20191018194326') + if isinstance(ranks, list): + for rank_s in ranks: + embed.add_field(name=rank_s[0], value=str(rank_s[1]) + ' ' + str(rank_s[2]) + ' ' + str( + rank_s[3]) + ' LP' + '\n' + str(rank_s[4]) + 'W/' + str(rank_s[5]) + 'L', inline=False) else: - await ctx.send('The username you entered is unknown.') + embed.description = ranks + await ctx.send(embed=embed) else: - await ctx.send('If you are trying to use a username with spaces, please surround it with quotes.') + await ctx.send('The username you entered is unknown.') - @commands.command() - async def lol_lastgame(self, ctx, invocator_name, x=None): - if x is None: - player = what_player(invocator_name) - if player != 0: - lst = last_match(player) - lst_p = lst[0] - maximum = lst_p[0][1] - for stat in lst_p: - if stat[1] > maximum: - maximum = stat[1] - tab, players, kda = [], [], [] - for stat in lst_p: - pourcent = round(100*stat[1]/maximum) - equals = int(round(float(pourcent)/3.3)) - hyphen = 30 - equals - tab.append('[' + '='*equals + ' '*hyphen +']\n') - players.append(stat[0][:15] + '\n') - kda.append(str(stat[2]) + '/' + str(stat[3]) + '/' + str(stat[4]) + '\n') - embed = discord.Embed(title=invocator_name, url='https://bit.ly/3biTekM', - description='Date: ' + lst[2] + '\nLength: ' + lst[3]) - embed.set_author(name='League Of Legend - Last Game', url='https://euw.leagueoflegends.com/en-gb/', - icon_url='https://static.wikia.nocookie.net/leagueoflegends/images/0/07/' + - 'League_of_Legends_icon.png/revision/latest?cb=20191018194326') + @commands.command(ignore_extra=False) + async def lol_lastgame(self, ctx, invocator_name): + player = what_player(invocator_name) + if player != 0: + lst = last_match(player) + lst_p = lst[0] + maximum = lst_p[0][1] + for stat in lst_p: + if stat[1] > maximum: + maximum = stat[1] + tab, players, kda = [], [], [] + for stat in lst_p: + pourcent = round(100*stat[1]/maximum) + equals = int(round(float(pourcent)/3.3)) + hyphen = 30 - equals + tab.append('[' + '='*equals + ' '*hyphen +']\n') + players.append(stat[0][:15] + '\n') + kda.append(str(stat[2]) + '/' + str(stat[3]) + '/' + str(stat[4]) + '\n') + embed = discord.Embed(title=invocator_name, url='https://bit.ly/3biTekM', + description='Date: ' + lst[2] + '\nLength: ' + lst[3]) + embed.set_author(name='League Of Legend - Last Game', url='https://euw.leagueoflegends.com/en-gb/', + icon_url='https://static.wikia.nocookie.net/leagueoflegends/images/0/07/' + + 'League_of_Legends_icon.png/revision/latest?cb=20191018194326') + await ctx.send(embed=embed) + for i in range(0, -2, -1): + embed = discord.Embed(title='Team 1' if not i else 'Team 2', colour= + discord.Colour.green() if lst[1][0][i] == 'Win' else discord.Colour.red(), description= + (':drop_of_blood: First blood\n' if len(lst[1][1]) != 0 and lst[1][1][i] else '') + + (':tokyo_tower: First tower\n' if len(lst[1][2]) != 0 and lst[1][2][i] else '') + + (':dragon_face: First dragon\n' if len(lst[1][3]) != 0 and lst[1][3][i] else '')) + embed.add_field(name='Players', + value='```\n' + ''.join(players[:5] if not i else players[5:]) + '```') + embed.add_field(name='Total damage dealt to champions', + value='```\n' + ''.join(tab[:5] if not i else tab[5:]) + '```') + embed.add_field(name='K / D / A', + value='```\n' + ''.join(kda[:5] if not i else kda[5:]) + '```') await ctx.send(embed=embed) - for i in range(0, -2, -1): - embed = discord.Embed(title='Team 1' if not i else 'Team 2', colour= - discord.Colour.green() if lst[1][0][i] == 'Win' else discord.Colour.red(), description= - (':drop_of_blood: First blood\n' if len(lst[1][1]) != 0 and lst[1][1][i] else '') + - (':tokyo_tower: First tower\n' if len(lst[1][2]) != 0 and lst[1][2][i] else '') + - (':dragon_face: First dragon\n' if len(lst[1][3]) != 0 and lst[1][3][i] else '')) - embed.add_field(name='Players', - value='```\n' + ''.join(players[:5] if not i else players[5:]) + '```') - embed.add_field(name='Total damage dealt to champions', - value='```\n' + ''.join(tab[:5] if not i else tab[5:]) + '```') - embed.add_field(name='K / D / A', - value='```\n' + ''.join(kda[:5] if not i else kda[5:]) + '```') - await ctx.send(embed=embed) - else: - await ctx.send('The username you entered is unknown.') else: - await ctx.send('If you are trying to use a username with spaces, please surround it with quotes.') - - - @lol_rank.error - async def lolrank_error(self, ctx, error): - global CD_LOLRANK - if isinstance(error, commands.CommandOnCooldown) and not CD_LOLRANK: - await ctx.send(f'Please wait at least 2 seconds between each $lol_rank.') - CD_LOLRANK = 1 - elif isinstance(error, commands.MissingRequiredArgument): - await ctx.send(f'Please enter an invocator name (EUW) after $lol_rank.') + await ctx.send('The username you entered is unknown.') def setup(bot): diff --git a/python/cmd_osu.py b/python/cmd_osu.py index 41a68cc..d3ab942 100644 --- a/python/cmd_osu.py +++ b/python/cmd_osu.py @@ -8,79 +8,70 @@ class OsuCmds(commands.Cog, name='Osu! commands'): def __init__(self, bot): self.bot = bot - @commands.command() - async def osu_profile(self, ctx, username, x=None): - if x is None: - 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_profile(self, ctx, username): + lst = await ask_osu_profile(username) + if lst == 1: + await ctx.send('The username you entered is unknown.') else: - await ctx.send('If you are trying to use a username with spaces, please surround it with quotes.') + 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() - async def osu_lastgame(self, ctx, username, x=None): - if x is None: - 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_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: - await ctx.send('If you are trying to use a username with spaces, please surround it with quotes.') + 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() - async def osu_acc(self, ctx, username, x=None): - if x is None: - 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.') + @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('If you are trying to use a username with spaces, please surround it with quotes.') + await ctx.send('The player you entered is unknown or didn\'t played any game recently.') def setup(bot): diff --git a/python/cmd_other.py b/python/cmd_other.py index 32fbc71..006984c 100644 --- a/python/cmd_other.py +++ b/python/cmd_other.py @@ -3,13 +3,12 @@ import asyncio from discord.ext import commands from discord.ext.commands.cooldowns import BucketType -CD_ISSOU = 0 class OtherCmds(commands.Cog, name='Other commands'): def __init__(self, bot): self.bot = bot - @commands.command() + @commands.command(ignore_extra=False) @commands.cooldown(1, 2, commands.BucketType.guild) async def issou(self, ctx, username: discord.User = None): if username is not None: @@ -31,19 +30,9 @@ class OtherCmds(commands.Cog, name='Other commands'): if voice.is_playing(): await asyncio.sleep(1) await voice.disconnect() - global CD_ISSOU - CD_ISSOU = 0 else: await ctx.send('You or the targeted person are not connected to any channel.') - @issou.error - async def issou_error(self, ctx, error): - global CD_ISSOU - if isinstance(error, commands.CommandOnCooldown) and not CD_ISSOU: - await ctx.send(f'Please wait at least 2 seconds between each $issou.') - CD_ISSOU = 1 - - def setup(bot): bot.add_cog(OtherCmds(bot)) diff --git a/python/cmd_twitch.py b/python/cmd_twitch.py index 58e6ae7..57cc105 100644 --- a/python/cmd_twitch.py +++ b/python/cmd_twitch.py @@ -74,7 +74,7 @@ class TwitchCmds(commands.Cog, name='Twitch commands'): def __init__(self, bot): self.bot = bot - @commands.command() + @commands.command(ignore_extra=False) async def chat_set(self, ctx, channel_name): try: await ctx.message.delete() diff --git a/python/main.py b/python/main.py index 2767dc4..7b17123 100644 --- a/python/main.py +++ b/python/main.py @@ -1,13 +1,16 @@ from private import TOKEN_BOT from time import time +from datetime import datetime from discord.ext import commands import discord + bot = commands.Bot(command_prefix='$') startup_extensions = ["cmd_other", "cmd_lol", "cmd_osu", "cmd_twitch"] time_s = time() print('Loading started') + @bot.event async def on_ready(): default_activity = discord.Activity(type=discord.ActivityType.listening, name='$help') @@ -16,33 +19,24 @@ async def on_ready(): ' in ' + str(round(time() - time_s, 2)) + 's.') -@bot.command(hidden=True) +@bot.event +async def on_command_error(ctx, error): + print(datetime.now().strftime("[%H:%M:%S]") + ' \'' + str(error) + '\' from ' + str(ctx.author) + ' on ' + ctx.message.guild.name + '.') + await ctx.send(error) + + +@bot.command(hidden=True, ignore_extra=False) @commands.is_owner() async def loadext(ctx, extension): - try: - bot.load_extension(extension) - await ctx.send(str(extension) + ' successfully loaded.') - except discord.ext.commands.ExtensionNotFound: - await ctx.send('Extension not found.') - except discord.ext.commands.ExtensionAlreadyLoaded: - await ctx.send('Extension already loaded.') - except discord.ext.commands.NoEntryPointError as a: - await ctx.send(a) - except ExtensionFailed as b: - await ctx.send(b) + bot.load_extension(extension) + await ctx.send("Extension loaded.") -@bot.command(hidden=True) +@bot.command(hidden=True, ignore_extra=False) @commands.is_owner() async def unloadext(ctx, extension): - try: - bot.unload_extension(extension) - await ctx.send(str(extension) + ' successfully unloaded.') - except discord.ext.commands.ExtensionNotFound: - await ctx.send('Extension not found.') - except discord.ext.commands.ExtensionNotLoaded: - await ctx.send('Extension not loaded.') - + bot.unload_extension(extension) + await ctx.send("Extension unloaded.") if __name__ == "__main__": for extension in startup_extensions: