La souffrance

This commit is contained in:
Florian SYLVAIN
2021-02-04 02:43:04 +01:00
committed by GitHub
parent 152094e54f
commit ed518cb899
+86 -8
View File
@@ -1,13 +1,65 @@
import discord import discord
import asyncio import asyncio
import socket
import re
import signal
from time import sleep from time import sleep
from discord.ext import commands from discord.ext import tasks, commands
from private import token_bot from private import *
from riot_api import rank_track, watcher, region from riot_api import rank_track, watcher, region
from riotwatcher import ApiError from riotwatcher import ApiError
from emoji import demojize
from twitch import TwitchClient
print("Loading...")
bot = commands.Bot(command_prefix='$') bot = commands.Bot(command_prefix='$')
TASK = None
SOCK = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
twitch_client = TwitchClient(client_id = id_twitch, oauth_token = token_twitch)
def check_user(name):
user = twitch_client.users.translate_usernames_to_ids([name])
if user == []:
return False
return True
def chat_init(twitch_chan, ctx):
global SOCK
if check_user(twitch_chan):
try:
SOCK.connect((server, port))
SOCK.send(f"PASS {token_twitch}\n".encode('utf-8'))
SOCK.send(f"NICK {nickname}\n".encode('utf-8'))
SOCK.send(f"JOIN {'#'+twitch_chan}\n".encode('utf-8'))
SOCK.settimeout(0.0)
SOCK.setblocking(0)
return 1
except:
return('```Impossible de se connecter au chat IRC de Twitch.```')
return('```Cette chaine n\'existe pas. Verifiez l\'orthographe ou la syntaxe.```')
def get_msg():
try:
resp = SOCK.recv(2048).decode('utf-8')
except:
resp = ''
if resp.startswith('PING'):
sock.send("PONG\n".encode('utf-8'))
elif len(resp) > 0:
try:
username, channel, message = re.search(':(.*)\!.*@.*\.tmi\.twitch\.tv PRIVMSG #(.*) :(.*)', demojize(resp)).groups()
return f"**__{username}__ :** {message}"
except Exception:
pass
async def twitch(discord_chan):
await bot.wait_until_ready()
while bot.is_ready:
msg = get_msg()
if msg != None:
await discord_chan.send(msg)
await asyncio.sleep(1)
@bot.event @bot.event
async def on_ready(): async def on_ready():
@@ -19,19 +71,15 @@ async def rank(ctx, arg, argF=None):
try: try:
player = watcher.summoner.by_name(region, arg) player = watcher.summoner.by_name(region, arg)
ranks = rank_track(arg, player) ranks = rank_track(arg, player)
embed = discord.Embed(title = arg, url = "https://www.youtube.com/watch?v=dQw4w9WgXcQ") 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") embed.set_thumbnail(url = "http://ddragon.leagueoflegends.com/cdn/11.2.1/img/profileicon/" + str(player['profileIconId']) + ".png")
if type(ranks) is list: if type(ranks) is list:
for i in range(len(ranks)): 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' 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.add_field(name = ranks[i][0], value = text, inline = False)
else: else:
embed.description = ranks embed.description = ranks
await ctx.send(embed = embed) await ctx.send(embed = embed)
except ApiError: except ApiError:
await ctx.send("Le pseudo est inconnu.") await ctx.send("Le pseudo est inconnu.")
else: else:
@@ -48,9 +96,39 @@ async def issou(ctx):
vc = await voice_channel.connect() vc = await voice_channel.connect()
vc.play(discord.FFmpegPCMAudio('issou.mp3')) vc.play(discord.FFmpegPCMAudio('issou.mp3'))
if vc.is_playing(): if vc.is_playing():
sleep(1) await asyncio.sleep(1)
await vc.disconnect() await vc.disconnect()
else: else:
await ctx.send('Vous n\'êtes connecté à aucun salon.') await ctx.send('Vous n\'êtes connecté à aucun salon.')
@bot.command()
async def chat_set(ctx, arg1, argF=None):
global TASK
if argF is None:
if TASK is None:
test = chat_init(arg1, ctx)
if type(test) is int and test == 1:
await ctx.send(f'```Connection à la chaine {arg1} réussie !```')
TASK = bot.loop.create_task(twitch(ctx))
else:
await ctx.send(test)
else:
await ctx.send('```Désactivez le chat avec " $chat_stop " avant d\'en créer un nouveau !```')
else:
await ctx.send('```Les espaces ne sont pas tolérés. Veuillez récupérer le nom de chaine dans le lien de celle-ci, par ex "andhefallen" pour "twitch.tv/andhefallen."```')
@bot.command()
async def chat_stop(ctx):
global TASK
global SOCK
if TASK is None:
await ctx.send('```Aucun chat n\'est en cours d\'éxécution.```')
else:
TASK.cancel()
TASK = None
SOCK.shutdown(1)
SOCK.close()
SOCK = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
await ctx.send('```Le chat a été arrêté !```')
bot.run(token_bot) bot.run(token_bot)