diff --git a/README.md b/README.md index 5a35d93..b2c61a4 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

🤖 Risitas Discord Bot 🤖

- Version + Version License: GPL 3.0 @@ -23,6 +23,10 @@
+![](assets/lol_lastgame.png) + +
+ ![](assets/osu_profile.png)
@@ -63,6 +67,13 @@ $lol_rank {lol_username} This command will display a message with the current League of Legend rank of the EUW account you ask for. Make sure to use quotes if there is spaces in the LoL username. +### **lol_lastgame** +``` +$lol_lastgame {lol_username} +``` +This command will display a summary (which team won, players, damages, kda...) of the last League of Legend game of the EUW account you ask for. + + ## Osu! diff --git a/assets/lol_lastgame.png b/assets/lol_lastgame.png new file mode 100644 index 0000000..2ee7229 Binary files /dev/null and b/assets/lol_lastgame.png differ diff --git a/python/api_riot.py b/python/api_riot.py index 4f3c5e7..46ea921 100644 --- a/python/api_riot.py +++ b/python/api_riot.py @@ -1,5 +1,6 @@ from riotwatcher import LolWatcher, ApiError from private import TOKEN_RIOT +from datetime import datetime, timedelta WATCHER = LolWatcher(TOKEN_RIOT) REGION = 'EUW1' @@ -10,6 +11,7 @@ def what_player(name): except ApiError: return 0 + def rank_track(player): ranked_stats = WATCHER.league.by_summoner(REGION, player['id']) if not ranked_stats: @@ -22,3 +24,28 @@ def rank_track(player): what_rank = 'Flexible' liste.append([what_rank, infos['tier'], infos['rank'], infos['leaguePoints'], infos['wins'], infos['losses']]) return liste + + +def last_match(player): + matches = WATCHER.match.matchlist_by_account('EUW1', player['accountId']) + recent_match = matches['matches'][0] + match_detail = WATCHER.match.by_id('EUW1', recent_match['gameId']) + lst = [[],[[],[]]] + for x, y in zip(match_detail['participants'], match_detail['participantIdentities']): + lst[0].append([y['player']['summonerName'], + x['stats']['totalDamageDealtToChampions'], + x['stats']['kills'], + x['stats']['deaths'], + x['stats']['assists']]) + + for team in match_detail['teams']: + lst[1][0].append(team['win']) + lst[1][1].append(team['firstBlood']) + + ts = str(match_detail['gameCreation'])[:-3] + dt = datetime.fromtimestamp(int(ts)).date() + + lst.append(str(dt)) + lst.append(str(timedelta(seconds=match_detail['gameDuration']))) + + return lst diff --git a/python/cmd_lol.py b/python/cmd_lol.py index 3341e2a..9faa5cd 100644 --- a/python/cmd_lol.py +++ b/python/cmd_lol.py @@ -3,7 +3,7 @@ import asyncio from discord.ext import commands from discord.ext.commands.cooldowns import BucketType from private import TOKEN_RIOT -from api_riot import rank_track, what_player +from api_riot import rank_track, what_player, last_match CD_LOLRANK = 0 @@ -39,6 +39,45 @@ class LolCmds(commands.Cog, name='League of Legend commands'): await ctx.send('If you are trying to use a username with spaces, please surround it with quotes.') + @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] + '\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' if lst[1][1][i] else None) + 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