mirror of
https://github.com/Floriansylvain/Risitas_BOT.git
synced 2026-08-19 19:53:19 +02:00
La souffrance
This commit is contained in:
@@ -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)
|
||||||
Reference in New Issue
Block a user