From fe392e3ca96a4e8d6a4c984b77ddbcc446ae579d Mon Sep 17 00:00:00 2001 From: Florian SYLVAIN Date: Mon, 8 Feb 2021 15:49:31 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20-=20Syntax=20improvement=20and?= =?UTF-8?q?=20compliance=20with=20the=20PEP=208=20convention?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 74 +++++++++++++++++++++++++++++------------------------ riot_api.py | 13 +++++----- 2 files changed, 47 insertions(+), 40 deletions(-) diff --git a/main.py b/main.py index baadefd..e7be8d2 100644 --- a/main.py +++ b/main.py @@ -1,17 +1,19 @@ -import asyncio, socket, re, discord -from discord.ext import tasks, commands +import asyncio +import socket +import re +import discord from private import * -from riot_api import rank_track, watcher, region +from discord.ext import tasks, commands +from riot_api import rank_track, WATCHER, REGION from riotwatcher import ApiError from emoji import demojize from twitch import TwitchClient bot = commands.Bot(command_prefix='$') -twitch_client = TwitchClient(client_id = id_twitch, oauth_token = token_twitch) +twitch_client = TwitchClient(client_id = ID_TWITCH, oauth_token = TOKEN_TWITCH) chats = dict() -class ChatObj(object): - +class ChatObj: def __init__(self, twitch_chan, discord_chan): self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.twitch_chan = twitch_chan @@ -20,14 +22,14 @@ class ChatObj(object): def chat_init(self): try: - self.sock.connect((server, port)) - self.sock.send(f"PASS {token_twitch}\n".encode('utf-8')) - self.sock.send(f"NICK {nickname}\n".encode('utf-8')) + self.sock.connect((SERVER, PORT)) + self.sock.send(f"PASS {TOKEN_TWITCH}\n".encode('utf-8')) + self.sock.send(f"NICK {NICKNAME}\n".encode('utf-8')) self.sock.send(f"JOIN {'#'+self.twitch_chan}\n".encode('utf-8')) self.sock.settimeout(0.0) self.sock.setblocking(0) return 1 - except OSError as test: + except OSError: return 0 @tasks.loop(seconds=1) @@ -37,20 +39,24 @@ class ChatObj(object): resp = self.sock.recv(2048).decode('utf-8') except socket.error: resp = '' - + if resp.startswith('PING'): self.sock.send("PONG\n".encode('utf-8')) elif len(resp) > 0: try: - username, channel, message = re.search(':(.*)\!.*@.*\.tmi\.twitch\.tv PRIVMSG #(.*) :(.*)', demojize(resp)).groups() + chain = re.search(r':(.*)\!.*@.*\.tmi\.twitch\.tv PRIVMSG #(.*) :(.*)', demojize(resp)) + username = chain.group(1) + message = chain.group(3) msg = f"**__{username}__ :** {message}" await self.discord_chan.send(msg) - except Exception: + except discord.DiscordException: + pass + except AttributeError: pass @twitch.after_loop - async def after_twitch(): + async def after_twitch(self): self.sock.shutdown(1) try: self.sock.close() @@ -65,12 +71,13 @@ def check_user(name): @bot.event async def on_ready(): - await bot.change_presence(activity=discord.Activity(type=discord.ActivityType.listening, name=f"$help")) + default_activity = discord.Activity(type=discord.ActivityType.listening, name="$help") + await bot.change_presence(activity=default_activity) print('We have logged in as {0.user}'.format(bot)) - @bot.command() async def chat_set(ctx, arg1): + await ctx.message.delete() chan = ctx.channel if chan in list(chats): await ctx.send("```A chat is already active, you have to stop it before with the cmd $chat_stop !```") @@ -83,10 +90,11 @@ async def chat_set(ctx, arg1): else: await ctx.send('```Something went wrong when trying to access Twitch IRC.```') else: - await ctx.send('```This twitch channel doesn\'t seems to exist.```') + await ctx.send(r'```This twitch channel doesn\'t seems to exist.```') @bot.command() async def chat_stop(ctx): + await ctx.message.delete() chan = ctx.channel if chan in list(chats): chats[chan].twitch.stop() @@ -98,20 +106,20 @@ async def chat_stop(ctx): await ctx.send(message) @bot.command() -async def rank(ctx, arg, argF=None): - if argF is None: +async def rank(ctx, arg, argf=None): + await ctx.message.delete() + if argf is None: try: - player = watcher.summoner.by_name(region, arg) + player = WATCHER.summoner.by_name(REGION, arg) ranks = rank_track(player) - embed = discord.Embed(title = arg, url = "https://www.youtube.com/watch?v=dQw4w9WgXcQ") - embed.set_thumbnail(url = "http://ddragon.leagueoflegends.com/cdn/11.2.1/img/profileicon/" + str(player['profileIconId']) + ".png") - if type(ranks) is list: - for i in range(len(ranks)): - text = str(ranks[i][1]) + ' ' + str(ranks[i][2]) + ' ' + str(ranks[i][3]) + ' LP' + '\n' + str(ranks[i][4]) + 'W/' + str(ranks[i][5]) + 'L' - embed.add_field(name = ranks[i][0], value = text, inline = False) + embed = discord.Embed(title=arg, url="https://www.youtube.com/watch?v=dQw4w9WgXcQ") + embed.set_thumbnail(url="http://ddragon.leagueoflegends.com/cdn/11.2.1/img/profileicon/" + str(player['profileIconId']) + ".png") + 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) + await ctx.send(embed=embed) except ApiError: await ctx.send("The nickname is unknow.") else: @@ -129,15 +137,13 @@ async def issou(ctx, arg1:discord.User=None): except AttributeError: voice_channel = None - channel = None if voice_channel is not None: - channel = voice_channel.name - vc = await voice_channel.connect() - vc.play(discord.FFmpegPCMAudio('issou.mp3')) - if vc.is_playing(): + voice = await voice_channel.connect() + voice.play(discord.FFmpegPCMAudio('issou.mp3')) + if voice.is_playing(): await asyncio.sleep(1) - await vc.disconnect() + await voice.disconnect() else: await ctx.send('You or the targeted person are not connected to any channel.') -bot.run(token_bot) \ No newline at end of file +bot.run(TOKEN_BOT) diff --git a/riot_api.py b/riot_api.py index 55167e1..11eb05c 100644 --- a/riot_api.py +++ b/riot_api.py @@ -1,12 +1,13 @@ from riotwatcher import LolWatcher -from private import token_riot +from private import TOKEN_RIOT -watcher = LolWatcher(token_riot) -region = 'EUW1' +WATCHER = LolWatcher(TOKEN_RIOT) +REGION = 'EUW1' def rank_track(player): - ranked_stats = watcher.league.by_summoner(region, player['id']) - + '''function that communicate with Riot API''' + ranked_stats = WATCHER.league.by_summoner(REGION, player['id']) + if not ranked_stats: return 'Unranked cette saison.' @@ -17,4 +18,4 @@ def rank_track(player): elif infos['queueType'] == 'RANKED_FLEX_SR': what_rank = 'Flexible' liste.append([what_rank, infos['tier'], infos['rank'], infos['leaguePoints'], infos['wins'], infos['losses']]) - return liste \ No newline at end of file + return liste