From e9d25d0f40ed88b1b0a8e2762851603e86c81ad5 Mon Sep 17 00:00:00 2001 From: Mylloon <29067904+Mylloon@users.noreply.github.com> Date: Mon, 3 Aug 2020 19:28:55 +0200 Subject: [PATCH] Add files via upload --- Dockerfile | 10 + cogs/meme.py | 78 ++ cogs/music.py | 434 +++++++++ cogs/nsfw.py | 59 ++ data/users.json | 3 + db.py | 20 + files/It was this folder, rip.png | Bin 0 -> 173626 bytes main.py | 1469 +++++++++++++++++++++++++++++ requirements.txt | 10 + 9 files changed, 2083 insertions(+) create mode 100644 Dockerfile create mode 100644 cogs/meme.py create mode 100644 cogs/music.py create mode 100644 cogs/nsfw.py create mode 100644 data/users.json create mode 100644 db.py create mode 100644 files/It was this folder, rip.png create mode 100644 main.py create mode 100644 requirements.txt diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a729de0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +FROM zinobe/python3-ffmpeg7.4:latest + +WORKDIR /srv/dev-disk-by-label-Disques/appdata/ravaBot + +COPY requirements.txt ./ +RUN pip install --no-cache-dir -r requirements.txt + +COPY . . + +CMD [ "python", "-u", "./main.py" ] diff --git a/cogs/meme.py b/cogs/meme.py new file mode 100644 index 0000000..249993d --- /dev/null +++ b/cogs/meme.py @@ -0,0 +1,78 @@ +import discord +from discord.ext import commands + +import praw +import random +import urllib.request as request +import os +import json +import time +import datetime + +class Meme(commands.Cog): + + def __init__(self, bot): + self.bot = bot + + def JSONEncoder(self, o): + if isinstance(o, datetime.datetime): + return o.isoformat() + + @commands.command(name='memes', aliases=['meme']) + async def memes_(self, ctx, *, args=""): + users=json.load(open('data/users.json', 'r')) + try: + dernier_message_temps = users[str(571348123855880192)]['dernier_message_XP_pics'] + dernier_message_temps = datetime.datetime.strptime(dernier_message_temps, '%Y-%m-%dT%H:%M:%S.%f') + created_at = datetime.datetime.now() + ecart = created_at-dernier_message_temps #caclul l'écart + except: + users[str(571348123855880192)] = {} + dernier_message_temps = users[str(571348123855880192)]['experience']=-1 + client = commands.Bot(command_prefix=".") + ravaBot = await client.fetch_user(571348123855880192) + dernier_message_temps = users[str(571348123855880192)]['nom_usuel']=f"{ravaBot.name}#{ravaBot.discriminator}" + ecart = datetime.timedelta(seconds=6) + if ecart.seconds >= 5: + users[str(571348123855880192)]['dernier_message_XP_pics'] = datetime.datetime.now() + json.dump(users, open('data/users.json', 'w'), default=self.JSONEncoder, indent=4, sort_keys=True) + try: + reddit = praw.Reddit(client_id='TON ID CLIENT', client_secret='TON CLIENT SECRET', user_agent='disreddit /u/xxxxxx, http://localhost:8080') + + if args == "ctsurenft": # si user demande meme 'ctsurenft' + subredditchoix = 'Meme de qualité' + image_meme = 'https://twitter.com/i/status/1181338160741191682' + return await ctx.send(f"**{subredditchoix}**: {image_meme}") #en attendant que discord fix les vidéos dans les embed + + elif args != "": # si il y a un arg différent d'un meme + subredditchoix = args + + else: # si il n'y a pas d'arguments + subredditchoix = random.choice(['memes','anime_irl','Animemes','BikiniBottomTwitter','dankmemes','DeepFriedMemes', + 'educationalmemes','funny','marvelmemes','me_irl','meme','MemeEconomy','Memes_Of_The_Dank','MinecraftMemes', + 'PewdiepieSubmissions','physicsmemes','reactiongifs','wholesomememes','blackpeopletwitter','metal_me_irl','bee_irl','coaxedintoasnafu','195', + 'shittyadviceanimals','meirl','2meirl4meirl','AdviceAnimals','weirdmemes']) + + memes_submissions = reddit.subreddit(subredditchoix).hot() + post_to_pick = random.randint(1, 10) + for i in range(0, post_to_pick): # i pas important + submission = next(x for x in memes_submissions if not x.stickied) + + image_meme = submission.url + subredditchoix = f"r/{subredditchoix}" + + embed = discord.Embed(title=f"{subredditchoix} pour {ctx.author.name}", colour=discord.Colour.green()) + embed.set_footer(text=f"Memes from reddit | Développé par des ravaG.") + embed.set_image(url=image_meme) + return await ctx.send(embed=embed) + + except Exception as error: + print(f"args: {args}, subreddit: {subredditchoix}, error: {error}") + return await ctx.send(f"Ce subreddit est interdit, mis en quarantaine ou n'existe pas. ({subredditchoix})") + else: + t = 5-ecart.seconds + await ctx.send(f"Tu dois encore attendre {t} seconde{'s' if t>1 else ''} avant de lancer cette commande.", delete_after=2) + + +def setup(bot): + bot.add_cog(Meme(bot)) diff --git a/cogs/music.py b/cogs/music.py new file mode 100644 index 0000000..3efe3bf --- /dev/null +++ b/cogs/music.py @@ -0,0 +1,434 @@ +import discord +from discord.ext import commands + +import asyncio +import itertools +import sys +import traceback +from async_timeout import timeout +from functools import partial +from youtube_dl import YoutubeDL +import lyricsgenius + +genius = lyricsgenius.Genius("TON TOKEN GENIUS") + +ytdlopts = { + 'format': 'bestaudio/best', + 'outtmpl': 'downloads/%(extractor)s-%(id)s-%(title)s.%(ext)s', + 'restrictfilenames': True, + 'noplaylist': True, + 'nocheckcertificate': True, + 'ignoreerrors': False, + 'logtostderr': False, + 'quiet': True, + 'no_warnings': True, + 'default_search': 'auto', + 'source_address': '0.0.0.0' # Les adresses ipv6 posent parfois des problèmes +} + +ffmpegopts = { + 'before_options': '-nostdin', + 'options': '-vn' +} + +ytdl = YoutubeDL(ytdlopts) + +class VoiceConnectionError(commands.CommandError): + """Classe d'exception personnalisée pour les erreurs de connexion.""" + + +class InvalidVoiceChannel(VoiceConnectionError): + """Exception pour les cas de canaux vocaux non valables.""" + + +class YTDLSource(discord.PCMVolumeTransformer): + + def __init__(self, source, *, data, requester): + super().__init__(source) + self.requester = requester + + self.title = data.get('title') + self.web_url = data.get('webpage_url') + + # YTDL info dicts (data) ont d'autres informations utiles que vous pourriez vouloir + # https://github.com/rg3/youtube-dl/blob/master/README.md + + def __getitem__(self, item: str): + """Nous permet d'accéder à des attributs similaires à un dict. + Cette fonction n'est utile que lorsque vous n'êtes pas en train de télécharger. + """ + return self.__getattribute__(item) + + @classmethod + async def create_source(cls, ctx, search: str, *, loop, download=True): + loop = loop or asyncio.get_event_loop() + + to_run = partial(ytdl.extract_info, url=search, download=download) + data = await loop.run_in_executor(None, to_run) + + if 'entries' in data: + # prendre le premier élément d'une liste de lecture + data = data['entries'][0] + + await ctx.send(f'```ini\n[{data["title"]} ajouté à la queue.]\n```') + + if download: + source = ytdl.prepare_filename(data) + else: + return {'webpage_url': data['webpage_url'], 'requester': ctx.author, 'title': data['title']} + + return cls(discord.FFmpegPCMAudio(source), data=data, requester=ctx.author) + + @classmethod + async def regather_stream(cls, data, *, loop): + """Utilisé pour préparer un flux, au lieu de le télécharger. + Depuis l'expiration des liens de streaming Youtube.""" + loop = loop or asyncio.get_event_loop() + requester = data['requester'] + + to_run = partial(ytdl.extract_info, url=data['webpage_url'], download=True) + data = await loop.run_in_executor(None, to_run) + + return cls(discord.FFmpegPCMAudio(data['url']), data=data, requester=requester) + +class MusicPlayer: + """Une classe qui est attribuée à chaque guilde à l'aide du bot pour la musique. + Cette classe met en place une file d'attente et une boucle, ce qui permet aux différentes guildes d'écouter différentes listes de lecture + simultanément. + Lorsque le bot se déconnecte de la Voix, son instance est détruite. + """ + + __slots__ = ('bot', '_guild', '_channel', '_cog', 'queue', 'next', 'current', 'np', 'volume') + + def __init__(self, ctx): + self.bot = ctx.bot + self._guild = ctx.guild + self._channel = ctx.channel + self._cog = ctx.cog + + self.queue = asyncio.Queue() + self.next = asyncio.Event() + + self.np = None # Message en cours de lecture + self.volume = .4 # Volume défini initalement (.5 = 50%) + self.current = None + + ctx.bot.loop.create_task(self.player_loop()) + + async def player_loop(self): + """Player loop principale""" + await self.bot.wait_until_ready() + + while not self.bot.is_closed(): + self.next.clear() + + try: + # Attendez la prochaine chanson. Si nous annulons le lecteur et le déconnecter... + async with timeout(300): # 5 minutes... + source = await self.queue.get() + except asyncio.TimeoutError: + return self.destroy(self._guild) + + if not isinstance(source, YTDLSource): + # La source était probablement un flux (non téléchargé) + # Nous devrions donc nous regather pour éviter l'expiration des flux + try: + source = await YTDLSource.regather_stream(source, loop=self.bot.loop) + except Exception as e: + await self._channel.send(f'Il y a eu une erreur dans le traitement de votre chanson.\n' + f'```css\n[{e}]\n```') + continue + + source.volume = self.volume + self.current = source + + self._guild.voice_client.play(source, after=lambda _: self.bot.loop.call_soon_threadsafe(self.next.set)) + self.np = await self._channel.send(f'**Joue :** `{source.title}` demandé par ' + f'`{source.requester}`') + await self.next.wait() + + # Veillez à ce que le processus FFmpeg soit clean. + source.cleanup() + self.current = None + + try: + # Nous ne jouons plus cette chanson... + await self.np.delete() + except discord.HTTPException: + pass + + def destroy(self, guild): + """Déconnecte et nettoie le lecteur.""" + return self.bot.loop.create_task(self._cog.cleanup(guild)) + + +class Music(commands.Cog): + """Commandes liées à la musique.""" + + __slots__ = ('bot', 'players') + + def __init__(self, bot): + self.bot = bot + self.players = {} + + async def cleanup(self, guild): + try: + await guild.voice_client.disconnect() + except AttributeError: + pass + + try: + del self.players[guild.id] + except KeyError: + pass + + async def __local_check(self, ctx): + """Un contrôle local qui s'applique à tous les commandements de ce cog.""" + if not ctx.guild: + raise commands.NoPrivateMessage + return True + + async def __error(self, ctx, error): + """Un gestionnaire d'erreur local pour toutes les erreurs découlant des commandes de ce rouage.""" + if isinstance(error, commands.NoPrivateMessage): + try: + return await ctx.send('Cette commande ne peut pas être utilisée dans les messages privés.') + except discord.HTTPException: + pass + elif isinstance(error, InvalidVoiceChannel): + await ctx.send('Erreur de connexion au canal vocal. ' + 'Veuillez vous assurer que vous êtes dans un channel valide ou alors en spécifier un.') + + print('Ignorer l''exception dans la commannde {}:'.format(ctx.command), file=sys.stderr) + traceback.print_exception(type(error), error, error.__traceback__, file=sys.stderr) + + def get_player(self, ctx): + """Récupérer le joueur du serveur, ou en générer un.""" + try: + player = self.players[ctx.guild.id] + except KeyError: + player = MusicPlayer(ctx) + self.players[ctx.guild.id] = player + + return player + + @commands.command(name='connect', aliases=['join']) + async def connect_(self, ctx, *, channel: discord.VoiceChannel=None): + """Se connecte au vocal. + Paramètres + ------------ + channel: discord.VoiceChannel [Optionnel] + Le channel auquel il faut se connecter. Si un channel n'est pas spécifié, une tentative de rejoindre le canal vocal dans lequel vous êtes + sera faite. + Cette commande gère également le déplacement du bot vers différents channel. + """ + if not channel: + try: + channel = ctx.author.voice.channel + except AttributeError: + return await ctx.send('Pas de channel à rejoindre. Veuillez soit spécifier un channel valide, soit en rejoindre un.') + + vc = ctx.voice_client + + if vc: + if vc.channel.id == channel.id: + return + try: + await vc.move_to(channel) + except asyncio.TimeoutError: + return await ctx.send(f'Move vers le channel : <{channel}> a expiré.') + else: + try: + await channel.connect() + except asyncio.TimeoutError: + return await ctx.send(f'Connexion au channel : <{channel}> a expiré.') + + await ctx.send(f'Connexion à : **{channel}**') + + @commands.command(name='play', aliases=['p']) + async def play_(self, ctx, *, search: str): + """Demandez une chanson et ajoutez-la à la liste d'attente. + Cette commande tente de rejoindre un canal vocal valide si le bot n'en fait pas déjà partie. + Utilise YTDL pour rechercher et récupérer automatiquement une chanson. + Paramètres + ------------ + search: str [Required] + La chanson à rechercher et à récupérer en utilisant YTDL. Il peut s'agir d'une simple recherche, d'une ID ou d'une URL. + """ + await ctx.trigger_typing() + + vc = ctx.voice_client + + if not vc: + await ctx.invoke(self.connect_) + + player = self.get_player(ctx) + + # Si le téléchargement est sur False, la source sera un dict qui sera utilisé plus tard pour reconstituer le flux. + # Si le téléchargement est sur True, la source sera un discord.FFmpegPCMAudio avec un VolumeTransformer. + source = await YTDLSource.create_source(ctx, search, loop=self.bot.loop, download=True) + + await player.queue.put(source) + + @commands.command(name='pause') + async def pause_(self, ctx): + """Met en pause la chanson en cours de lecture.""" + vc = ctx.voice_client + + if not vc or not vc.is_playing(): + return await ctx.send('Je ne joue rien en ce moment !') + elif vc.is_paused(): + return + + vc.pause() + await ctx.send(f'**`{ctx.author}`**: Pause de la chanson !') + + @commands.command(name='resume') + async def resume_(self, ctx): + """Reprend la chanson actuellement en pause.""" + vc = ctx.voice_client + + if not vc or not vc.is_connected(): + return await ctx.send('Je ne joue rien en ce moment !') + elif not vc.is_paused(): + return + + vc.resume() + await ctx.send(f'**`{ctx.author}`**: Reprenez la chanson !') + + @commands.command(name='skip', aliases=['s']) + async def skip_(self, ctx): + """Skip la chanson.""" + vc = ctx.voice_client + + if not vc or not vc.is_connected(): + return await ctx.send('Je ne joue rien en ce moment !') + + if vc.is_paused(): + pass + elif not vc.is_playing(): + return + + vc.stop() + await ctx.send(f'**`{ctx.author}`**: Skip la chanson !') + + @commands.command(name='queue', aliases=['q']) + async def queue_info(self, ctx): + """Affiche la playlist de musiques à venir.""" + vc = ctx.voice_client + + if not vc or not vc.is_connected(): + return await ctx.send('Je ne suis pas connecté au channel vocal actuellement !') + + player = self.get_player(ctx) + if player.queue.empty(): + return await ctx.send('Il n''y a actuellement plus de chansons en attente.') + + # Saisissez jusqu'à 5 entrées dans la file d'attente... + upcoming = list(itertools.islice(player.queue._queue, 0, 5)) + + fmt = '\n'.join(f'**`{_["title"]}`**' for _ in upcoming) + embed = discord.Embed(title=f"Prochainement - {len(upcoming)} restant{'s' if len(upcoming)>1 else ''}", description=fmt) + + await ctx.send(embed=embed) + + @commands.command(name='now_playing', aliases=['np']) + async def now_playing_(self, ctx): + """Affiche des informations sur la chanson en cours de lecture.""" + vc = ctx.voice_client + + if not vc or not vc.is_connected(): + return await ctx.send('Je ne suis pas connecté au channel vocal actuellement !') + + player = self.get_player(ctx) + if not player.current: + return await ctx.send('Je ne joue rien en ce moment !') + + try: + # Supprimez notre message "now_playing" précédent. + await player.np.delete() + except discord.HTTPException: + pass + + player.np = await ctx.send(f'**Joue :** `{vc.source.title}` ' + f'demandé par `{vc.source.requester}`') + + @commands.command(name='volume', aliases=['vol']) + async def change_volume(self, ctx, *, vol: float): + """Changez le volume du lecteur. + Paramètres + ------------ + volume: float or int [Required] + Le volume à régler en pourcentage du lecteur. Celui-ci doit être compris entre 1 et 100. + """ + vc = ctx.voice_client + + if not vc or not vc.is_connected(): + return await ctx.send('Je ne suis pas connecté au channel vocal actuellement !') + + if not 0 < vol < 101: + return await ctx.send('Veuillez saisir une valeur comprise entre 1 et 100.') + + player = self.get_player(ctx) + + if vc.source: + vc.source.volume = vol / 100 + + player.volume = vol / 100 + await ctx.send(f'**`{ctx.author}`**: Volume réglé sur **{vol}%**') + + @commands.command(name='disconnect', aliases=['dc','stop']) + async def disconnect_(self, ctx): + """Arrêtez la chanson en cours de lecture et détruisez le lecteur. + !Avertissement! + Cela détruira le joueur affecté au serveur, en supprimant également les chansons et les paramètres en attente (c'est généralement ce qu'on veut faire). + """ + vc = ctx.voice_client + + if not vc or not vc.is_connected(): + return await ctx.send('Je ne joue rien en ce moment !') + + await self.cleanup(ctx.guild) + await ctx.send(f'Déconnexion.') + + @commands.command(name='lyrics', aliases=['l', 'lyric']) #caractere vide: \u200b + async def lyrics_(self, ctx, *, song: str=None): + vc=ctx.voice_client + player=self.get_player(ctx) + if song or player.current: + if not song: + song=f"{vc.source.title}" + await ctx.send(f":mag: Cherche les paroles pour `{song}`") + song=genius.search_song(song) + couleur_embed=0xD3D3D3 + try: + paroles=str(song.lyrics) + except: + return await ctx.send(f"Pas de résultats trouvés pour : `{vc.source.title}`") + lignetotal="" + premierembed=True + if len(paroles)>7500: + return await ctx.send("Désolé, les paroles sont trop longues pour être affichés.") + for ligne in paroles.split("\n"): + if len(f"{lignetotal}\n{ligne}")<1024: + lignetotal=f"{lignetotal}\n{ligne}" + else: + if premierembed==True: + premierembed=False + embed=discord.Embed(title=f'Paroles de {(str(song).split(":"))[0].replace("by", "par")}.', description=lignetotal, color=couleur_embed) + else: + embed=discord.Embed(description=lignetotal, color=couleur_embed) + await ctx.send(embed=embed) + lignetotal=f"{ligne}" + if premierembed==True: + premierembed=False + embed=discord.Embed(description=lignetotal, color=couleur_embed) + else: + embed=discord.Embed(description=lignetotal, color=couleur_embed) + embed.set_footer(icon_url=ctx.author.avatar_url,text=f"Demandé par {ctx.author} | Lyrics de RapGenius") + return await ctx.send(embed=embed) + else: + await ctx.send("Aucune musique demandé... `.lyrics `") + +def setup(bot): + bot.add_cog(Music(bot)) diff --git a/cogs/nsfw.py b/cogs/nsfw.py new file mode 100644 index 0000000..76ba389 --- /dev/null +++ b/cogs/nsfw.py @@ -0,0 +1,59 @@ +import discord +from discord.ext import commands + +import random +import requests +import xml.etree.ElementTree as ET + +from bs4 import BeautifulSoup +from googleapiclient.discovery import build + +class Nsfw(commands.Cog): + + # Init + + def __init__(self, bot): + self.bot = bot + self.players = {} + + # Research + + def _get_lewd_image(self, what): + api_url = f"http://api.o{what}.ru/noise/" + + r = requests.get(api_url) + response = r.json() + preview = response[0]['preview'] + r.close() + + image_url = f"http://media.o{what}.ru/{preview}" + return image_url + + # Commands + + @commands.command(aliases=['sexes','nude','nudes']) + async def sexe(self, ctx, *, choice_of_nsfw=None): + liste_hot=['butts', 'boobs'] + if choice_of_nsfw in liste_hot: + pass + else: + choice_of_nsfw = random.choice(liste_hot) + if ctx.channel.is_nsfw(): + lewd_image = self._get_lewd_image(choice_of_nsfw) + #await ctx.send(lewd_image) + embed=discord.Embed(title=f"{choice_of_nsfw.capitalize()} pour {ctx.author.name}", colour=discord.Colour.purple()) + embed.set_footer(text=f"Développé par des ravaG.") + embed.set_image(url=lewd_image) + await ctx.send(embed=embed) + else: + nsfw_channel = self.bot.get_channel(594713819167588387) + await ctx.send(f"Désolé mais je n'envois ce genre de message seulement dans {nsfw_channel.mention} !", delete_after=2) + + # En cas d'erreur + + @sexe.error + async def sexe_error(self, ctx, error): + await ctx.send("Une erreur est survenu lors du traitement de votre commande, veuillez réessayez !", delete_after=2) + +def setup(bot): + bot.add_cog(Nsfw(bot)) diff --git a/data/users.json b/data/users.json new file mode 100644 index 0000000..24aaa94 --- /dev/null +++ b/data/users.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/db.py b/db.py new file mode 100644 index 0000000..d7500ec --- /dev/null +++ b/db.py @@ -0,0 +1,20 @@ +import psycopg2 + +conn_DB=psycopg2.connect("dbname='NOM DE TA BASE DE DONNEE' user='PSEUDO DE TA BASE DE DONNEE' host='IP DE TA BASE DE DONNEE' password='MOT DE PASSE DE TA BASE DE DONNEE'") + +cur = conn_DB.cursor() + +cur.execute("""SELECT id_user, nom_usuel, dernier_message_XP, experience, dernier_message_meme, position FROM users""") + +rows = cur.fetchall() + +for row in rows: + print("ID = {} ".format(row[0])) + print("NOM USUEL = {}".format(row[1])) + print("DERNIER MESSAGE XP = {}".format(row[2])) + print("XP = {}".format(row[3])) + print("DERNIER MESSAGE MEME = {}".format(row[4])) + print("POSITION = {}".format(row[5])) + print("\n") + +#input("Press enter for quit...") \ No newline at end of file diff --git a/files/It was this folder, rip.png b/files/It was this folder, rip.png new file mode 100644 index 0000000000000000000000000000000000000000..1daef5144b6b38901c685e9b59d47642eb8438fa GIT binary patch literal 173626 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

ud$&(5#S&$`Mfo)eY)P|%7m?8;=pfWyzwWYd4 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

NAy& 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

H16 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

s1M+RC9Fm{(H1T5~m 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 G1^qvhI*Y{s literal 0 HcmV?d00001 diff --git a/main.py b/main.py new file mode 100644 index 0000000..4b42638 --- /dev/null +++ b/main.py @@ -0,0 +1,1469 @@ +print("Chargement des fichiers requis...\n") + +import discord +from discord.ext import tasks, commands +from random import randint, choice +import time +from time import sleep +import asyncio +import random +import datetime +import json +import os +import psycopg2 +import re +import pickle + +def set_variables(bot_=False, insulte_=False, mrs_=False, minigame_=False, starttime_=False): + global client, token, CTX_RELOAD, cycle_RICHPRESENCE, have_rainbow, conn_DB + global insulte_random + global message_recently_deleted_msg, message_recently_deleted_aut + global plusoumoins_enjeu + global starttime + if bot_==True: + client = commands.Bot(command_prefix=".") + token = "RENTRE TON TOKEN ICI" + + CTX_RELOAD=0 + cycle_RICHPRESENCE=False + have_rainbow=False + print("Connexion à la base de donnée...") + try: + conn_DB=psycopg2.connect("dbname='NOM DE TA BASE DE DONNEE' user='PSEUDO DE TA BASE DE DONNEE' host='IP DE TA BASE DE DONNEE' password='MOT DE PASSE DE TA BASE DE DONNEE'") + print("Connexion a la base de donnée effectué.\n") + except Exception as e: + print("Impossible de se connecter a la base de donnée. Erreur:", e) + + if insulte_==True: + insulte_random=False + + if mrs_==True: + message_recently_deleted_msg=[] + message_recently_deleted_aut=[] + + if minigame_==True: + plusoumoins_enjeu=False + + if starttime_==True: + starttime=datetime.datetime.now() + +set_variables(True, True, True, True, True) + +def JSONEncoder(o): + if isinstance(o, datetime.datetime): + return o.isoformat() + +# Base de donnée ----- pour voir le tableau sql : SELECT * FROM users; + +def update_db(arg=None): + cur=conn_DB.cursor() + if arg==None: #au lancement du bot, soit actualise la base de donnée au premier lancement, soit actualise le fichier users.json + try: + conn_DB.set_isolation_level(0) + cur.execute("""CREATE TABLE users ( + id_user TEXT NOT NULL, + dernier_message_XP_pics TEXT, + experience INTEGER NOT NULL + )""") + print("Aucune table dans la base de donnée, création...") + print("Table dans la base de donnée créée.") + try: + update_db("update") + print("Actualisation de la base de donnée par rapport au fichier users.json effectué.\n") + except: + print("Echec lors de l'actualisation de la base de donnée par rapport au fichier users.json.\n") + except Exception as e: + if 'relation "users" already exists' in str(e): + print("La table dans la base de donnée est déjà créée.\n") + try: + update_db("actualisation_usersJSON") + print("Actualisation du fichiers users.json par rapport à la base de donnée effectué.\n") + print("Connexion aux serveurs de Discord...") + except: + print("Echec lors de l'actualisation du fichiers users.json par rapport à la base de donnée.\n") + else: + print("Je ne peux pas préparer la base de données ! Erreur :", e, "\n") + elif arg=="update": # actualise la base de donnée + users=json.load(open('data/users.json', 'r')) + cur.execute("""SELECT * FROM users""") + rows = cur.fetchall() + utlisateurs_in_db=[] + for row in rows: + utlisateurs_in_db.append(row[0]) + try: + for key, value in users.items(): #value obligatoire + if key in utlisateurs_in_db: + cur.execute(f""" + UPDATE users + SET dernier_message_XP_pics = '{users[key]['dernier_message_XP_pics']}' + , experience = {users[key]['experience']} + WHERE id_user = '{key}' + ; + """) + else: + cur.execute(f""" + INSERT INTO users ( + id_user + , dernier_message_XP_pics + , experience + ) + VALUES ( + '{key}' + , '{users[key]['dernier_message_XP_pics']}' + , {users[key]['experience']} + ); + """) + except Exception as e: + print("Update de la base de donnée impossible. Erreur :", e, "\n") + elif arg=="actualisation_usersJSON": # actualise le fichiers users.json en fonction de la base de donnée + users=open("data/users.json","w") + users.write("{\n") + users.write(" \n") + users.write("}") + users.close() + cur.execute("""SELECT * FROM users;""") + rows = cur.fetchall() + users=json.load(open('data/users.json', 'r')) + for row in rows: + users[str(row[0])]={} + if row[1]!=None: + users[str(row[0])]['dernier_message_XP_pics']=str(row[1]) + if row[2]!=None: + users[str(row[0])]['experience']=row[2] + json.dump(users, open('data/users.json', 'w'), default=JSONEncoder, indent=4, sort_keys=True) + +update_db() #création de la base de donnée ou update du fichiers users.json + +# Tasks + +@tasks.loop(seconds=60.0) +async def updater(): + update_db("update") + +@updater.before_loop +async def before_updater(): + await client.wait_until_ready() + +updater.start() + +@client.event +async def on_connect(): + temps_latence_lancement=int(time.strftime("%S"))-temps_lantence_avant + print(f"Client connecté à Discord (en {temps_latence_lancement} seconde{'s' if temps_latence_lancement>=2 else ''}).\n") + +@client.event +async def on_resume(): + print("Le client est de nouveau connecté.") + +@client.event +async def on_ready(): + global CTX_RELOAD + await client.change_presence(status=discord.Status.idle, activity=discord.Activity(name="le bon rhum de Binks", type=discord.ActivityType.listening)) + H=int(time.strftime("%H"))+1 + print("Bot prêt. Le",time.strftime(f"%d/%m/%Y à {H}:%M:%S"),"!") + if CTX_RELOAD!=0: + await CTX_RELOAD.send("** **\nJe suis de retour !") + CTX_RELOAD=0 + +@client.event +async def on_member_join(member): + if member.bot==True: + role=discord.utils.get(member.guild.roles, name="🤖 Bot") + else: + role=discord.utils.get(member.guild.roles, name="👤 Invité") + await member.add_roles(role) + try: + await member.send(f"Bienvenue à toi **{member.name}** sur le serveur {member.guild.name} !\n\nTu as obtenu le rôle **{role}** !") + except: + pass + if member.guild.id==634051485218373636: #ravag + channel=client.get_channel(634052995771924480) #Salon #général + await channel.send(f"Another **fag** joined the chat ({member.mention})", file=discord.File("files/welcome.mp4")) + +@client.event +async def on_member_remove(member): + channel=client.get_channel(634087376687333377) #Salon #notif-arrivé-départ + await channel.send(f"➡️ **{member.mention}** a quitté le serveur.") + +@client.event +async def on_message(message): + await client.process_commands(message) + messchan=str(message.channel) + if messchan.startswith("Direct Message with"): # envoi du message en dm + messcont=str(message.content) + if "désolé mais je ne communique pas en message privé. N'hésites pas a me rejoindre sur le serveur des ravaG !" not in messcont: + if "-- SUGGESTION DE" not in messcont: + if "Bienvenue à toi" not in messcont: + if "-- NOTE --" not in messcont: + if message.author.bot==False: + await message.channel.send(f"Bonjour {message.author.name}, désolé mais je ne communique pas en message privé. N'hésites pas a me rejoindre sur le serveur des ravaG !\nVoici le lien d'invitation : https://discord.gg/ZZC557c") + if messchan.startswith("Direct Message with"): + return + if message.author==client.user: + return + if randint(1,10)<=3 and message.content.startswith(".")!=True and insulte_random==True and message.content.startswith("!")!=True: + + auteur=(message.author.name).replace("[ravaG] ", "") + INSULTES=[f"Ta gueule {auteur}", "Ca t'arrives de te taire ?", "Cause toujours tu m'intéresses...", "Mais t'es con ?", "Bah nique ta mère alors", "Mange tes morts", "Deterre tes morts", + "Au pire mange moi le poirot ?", "Nan sérieux tu fais pitié là stp j'vais t'mute x)))", "k", "Enfant de gang bang, va.", f'"*{message.content}*" Tu fais pitié sérieux...', "J'vais te bukkake tes morts", + "Sustente toi de tes défunts", "DEMARRE_TA_MERE", "Je t'ai jamais aimé t'façon"] + insult=random.choice(INSULTES) + if insult=="DEMARRE_TA_MERE": + await message.channel.send("Tiens c'est pour démarrer ta mère", file=discord.File("files/car_key.png")) + else: + await message.channel.send(f"{insult}") + if message.author.bot!=True: + if message.content.startswith(".")!=True and message.content.startswith("!")!=True: + users=json.load(open('data/users.json', 'r')) + try: + XP_User=users[str(message.author.id)]['experience'] + dernier_message_temps=users[str(message.author.id)]['dernier_message_XP_pics'] + dernier_message_temps=datetime.datetime.strptime(dernier_message_temps, '%Y-%m-%dT%H:%M:%S.%f') + ecart=message.created_at-dernier_message_temps #caclul l'écart + except: + users[str(message.author.id)]={} + XP_User=0 + ecart=datetime.timedelta(seconds=16) #au premier message, lecart est suffisant pour que l'user gagne de l'xp + if ecart.seconds>=15: + XP_User+=randint(3,13) + users[str(message.author.id)]['experience']=XP_User + users[str(message.author.id)]['dernier_message_XP_pics']=message.created_at + json.dump(users, open('data/users.json', 'w'), default=JSONEncoder, indent=4, sort_keys=True) + +@client.event +async def on_message_delete(message): + if not message.author==client.user: + if not message.content.startswith(".suggestion"): + listechannel(message) + if message.channel.id in LchannelID: + if len(message.content)<1 or len(message.author.name)<1: + return + if len(message_recently_deleted_msg)>=3: + del message_recently_deleted_msg[0] + if len(message_recently_deleted_aut)>=3: + del message_recently_deleted_aut[0] + message_recently_deleted_msg.append(message.content) + message_recently_deleted_aut.append(message.author) + +@client.event +async def on_command_error(ctx, error): + print(error) + if isinstance(error, commands.MissingRequiredArgument): + await ctx.send(f"La commande nécessite un ou plusieurs argument, `.help` pour plus d'informations.") + if isinstance(error, commands.CommandNotFound): + commande=str(error).replace('Command "',"").replace('" is not found','') + if commande=="stop": + suggestion=f"Tu peux essayé la commande `.eteindre`." + elif commande=="suggestions": + suggestion=f"Tu peux essayé la commande `.suggestion`." + elif commande=="aide": + suggestion=f"Tu peux essayé la commande `.help`." + elif commande=="calculer" or commande=="calcul" or commande=="calcule": + suggestion=f"Tu peux essayé la commande `.calc`." + elif commande=="jvousnike" or commande=="jvounike" or commande=="jvounik" : + suggestion=f"Tu peux essayé la commande `.jvousnik`." + else: + suggestion="" + if commande.startswith(".")!=True: + await ctx.send(f"La commande *.{commande}* n'existe pas ! {suggestion}", delete_after=3) + if len(str(error))>2000: + await ctx.send(f"**Conflit avec Discord, veuillez réessayer plus tard.**") + +@client.command() +async def ping(ctx): + await ctx.send(f"Pong! ({round(client.latency * 1000)}ms)") + +@client.command(aliases=['8ball','8b']) +async def _8ball(ctx, *, question): + reponses=["C'est sûr.","Il en est décidément ainsi.","Incontestablement.","Oui, sans aucun doute.","Vous pouvez vous y fier.","Tel que je le vois, oui.","C'est le plus probable.", + "Cela montre de bonnes perspectives","Certes.","Les signes indiquent que oui.","Ma réponse est oui.","Ta question est trop floue, réessaie.","Redemandes plus tard.", + "Je ferais mieux de pas te le dire maintenant.","Je ne peux pas le prédire actuellement.","Concentrez-vous et redemandez.","N'y comptes pas trop.","Ma réponse est non.","Mes sources disent non.", + "Les perspectives ne sont pas si bonnes.","C'est très douteux.","hmm..","Menteur."] + await ctx.send(f"`{random.choice(reponses)}`") + +@client.command() +async def eteindre(ctx): + global cycle_RICHPRESENCE + listeadminBot(ctx) + if ctx.author in LadminBot: + await ctx.send("C'est donc ainsi... bye-bye ! :sleeping:") + cycle_RICHPRESENCE=False + await client.change_presence(status=discord.Status.dnd, activity=discord.Activity(name="s'éteindre...", type=discord.ActivityType.playing)) + print("Déconnexion dans 5 secondes...") + await asyncio.sleep(5) + print("Déconnexion effectué le",time.strftime("%d/%m/%Y à %H:%M:%S"),f"par @{ctx.author} !") + await client.close() + else: + await ctx.send("Tu ne peux pas m'éteindre aussi facilement :stuck_out_tongue_closed_eyes: !!") + +@client.command() +async def ir(ctx): + global insulte_random + listeadminBot(ctx) + if ctx.author in LadminBot: + if insulte_random==False: + insulte_random=True + else: + insulte_random=False + await ctx.send(f"La réponse random est maintenant {str(insulte_random).replace('True', 'activé').replace('False', 'désactivé')}.") + else: + await ctx.send("Tu ne peux pas faire ça.") + +@client.command() +async def ppc(ctx, *, choix): + ordi=randint(1,3) #1: pierre, 2: papier, 3: ciseaux + if ordi==1: + ordi="pierre" + elif ordi==2: + ordi="papier" + elif ordi==3: + ordi="ciseaux" + if choix=="pierre" or choix=="Pierre": + if ordi=="pierre": + await ctx.send(f"J'ai fait {ordi}, égalité !") + elif ordi=="papier": + await ctx.send(f"J'ai fait {ordi}, tu as perdu !") + elif ordi=="ciseaux": + await ctx.send(f"J'ai fait {ordi}, tu as gagné !") + elif choix=="papier" or choix=="Papier": + if ordi=="pierre": + await ctx.send(f"J'ai fait {ordi}, tu as gagné !") + elif ordi=="papier": + await ctx.send(f"J'ai fait {ordi}, égalité !") + elif ordi=="ciseaux": + await ctx.send(f"J'ai fait {ordi}, tu as perdu !") + elif choix=="ciseaux" or choix=="Ciseaux": + if ordi=="pierre": + await ctx.send(f"J'ai fait {ordi}, tu as perdu !") + elif ordi=="papier": + await ctx.send(f"J'ai fait {ordi}, tu as gagné !") + elif ordi=="ciseaux": + await ctx.send(f"J'ai fait {ordi}, égalité !") + else: + await ctx.send("Respecte les choix : Pierre, papier, ou ciseaux ?") + +@client.command(aliases=['suggest']) +async def suggestion(ctx, *, suggest): + if len(suggest)<=10: + await ctx.send("Ta suggestion doit au moins faire 10 caractères.") + else: + await ctx.channel.purge(limit=1) + await ctx.send(f"Merci pour ta suggestion {ctx.author.name} !", delete_after=2) + listeadminBot(ctx) + n=len(LadminBot) + while n!=0: + adminUser=client.get_user(LadminBot[n-1].id) + await adminUser.send(f"** -- SUGGESTION DE {ctx.author.mention} ({ctx.author.name}) --**\n\n `{suggest}`") + n-=1 + +client.remove_command("help") +@client.command(aliases=['aide']) +async def help(ctx, *, page="1"): + ravaBot=client.get_user(571348123855880192) + if page=="music" or page=="xp": + embed=discord.Embed(title=f"Commandes de {ravaBot.name} - page {page} (certaines commandes peuvent être réservés au staff)", colour=discord.Colour.green()) + embed.set_footer(text=f"Développé par des ravaG. - .help [page/music/xp] ({page})") + if page=="music": #10 + embed.add_field(name=".connect [id du channel]", value="Se connecte au salon vocal.", inline=False) + embed.add_field(name=".play ", value="Recherche une chanson sur Youtube et l'ajoute à la file d'attente.", inline=False) + embed.add_field(name=".pause", value="Mets en pause de la chanson en cours de lecture.", inline=False) + embed.add_field(name=".resume", value="Reprends la chanson en pause.", inline=False) + embed.add_field(name=".skip", value="Passe la chanson.", inline=False) + embed.add_field(name=".queue", value="Affiche la file d'attente des chansons à venir.", inline=False) + embed.add_field(name=".now_playing", value="Affiche des informations sur la chanson en cours de lecture.", inline=False) + embed.add_field(name=".volume ", value=f"Modifiez le volume de <@{ravaBot.id}> (entre 1 et 100).", inline=False) + embed.add_field(name=".disconnect", value="Arrête la chanson en cours de lecture et quitte le salon vocal.", inline=False) + embed.add_field(name=".lyrics [song]", value="Affiche les paroles d'une chanson.", inline=False) + if page=="xp": #5 + embed.add_field(name=".xp leaderboard", value="Affiche le top 5 du serveur.", inline=False) + embed.add_field(name=".xp info", value="Affiche les infos relatives à l'xp.", inline=False) + embed.add_field(name=".xp clear", value="Supprime l'XP d'un utilisateur.", inline=False) + embed.add_field(name=".xp backup", value="Envoie une backup en .json des levels des utilisateurs.", inline=False) + embed.add_field(name=".xp give", value="Permet d'ajouter (ou de retirer si valeur négative) de l'xp à un utilisateur.", inline=False) + await ctx.send(embed=embed) + else: + try: + page=int(page) + except: + page=1 + pagetot=5 + embed=discord.Embed(title=f"Commandes de {ravaBot.name} - page {page}/{pagetot}", colour=discord.Colour.green()) + embed.set_footer(text=f"Développé par des ravaG. - .help [page/music/xp] ({page}/{pagetot})") + if page==1: #10/10 + embed.add_field(name=".help [page=1/music/xp]", value="Affiche le menu d'aide des commandes.", inline=False) + embed.add_field(name=".avatar [user]", value="Affiche ton avatar ou celui que tu mentionnes.", inline=False) + embed.add_field(name=".kiss", value="Fait un bisou à un inconnu.", inline=False) + embed.add_field(name=".deglingue", value="Tu déglingues un inconnu (ou pas).", inline=False) + embed.add_field(name=".suggestion ", value="Pour proposé une fonctionnalité.", inline=False) + embed.add_field(name=".ppc ", value=f"Un simple Chifumi contre <@{ravaBot.id}>.", inline=False) + embed.add_field(name=".ping", value="Pong!", inline=False) + embed.add_field(name=".iq", value="Calcule ton IQ.", inline=False) + embed.add_field(name=".chatclear", value="Clear le canal de discussion.", inline=False) + embed.add_field(name=".eteindre", value=f"Éteint <@{ravaBot.id}>.", inline=False) + elif page==2: #10/10 + embed.add_field(name=".8ball ", value="Répond a ta question.", inline=False) + embed.add_field(name=".trueid ", value="Renvois à l'utilisateur correspondant.", inline=False) + embed.add_field(name=".calc ", value="Calcule une expression.", inline=False) + embed.add_field(name=".mrs", value="Affiche les messages récemment supprimés.", inline=False) + embed.add_field(name=".reload", value=f"Redémarre <@{ravaBot.id}>.", inline=False) + embed.add_field(name=".ir", value="Active ou désactive la réponse automatique.", inline=False) + embed.add_field(name=".jvousnik", value="J'VOUS NIQUE !", inline=False) + embed.add_field(name=".plusoumoins", value="Un plus ou moins entre 1 et 100.", inline=False) + embed.add_field(name=".vidage", value="Supprime touts tes messages (uniquement dans le salon <#634059175004995587>).", inline=False) + embed.add_field(name=".delchat ", value="Supprime le nombre de messages voulus.", inline=False) + elif page==3: #10/10 + embed.add_field(name=".crp", value="Active ou désactive le rich presence dynamique.", inline=False) + embed.add_field(name=".rainbow", value="Ton pseudo change de toute les couleurs.", inline=False) + embed.add_field(name=".rire", value="Ahahaha.", inline=False) + embed.add_field(name=".memes", value=f"Envois un meme de reddit.", inline=False) + embed.add_field(name=".nickrandom", value="Change le surnom d'un utilisateur du salon courant.", inline=False) + embed.add_field(name=".screenshare [id du channel]", value="Renvois le lien pour faire un partage d'écran.", inline=False) + embed.add_field(name=".baccalaureat", value="Affiche la probabilité que t'es ton bac.", inline=False) + embed.add_field(name=".invitation", value="Renvois un lien d'invitation vers le serveur.", inline=False) + embed.add_field(name=".note ", value="T'envois un message avec ta note.", inline=False) + embed.add_field(name=".troll", value="Affiche une image troll.", inline=False) + elif page==4: #10/10 + embed.add_field(name=".how_many", value="Affiche le nombre d'utilisateurs sur le serveur.", inline=False) + embed.add_field(name=".syntax", value="Informations pour bien éditer son texte.", inline=False) + embed.add_field(name=".sexe [butts/boobs]", value="Envois une image coquine. **(NSFW)**", inline=False) + embed.add_field(name=".love [user2]", value="Découvre la probabilité que ces deux personnes se mettent en couple.", inline=False) + embed.add_field(name=".delete", value='Envois une vidéo "Repost", alternative : `.repost`.', inline=False) + embed.add_field(name=".nulle", value="Informe que le contenu précédent est nul (sous forme de vidéo).", inline=False) + embed.add_field(name=".tagueule", value="Vidéo 'TG'.", inline=False) + embed.add_field(name=".filsdepute", value="Vidéo 'FDP'.", inline=False) + embed.add_field(name=".binary ", value="Convertir le texte en binaire.", inline=False) + embed.add_field(name=".citation [réponse]", value="Permet de citer un message et d'y répondre directement ou non.", inline=False) + elif page==5: #2/10 + embed.add_field(name=".runtime", value="Affiche le temps depuis que le bot est en ligne.", inline=False) + embed.add_field(name=".xd", value="Renvois un XD.", inline=False) + else: + embed.add_field(name="Rien a affiché.", value="Essai une page différente, ou alors `.help music/xp`.", inline=False) + await ctx.send(embed=embed) + +@client.command() +async def deglingue(ctx): + delingue_name=["Clément","Mathéo","Anri","Arthur","toutes les meufs de paname","personne (pucot4life)","Mathieu","MLP","Lucie","Campestrimoche","la daronne à turure", "la daronne à mymy"] + n=randint(0,len(delingue_name)-1) + i=randint(0,9) + if i==0: + await ctx.send("Crocodile la pute de Luffy") + else: + await ctx.send(f"{ctx.author.mention} déglingue {delingue_name[n]} !!") + +@client.command() +async def kiss(ctx): + Liste=ctx.channel.members #liste de tous les membres du channel + Liste.remove(ctx.author) #on retire l'auteur du message de la liste + user_kissed=choice(Liste) #on prend un membre au hasard + while user_kissed.bot==True: #on check que c'est pas un bot + user_kissed=choice(Liste) + await ctx.send(f"{ctx.author.mention} fait un bisous baveux à {user_kissed.mention}") + +@client.command(aliases=['clearchat','cc']) +async def chatclear(ctx): + listeravaG(ctx) + if ctx.author in LravaG: + await ctx.send(f"**\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n**\n*Chat clear par {ctx.author.name} avec succès !*") + else: + await ctx.send("Tu ne peux pas faire ça.") + +@client.command() +async def iq(ctx, *, user='0'): + if user=='0': + user=ctx.author + return await ctx.send(f"T'as {randint(randint(-100,0),220)} IQ {user.mention} !") + else: + try: + user2=user + user2=user2[2:-1] + user2=user2.replace("!","") + user2=int(user2) + user2=client.get_user(user2) + ravaBot=client.get_user(571348123855880192) + if user2.id == ravaBot.id: + return await ctx.send(f"Bah... pas ouf... j'ai juste 100000 IQ !") + else: + return await ctx.send(f"{user2.mention} as {randint(randint(-100,0),220)} IQ !") + except: + return await ctx.send(f"{user} as {randint(randint(-100,0),220)} IQ !") + +@client.command() +async def avatar(ctx, *, user='0'): + if user=='0': + user=ctx.author + else: + user=user[2:-1] + user=user.replace("!","") + user=int(user) + user=client.get_user(user) + await ctx.send(f"Photo de profil de {user.mention} : {user.avatar_url}") + +@client.command() +async def trueid(ctx, *, id='0'): + if id=='0': + await ctx.send("ID manquante.") + else: + id=int(id) + id=client.get_user(id) + await ctx.send(f"Voici l'utilisateur en question : {id}") + +@client.command() +async def calc(ctx, *, msg): + equation = msg.replace('^', '**').replace('x', '*').replace('×', '*').replace('÷', '/').replace('≥', '>=').replace('≤', '<=') + try: + try: + if '=' in equation: + if '<' in equation: + left = eval(equation.split("<=")[0]) + right = eval(equation.split("<=")[1]) + answer = str(left <= right) + elif '>' in equation: + left = eval(equation.split(">=")[0]) + right = eval(equation.split(">=")[1]) + answer = str(left >= right) + else: + left = eval(equation.split("=")[0]) + right = eval(equation.split("=")[1]) + answer = str(left == right) + else: + answer = str(eval(equation)) + except ZeroDivisionError: + return await ctx.send("Tu ne peux pas divisé par 0.") + except TypeError: + return await ctx.send("Requête de calcul invalide.") + if '.' in answer: + aftercomma = answer.split(".")[1] + if len(aftercomma)>2: + answer = str(round(float(answer),2)) + equation=f"'{equation}' arrondi à 2" + equation=equation.replace('*', '×').replace('/', '÷').replace('>=', '≥').replace('<=', '≤') + embed=discord.Embed(color=0xD3D3D3, title='Calculatrice') + embed.set_footer(text=ctx.author) + + embed.add_field(name='Calcul :', value=equation, inline=False) + embed.add_field(name='Réponse :', value=answer.replace('False', 'Faux').replace('True', 'Vrai'), inline=False) + await ctx.send(content=None, embed=embed) + await ctx.message.delete() + +@client.command() +async def mrs(ctx): + listeravaG(ctx) + listeadminBot(ctx) + if ctx.author in LravaG or ctx.author in LadminBot: + if len(message_recently_deleted_msg)==0: + couleur=discord.Colour.red() + else: + couleur=discord.Colour.blue() + embed=discord.Embed(title="Messages récemment supprimés", colour=couleur) + embed.set_footer(text="Développé par des ravaG.") + + if len(message_recently_deleted_msg)==0: + embed.add_field(name="Aucun message récemment supprimé", value="Réessaie plus tard.", inline=False) + else: + for i in range (len(message_recently_deleted_msg)): + embed.add_field(name=message_recently_deleted_msg[i], value=message_recently_deleted_aut[i], inline=False) + await ctx.send(embed=embed) + else: + await ctx.send("Tu ne peux pas faire ça.") + +@client.command() +async def reload(ctx): + global CTX_RELOAD, cycle_RICHPRESENCE + listeadminBot(ctx) + if ctx.author in LadminBot: + await ctx.send("Je reviens tout de suite ! :smile:") + cycle_RICHPRESENCE=False + await client.change_presence(status=discord.Status.dnd, activity=discord.Activity(name="redémarrer...", type=discord.ActivityType.playing)) + print("Déconnexion dans 5 secondes...") + await asyncio.sleep(5) + print("Déconnexion effectué le",time.strftime("%d/%m/%Y à %H:%M:%S"),"!") + print("Rédemarrage dans 3 secondes...") + sleep(3) + client.clear() + set_variables(False, True, True, False, True) + print("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n") + print("Rédemarré le",time.strftime("%d/%m/%Y à %H:%M:%S"),f"par @{ctx.author}.") + CTX_RELOAD=ctx.channel + await client.connect() + else: + await ctx.send("Tu ne peux pas me redémarrer.") + +@client.command() +async def jvousnik(ctx): + await ctx.send("J'vous nique !", tts=True) + +@client.command() +async def xp(ctx, *, user='0'): + if user=="leaderboard" or user=="leader" or user=="top" or user=="toplevel" or user=="leveltop" or user=="lead": + leaderboardXP() + + embed=discord.Embed(title=f"**Leaderboard de {ctx.guild.name}**", colour=discord.Colour.gold()) + embed.set_footer(text="Développé par des ravaG.") + + n=len(XP_USER_LEADERBOARD) + if n!=0: + for i in range(0,len(XP_USER_LEADERBOARD)): + levelUser=rankXP(int(XP_USER_LEADERBOARD[n-1])) + embed.add_field(name=f"{i+1}. Niveau {levelUser} avec {XP_retour_user(XP_USER_LEADERBOARD[n-1])} XP ↴", value=f"<@{NAMES_USER_LEADERBOARD[n-1]}>", inline=False) + i+=1 + n-=1 + else: + embed.add_field(name="Aucune personne dans la leaderboard", value="** **", inline=False) + await ctx.send(embed=embed) + elif user=="info" or user=="aide" or user=="help": + embed=discord.Embed(title="**Infos sur l'XP**", colour=discord.Colour.greyple()) + embed.set_footer(text="Développé par des ravaG.") + + embed.add_field(name="Gagné de l'XP ?", value="Gagnable toutes les 15 secondes.\nPossibilité d'en gagné entre 3 et 13 par messages.", inline=False) + embed.add_field(name=".xp [user]", value="Pour connaître l'XP d'un utilisateur et son niveau.", inline=False) + embed.add_field(name=".xp", value="Pour connaître sa quantité d'XP et son niveau.", inline=False) + embed.add_field(name=".xp leaderboard", value="Affiche la leaderboard du serveur.", inline=False) + embed.add_field(name=".xp info", value="Affiche ceci.", inline=False) + + await ctx.send(embed=embed) + elif user.startswith("clear"): + listeadminBot(ctx) + if ctx.author in LadminBot: + try: + user=user[6:] + user=user[2:-1] + user=user.replace("!","") + user=client.get_user(int(user)) + except: + return await ctx.send("Merci de renseigné un utilisateur valide.") + users=json.load(open('data/users.json', 'r')) + try: + try: + OLD_XP_USER=users[str(ctx.author.id)]['experience'] + except: + OLD_XP_USER=0 + users[str(ctx.author.id)]['experience']=0 + json.dump(users, open('data/users.json', 'w'), default=JSONEncoder, indent=4, sort_keys=True) + return await ctx.send(f"Expérience de {user.mention} supprimée. ({XP_retour_user(OLD_XP_USER)} XP supprimé.)") + except: + return await ctx.send(f"{user.mention} n'as pas d'XP.") + else: + return await ctx.send("Tu ne peux pas faire ceci.") + elif user.startswith("backup"): + listeadminBot(ctx) + if ctx.author in LadminBot: + return await ctx.send(file=discord.File(f"data/users.json")) + else: + return await ctx.send("Tu ne peux pas faire ceci.") + elif user.startswith("give"): + listeadminBot(ctx) + if ctx.author in LadminBot: + try: + user=user[6:] + user=user.split(" ") + userNAME=user[0] + userNAME=userNAME[2:-1] + userNAME=userNAME.replace("!","") + userNAME=client.get_user(int(userNAME)) + userXPtoGIVE=user[-1] + userXPtoGIVE=userXPtoGIVE.replace("xp","") + except: + return await ctx.send("Merci de renseigné un utilisateur ou une xp valide. Rappel : `.xp give `") + try: + users=json.load(open('data/users.json', 'r')) + try: + XP_User=users[str(userNAME.id)]['experience'] + except: + XP_User=0 + XP_User+=int(userXPtoGIVE) + users[str(userNAME.id)]['experience']=XP_User + json.dump(users, open('data/users.json', 'w'), default=JSONEncoder, indent=4, sort_keys=True) + if int(userXPtoGIVE)<0: + userXPtoGIVE=int(userXPtoGIVE)*-1 + return await ctx.send(f"Expérience de {userNAME.mention} mis à jour, retrait de {XP_retour_user(userXPtoGIVE)} xp. {userNAME.mention} a désormais {XP_retour_user(XP_User)} xp.") + else: + return await ctx.send(f"Expérience de {userNAME.mention} mis à jour, ajout de {XP_retour_user(userXPtoGIVE)} xp. {userNAME.mention} a désormais {XP_retour_user(XP_User)} xp.") + except: + return await ctx.send(f"{userNAME.mention} n'as pas encore d'XP.") + else: + return await ctx.send("Tu ne peux pas faire ceci.") + else: + if user=='0': + user=ctx.author + else: + user=user[2:-1] + user=user.replace("!","") + try: + user=int(user) + except: + return await ctx.send("Erreur d'arguments.") + user=client.get_user(user) + if user.bot==True: + return await ctx.send("Un bot ne peux pas obtenir d'XP.") + try: + users=json.load(open('data/users.json', 'r')) + XP_User=users[str(user.id)]['experience'] + except: + XP_User=0 + + await ctx.send(f"{user.mention} a {XP_User} XP (niveau {rankXP(XP_User)}) !") + +def rankXP(xp): + n=1 + while xp>=5*(n-1)**2+100+50*(n-1): + n+=1 + return n + +def XP_retour_user(xp): + try: + if xp>=1000000000: + xp=(f"{round(xp/1000000000, 1)}Ma") + except: + pass + try: + if xp>=1000000: + xp=(f"{round(xp/1000000, 1)}Mi") + except: + pass + try: + if xp>=1000: + xp=(f"{round(xp/1000, 1)}k") + except: + pass + return xp + +def leaderboardXP(): + global XP_USER_LEADERBOARD, NAMES_USER_LEADERBOARD + users=json.load(open('data/users.json', 'r')) + NAMES=[] + XP=[] + for key, value in users.items(): #value obligatoire + if key!="571348123855880192": + NAMES.append(key) + XP.append(users[key]['experience']) + data=[] + + for i in range (0,len(XP)): + data.append((XP[i], NAMES[i])) + + data.sort(reverse=False) #trier a l'envers (du + nul au meilleur) + + XP_USER_LEADERBOARD=[] + NAMES_USER_LEADERBOARD=[] + + for xpU, nom in data: + XP_USER_LEADERBOARD.append(xpU) + NAMES_USER_LEADERBOARD.append(nom) + + while len(XP_USER_LEADERBOARD)>=6: #n'affiche que les 5 premiers + del XP_USER_LEADERBOARD[0] + del NAMES_USER_LEADERBOARD[0] + +@client.command() +async def crp(ctx): + global cycle_RICHPRESENCE + listeadminBot(ctx) + if ctx.author in LadminBot: + if cycle_RICHPRESENCE==True: + cycle_RICHPRESENCE=False + await client.change_presence(status=discord.Status.idle, activity=discord.Activity(name="le bon rhum de Binks", type=discord.ActivityType.listening)) + await ctx.send("Le changement de rich presence est désormais désactivé.") + else: + cycle_RICHPRESENCE=True + await ctx.send("Le changement de rich presence est désormais activé.") + while cycle_RICHPRESENCE==True: + t=30 #délai entre chaque changement + await client.change_presence(status=discord.Status.idle, activity=discord.Activity(name="pikachu qui dance", type=discord.ActivityType.watching)) + await asyncio.sleep(t) + if cycle_RICHPRESENCE==True: + await client.change_presence(status=discord.Status.idle, activity=discord.Activity(name="Diablo IV", type=discord.ActivityType.playing)) + else: + return + await asyncio.sleep(t) + if cycle_RICHPRESENCE==True: + await client.change_presence(status=discord.Status.idle, activity=discord.Activity(name="Flex Air", type=discord.ActivityType.listening)) + else: + return + await asyncio.sleep(t) + if cycle_RICHPRESENCE==True: + await client.change_presence(status=discord.Status.idle, activity=discord.Activity(name="GTA VI", type=discord.ActivityType.playing)) + else: + return + await asyncio.sleep(t) + if cycle_RICHPRESENCE==True: + await client.change_presence(status=discord.Status.idle, activity=discord.Activity(name="r/dankmemes ¯\\_(ツ)_/¯", type=discord.ActivityType.watching)) + else: + return + await asyncio.sleep(t) + if cycle_RICHPRESENCE==True: + await client.change_presence(status=discord.Status.idle, activity=discord.Activity(name="les cris de Sardoche", type=discord.ActivityType.listening)) + else: + return + await asyncio.sleep(t) + if cycle_RICHPRESENCE==True: + await client.change_presence(status=discord.Status.idle, activity=discord.Activity(name="les nudes de turure", type=discord.ActivityType.watching)) + else: + return + await asyncio.sleep(t) + if cycle_RICHPRESENCE==True: + await client.change_presence(status=discord.Status.idle, activity=discord.Activity(name="le bon rhum de Binks", type=discord.ActivityType.listening)) + else: + return + await asyncio.sleep(t) + else: + return await ctx.send("Tu ne peux pas faire ceci.") + +@client.command(aliases=['+ou-', '+-']) +async def plusoumoins(ctx): + global plusoumoins_enjeu + if plusoumoins_enjeu==False: + plusoumoins_enjeu=True + number = randint(1,100) + guess = 5 + while guess!=0: + try: + if ctx.content==ctx.author: + await ctx.send("Choisis un nombre entre 1 et 100.") + except: + await ctx.send("Choisis un nombre entre 1 et 100.") + try: + msg = await client.wait_for('message', timeout=30) + except asyncio.TimeoutError: + return await ctx.send(f"Tu as mis trop de temps a répondre. La réponse était {number}.") + if msg.author==ctx.author: + if msg.content=="stop": + plusoumoins_enjeu=False + return await ctx.send(f"Fin du plus ou moins. La réponse était {number}.") + try: + attempt = int(msg.content) + if attempt > number: + if guess-1!=0: + await ctx.send(f"J'pense que c'est moins... Il te reste {guess-1} essai{'s' if guess-1>1 else ''}.") + guess -= 1 + elif attempt < number: + if guess-1!=0: + await ctx.send(f"J'pense que c'est plus... Il te reste {guess-1} essai{'s' if guess-1>1 else ''}.") + guess -=1 + elif attempt == number: + users=json.load(open('data/users.json', 'r')) + try: + XP_User=users[str(ctx.author.id)]['experience'] + except: + users[str(ctx.author.id)]={} + XP_User=0 + if guess==1: + don_xp=50 + if guess==2: + don_xp=60 + if guess==3: + don_xp=80 + if guess==4: + don_xp=100 + if guess==5: + don_xp=150 + XP_User+=don_xp + users[str(ctx.author.id)]['experience']=XP_User + json.dump(users, open('data/users.json', 'w'), default=JSONEncoder, indent=4, sort_keys=True) + plusoumoins_enjeu=False + return await ctx.send(f"Tu as trouvé, bien joué ! {don_xp} xp ont été ajouté a ton compte !") + except: + await ctx.send("Erreur dans la réponse, merci de n'écrire qu'un nombre. Tapez `stop` pour arrêter le jeu.") + plusoumoins_enjeu=False + await ctx.send(f"T'as pas trouvé... dommage, c'était {number}.") + +@client.command() +async def rainbow(ctx, *, user="0"): + global have_rainbow + listeadminBot(ctx) + if ctx.author in LadminBot: + if user=="start": + if have_rainbow==False: + have_rainbow=True + return await ctx.send("Le rainbow est lancé.") + else: + return await ctx.send("Le rainbow est déjà lancé.") + if user=="stop": + if have_rainbow==True: + role=discord.utils.get(ctx.guild.roles, name="RAINBOW") + for member in ctx.guild.members: + if role in member.roles: + await member.remove_roles(role) + have_rainbow=False + return await ctx.send("Le rainbow est arrêté.") + else: + return await ctx.send("Le rainbow n'est pas lancé.") + if user=="0": + if have_rainbow==False: + return await ctx.send("Tu dois lancer le rainbow avant toute chose. `.rainbow start`") + if user!="start" or user!="stop": + if have_rainbow==True: + if user=="0": + user=ctx.author + else: + try: + user=user.replace("<","") + user=user.replace(">","") + user=user.replace("@","") + user=user.replace("!","") + user=ctx.guild.get_member(int(user)) + except: + return await ctx.send("Merci de renseigné un utilisateur valide.") + role=discord.utils.get(ctx.guild.roles, name="RAINBOW") + Lrainbow=[] + for member in ctx.guild.members: + if role in member.roles: + Lrainbow.append(member) + if user in Lrainbow: + await user.remove_roles(role) + await ctx.send(f"Le rainbow pour {user.mention} est désactivé.") + else: + await user.add_roles(role) + await ctx.send(f"Le rainbow pour {user.mention} est activé.") + colours=[0xE74C3C, 0x2ECC71, 0x3498DB, 0xE67E22, 0x1ABC9C] + i=0 + while have_rainbow==True: + i=(i+1)%len(colours) + await role.edit(colour=discord.Colour(colours[i])) + await asyncio.sleep(1) + else: + return await ctx.send("Tu dois lancer le rainbow avant toute chose. `.rainbow start`") + else: + return await ctx.send("Tu ne peux pas faire ceci.") + +@client.command() +async def rire(ctx): + users=json.load(open('data/users.json', 'r')) + try: + dernier_message_temps=users[str(571348123855880192)]['dernier_message_rire'] + dernier_message_temps=datetime.datetime.strptime(dernier_message_temps, '%Y-%m-%dT%H:%M:%S.%f') + created_at=datetime.datetime.now() + ecart=created_at-dernier_message_temps #caclul l'écart + except: + users[str(571348123855880192)]={} + ecart=datetime.timedelta(seconds=6) #au premier message, lecart est suffisant pour que l'user gagne de l'xp + if ecart.seconds>=5: + users[str(571348123855880192)]['dernier_message_rire']=datetime.datetime.now() + json.dump(users, open('data/users.json', 'w'), default=JSONEncoder, indent=4, sort_keys=True) + rigolade=["AHAHAHAHAHAHAHAHAH", "JADORE_RIRE", "XPTDRRRRRRR MDRRRRR DES BARRES DE RIRE !!!", "ENORME_RIGOLADE"] + rigolade=choice(rigolade) + await ctx.message.delete() + if rigolade=="JADORE_RIRE": + return await ctx.send(file=discord.File("files/jadore_rire.webm")) + if rigolade=="ENORME_RIGOLADE": + return await ctx.send(file=discord.File("files/enorme_rigolade.mp4")) + else: + return await ctx.send(f"{rigolade}") + else: + t=5-ecart.seconds + await ctx.send(f"Tu dois encore attendre {t} seconde{'s' if t>1 else ''} avant de lancer cette commande.", delete_after=2) + +@client.command(aliases=['nr']) +async def nickrandom(ctx): + listeravaG(ctx) + if ctx.author in LravaG: + Liste=ctx.channel.members + Liste.remove(ctx.author) + user_nicked=choice(Liste) + while user_nicked.bot==True or ctx.author==user_nicked: + user_nicked=choice(Liste) + random_nick=["BlackBathevi0r", "Turure", "Mylloon", "DJ Tanoz", "Azazoul", "Monstre2Sexe", "xD4rkS4suk3x", "P'tite salope", "U'r mom is garbage"] + random_nick=choice(random_nick) + await ctx.send(f"{user_nicked.mention} s'appelle maintenant {random_nick}") + await user_nicked.edit(nick=random_nick) + else: + return await ctx.send("Tu ne peux pas faire ceci.") + +try: + client.load_extension("cogs.meme") +except Exception as error: + print(error) + +try: + client.load_extension("cogs.music") +except Exception as error: + print(error) + +try: + client.load_extension("cogs.nsfw") +except Exception as error: + print(error) + +@client.command(aliases=['ss']) +async def screenshare(ctx, *, channel: discord.VoiceChannel=None): + if not channel: + try: + channel = ctx.author.voice.channel + except AttributeError: + return await ctx.send("Aucun channel à rejoindre. Veuillez spécifier un channel valide ou rejoindre un channel.") + return await ctx.send(f"**{channel}** : https://discordapp.com/channels/{ctx.guild.id}/{channel.id}") + +@client.command(aliases=['baccalaureat']) # Tout les XXXXXXX étaient des id de compte Discord. +async def bac(ctx): + avis_bac=1 + if int(ctx.author.id)==XXXXXXX: + proba_bac=randint(0,20) + return await ctx.send(f"T'as pas eu ton bac, c'est bien dommage.") + if int(ctx.author.id)==XXXXXXX: + proba_bac=randint(80,100) + return await ctx.send(f"Il y a {proba_bac}% de chance que t'es ton bac. Perso j'pense que tu l'auras{'' if avis_bac==randint(1,1) else ' pas'}. Bonne chance pour les rattrapages !") + if int(ctx.author.id)==XXXXXXX: + proba_bac=randint(50,90) + return await ctx.send(f"T'as pas eu ton bac, c'est bien dommage.") + if int(ctx.author.id)==XXXXXXX: + proba_bac=randint(97,100) + return await ctx.send(f"T'as eu ton bac, félicitations à toi !") + if int(ctx.author.id)==XXXXXXX or int(ctx.author.id)==XXXXXXX: + proba_bac=randint(50,95) + return await ctx.send(f"T'auras jamais ton bac bg je crois :/") + if int(ctx.author.id)==XXXXXXX: + proba_bac=randint(97,100) + return await ctx.send(f"T'as eu ton bac, félicitations à toi !") + if int(ctx.author.id)==XXXXXXX: + proba_bac=randint(90,100) + return await ctx.send(f"Il y a {proba_bac}% de chance que t'es ton bac. Perso j'pense que tu l'auras{'' if avis_bac==randint(1,1) else ' pas'}.") + if int(ctx.author.id)==XXXXXXX: + proba_bac=randint(75,100) + return await ctx.send(f"Il y a {proba_bac}% de chance que t'es ton bac. Perso j'pense que tu l'auras{'' if avis_bac==randint(1,2) else ' pas'}.") + if int(ctx.author.id)==XXXXXXX: + proba_bac=randint(97,100) + return await ctx.send(f"T'as eu ton bac, félicitations à toi !") + if int(ctx.author.id)==XXXXXXX: + proba_bac=randint(95,100) + return await ctx.send(f"Il y a {proba_bac}% de chance que t'es ton bac. Perso j'pense que tu l'auras{'' if avis_bac==randint(1,1) else ' pas'}.") + if int(ctx.author.id)==XXXXXXX: + proba_bac=randint(95,100) + return await ctx.send(f"T'as eu ton bac, félicitations à toi !") + if int(ctx.author.id)==XXXXXXX: + proba_bac=randint(87,100) + return await ctx.send(f"Il y a {proba_bac}% de chance que t'es ton bac. Perso j'pense que tu l'auras{'' if avis_bac==randint(1,1) else ' pas'}.") + if int(ctx.author.id)==XXXXXXX: + proba_bac=randint(99,105) + return await ctx.send(f"T'as eu ton bac, félicitations à toi !") + if int(ctx.author.id)==XXXXXXX: + proba_bac=randint(0,5) + return await ctx.send(f"Il y a {proba_bac}% de chance que t'es ton bac. Perso j'pense que tu l'auras{'' if avis_bac==randint(2,2) else ' pas'}.") + if int(ctx.author.id)==XXXXXXX: + proba_bac=randint(97,100) + return await ctx.send(f"T'as eu ton bac, félicitations à toi !") + else: + proba_bac=randint(0,100) + return await ctx.send(f"Désolé bg mais j'te connais pas mais vu ta photo de profil et ton nom j'pense que t'as {proba_bac}% de chance d'avoir ton bac.") + +@client.command(aliases=['inv', 'link']) +async def invitation(ctx): + channel=client.get_channel(634054525312958464) #Salon #règles + link=await channel.create_invite(unique=False, reason=f"créé par {ctx.author}") + await ctx.send(f"**Lien d'invitation vers le serveur des ravaG :** {link}") + +@client.command(aliases=['memo']) +async def note(ctx, *, text): + if len(text)<=5: + await ctx.send("Ta note doit au moins faire 5 caractères.") + else: + await ctx.channel.purge(limit=1) + await ctx.author.send(f"** -- NOTE --**\n\n `{text}`") + await ctx.send(f"Une note viens d'être envoyé à {ctx.author.name} !", delete_after=2) + +@client.command(aliases=['hm']) +async def how_many(ctx): + embed=discord.Embed(title=f"Listes users - Team ravaG", colour=discord.Colour.green()) + embed.set_footer(text=f"Développé par des ravaG.") + listeusers(ctx) + Lusers2=[] + for member in Lusers: + if member.status!=discord.Status.offline: + Lusers2.append(member) + embed.add_field(name="**Utilisateurs** - connectés/totaux", value=f"{len(Lusers2)}/{len(Lusers)}", inline=False) + listeravaG(ctx) + LravaG2=[] + for member in LravaG: + if member.status!=discord.Status.offline: + LravaG2.append(member) + embed.add_field(name="**ravaG** - connectés/totaux", value=f"{len(LravaG2)}/{len(LravaG)}", inline=False) + listebot(ctx) + Lbot2=[] + for member in Lbot: + if member.status!=discord.Status.offline: + Lbot2.append(member) + embed.add_field(name="**Bot** - connectés/totaux", value=f"{len(Lbot2)}/{len(Lbot)}", inline=False) + listeverified(ctx) + Lverified2=[] + for member in Lverified: + if member.status!=discord.Status.offline: + Lverified2.append(member) + embed.add_field(name="**Verified** - connectés/totaux", value=f"{len(Lverified2)}/{len(Lverified)}", inline=False) + listeinvite(ctx) + Linvite2=[] + for member in Linvite: + if member.status!=discord.Status.offline: + Linvite2.append(member) + embed.add_field(name="**Invités** - connectés/totaux", value=f"{len(Linvite2)}/{len(Linvite)}", inline=False) + return await ctx.send(embed=embed) + +@client.command() +async def syntax(ctx): #Meme commande que Sardbot + syntaxe="-----------------------------------------------------\n" + syntaxe+=discord.utils.escape_markdown("```Js\n") + syntaxe+=discord.utils.escape_markdown("//code en js (possible de remplacer 'js' par d'autres languages . adaptez le !)\n") + syntaxe+=discord.utils.escape_markdown('console.log("hi");\n') + syntaxe+=discord.utils.escape_markdown("```\n") + syntaxe+="```Js\n" + syntaxe+="//code en js (possible de remplacer 'js' par d'autres languages . adaptez le !)\n" + syntaxe+='console.log("hi");\n' + syntaxe+="```\n" + syntaxe+="-----------------------------------------------------\n" + syntaxe+=discord.utils.escape_markdown("`code sur une seule ligne`\n") + syntaxe+="`code sur une seule ligne`\n" + syntaxe+="-----------------------------------------------------\n" + syntaxe+=discord.utils.escape_markdown("*texte en italique*\n") + syntaxe+="*texte en italique*\n" + syntaxe+="-----------------------------------------------------\n" + syntaxe+=discord.utils.escape_markdown("**text en gras**\n") + syntaxe+="**text en gras**\n" + syntaxe+="-----------------------------------------------------\n" + syntaxe+=discord.utils.escape_markdown("***text en italique-gras***\n") + syntaxe+="***text en italique-gras***\n" + syntaxe+="-----------------------------------------------------\n" + syntaxe+=discord.utils.escape_markdown("> cette ligne est cité\npas celle là\n") + syntaxe+="> cette ligne est cité\npas celle là\n" + syntaxe+="-----------------------------------------------------\n" + syntaxe+=discord.utils.escape_markdown(">>> cette ligne est cité\ncelle là aussi (et elles le seront toutes!)\n") + syntaxe+=">>> cette ligne est cité\ncelle là aussi (et elles le seront toutes!)\n" + await ctx.send(syntaxe) + +@client.command() +async def love(ctx, *users: discord.Member): + if len(users)==2 or len(users)==1: + UneDemande=False + if len(users)==1: + U=users + users=[] + users.append(U[0]) + users.append(ctx.author) + UneDemande=True + if users[0]==users[1]: + return await ctx.send("Je suis sûr que cette personne s'aime ! :angry:") + if users[0].nick: + user1=list(users[0].nick) + else: + user1=list(users[0].name) + if users[1].nick: + user2=list(users[1].nick) + else: + user2=list(users[1].name) + user1_CALC=retirerDoublons([x.lower() for x in user1]) + user2_CALC=retirerDoublons([x.lower() for x in user2]) + coef_amour=0 + if len(user1_CALC)>len(user2_CALC): + taille_du_pls_grand=len(user1_CALC) + taille_du_ms_grand=len(user2_CALC) + else: + taille_du_pls_grand=len(user2_CALC) + taille_du_ms_grand=len(user1_CALC) + coef_amour=round(float(len(list(set(user1_CALC).intersection(user2_CALC)))/taille_du_pls_grand),1)*100+((taille_du_pls_grand-taille_du_ms_grand)*1.5)*1.7 + if coef_amour>100: + coef_amour=100 + if UneDemande==True: + return await ctx.send(f"Tu as {coef_amour}% de chance de te mettre en couple avec {''.join(user1)}") + await ctx.send(f"{''.join(user1)} et {''.join(user2)} ont {coef_amour}% de chance de se mettre en couple !") + else: + await ctx.send("Erreur! Syntaxe : `.love `") + +def retirerDoublons(liste): + Newliste=[] + for element in liste: + if element not in Newliste: + Newliste.append(element) + return Newliste + +@love.error +async def love_error(ctx, error): + await ctx.send(str(error).replace('Member "', "Le membre **").replace('" not found', "** n'as pas été trouvé.")) + +@client.command(aliases=['repost']) +async def delete(ctx): + users=json.load(open('data/users.json', 'r')) + try: + dernier_message_temps=users[str(571348123855880192)]['dernier_message_XP_pics'] + dernier_message_temps=datetime.datetime.strptime(dernier_message_temps, '%Y-%m-%dT%H:%M:%S.%f') + created_at=datetime.datetime.now() + ecart=created_at-dernier_message_temps #caclul l'écart + except: + users[str(571348123855880192)]={} + dernier_message_temps=users[str(571348123855880192)]['experience']=-1 + ecart=datetime.timedelta(seconds=6) + if ecart.seconds>=5: + users[str(571348123855880192)]['dernier_message_XP_pics']=datetime.datetime.now() + json.dump(users, open('data/users.json', 'w'), default=JSONEncoder, indent=4, sort_keys=True) + chiffre=randint(1,3) + if chiffre==1: + nom_fichier="delete.mp4" + elif chiffre==2: + nom_fichier="delete.mov" + elif chiffre==3: + nom_fichier="delete2.mp4" + return await ctx.send(file=discord.File(f"files/{nom_fichier}")) + else: + t=5-ecart.seconds + await ctx.send(f"Tu dois encore attendre {t} seconde{'s' if t>1 else ''} avant de lancer cette commande.", delete_after=2) + +@client.command(aliases=['nul']) +async def nulle(ctx): + users=json.load(open('data/users.json', 'r')) + try: + dernier_message_temps=users[str(571348123855880192)]['dernier_message_XP_pics'] + dernier_message_temps=datetime.datetime.strptime(dernier_message_temps, '%Y-%m-%dT%H:%M:%S.%f') + created_at=datetime.datetime.now() + ecart=created_at-dernier_message_temps #caclul l'écart + except: + users[str(571348123855880192)]={} + dernier_message_temps=users[str(571348123855880192)]['experience']=-1 + ecart=datetime.timedelta(seconds=6) + if ecart.seconds>=5: + users[str(571348123855880192)]['dernier_message_XP_pics']=datetime.datetime.now() + json.dump(users, open('data/users.json', 'w'), default=JSONEncoder, indent=4, sort_keys=True) + chiffre=randint(1,5) + if chiffre==1: + nom_fichier="nulle.mp4" + elif chiffre==2: + nom_fichier="nulle.mov" + elif chiffre==3: + nom_fichier="nulle2.mp4" + elif chiffre==4: + nom_fichier="nulle3.mp4" + elif chiffre==5: + nom_fichier="nulle4.mp4" + return await ctx.send(file=discord.File(f"files/{nom_fichier}")) + else: + t=5-ecart.seconds + await ctx.send(f"Tu dois encore attendre {t} seconde{'s' if t>1 else ''} avant de lancer cette commande.", delete_after=2) + +@client.command(aliases=['tg']) +async def tagueule(ctx): + users=json.load(open('data/users.json', 'r')) + try: + dernier_message_temps=users[str(571348123855880192)]['dernier_message_XP_pics'] + dernier_message_temps=datetime.datetime.strptime(dernier_message_temps, '%Y-%m-%dT%H:%M:%S.%f') + created_at=datetime.datetime.now() + ecart=created_at-dernier_message_temps #caclul l'écart + except: + users[str(571348123855880192)]={} + dernier_message_temps=users[str(571348123855880192)]['experience']=-1 + ecart=datetime.timedelta(seconds=6) + if ecart.seconds>=5: + users[str(571348123855880192)]['dernier_message_XP_pics']=datetime.datetime.now() + json.dump(users, open('data/users.json', 'w'), default=JSONEncoder, indent=4, sort_keys=True) + return await ctx.send(file=discord.File(f"files/tagueule.mp4")) + else: + t=5-ecart.seconds + await ctx.send(f"Tu dois encore attendre {t} seconde{'s' if t>1 else ''} avant de lancer cette commande.", delete_after=2) + +@client.command(aliases=['fdp']) +async def filsdepute(ctx, *, args=""): #neutre sert a rien, juste pour le .boulanger + users=json.load(open('data/users.json', 'r')) + try: + dernier_message_temps=users[str(571348123855880192)]['dernier_message_XP_pics'] + dernier_message_temps=datetime.datetime.strptime(dernier_message_temps, '%Y-%m-%dT%H:%M:%S.%f') + created_at=datetime.datetime.now() + ecart=created_at-dernier_message_temps #caclul l'écart + except: + users[str(571348123855880192)]={} + dernier_message_temps=users[str(571348123855880192)]['experience']=-1 + ecart=datetime.timedelta(seconds=6) + if ecart.seconds>=5: + users[str(571348123855880192)]['dernier_message_XP_pics']=datetime.datetime.now() + json.dump(users, open('data/users.json', 'w'), default=JSONEncoder, indent=4, sort_keys=True) + if int(ctx.author.id)==XXXXX: #XXXXX correspond a un id de compte discord + return await ctx.send("C'est toi le fils de pute") + if args.casefold()=="Boulanger".casefold(): + chiffre=2 + else: + chiffre=randint(1,2) + return await ctx.send(file=discord.File(f"files/filsdepute{chiffre}.mp4")) + else: + t=5-ecart.seconds + await ctx.send(f"Tu dois encore attendre {t} seconde{'s' if t>1 else ''} avant de lancer cette commande.", delete_after=2) + +@client.command() +async def boulanger(ctx): + await ctx.invoke(client.get_command("filsdepute"), args="Boulanger") + +@client.command(aliases=['bin']) +async def binary(ctx, *, args): + texte=str(args).encode() + rendu="" + for i in texte: + rendu+=str(bin(i)[2:].zfill(8)) + await ctx.send(f"{rendu}") + +@client.command(aliases=['cit']) +async def citation(ctx, msgID: discord.Message, *, args=""): + embed=discord.Embed(icon_url=msgID.author.avatar_url, title=f"{msgID.author.name}#{msgID.author.discriminator} le {str(msgID.created_at)[8:10]}/{str(msgID.created_at)[5:7]}/{str(msgID.created_at)[:4]} à {str(msgID.created_at)[11:13]}:{str(msgID.created_at)[14:16]}", description=msgID.content, colour=discord.Colour.blue()) + embed.set_footer(text=f"Demandé par {ctx.author}") + await ctx.channel.purge(limit=1) + if len(msgID.content)<1: + await ctx.send(f"Ce message n'est pas citable. Le lien du message : https://discordapp.com/channels/{msgID.guild.id}/{msgID.channel.id}/{msgID.id}") + else: + await ctx.send(embed=embed) + if len(args)>1: + await ctx.send(f"**Réponse de {ctx.author.mention} :**\n{args}") + + +@client.command(aliases=['bvn']) +async def bienvenue(ctx): + users=json.load(open('data/users.json', 'r')) + try: + dernier_message_temps=users[str(571348123855880192)]['dernier_message_XP_pics'] + dernier_message_temps=datetime.datetime.strptime(dernier_message_temps, '%Y-%m-%dT%H:%M:%S.%f') + created_at=datetime.datetime.now() + ecart=created_at-dernier_message_temps #caclul l'écart + except: + users[str(571348123855880192)]={} + dernier_message_temps=users[str(571348123855880192)]['experience']=-1 + ecart=datetime.timedelta(seconds=6) + if ecart.seconds>=5: + users[str(571348123855880192)]['dernier_message_XP_pics']=datetime.datetime.now() + json.dump(users, open('data/users.json', 'w'), default=JSONEncoder, indent=4, sort_keys=True) + return await ctx.send(f"**{ctx.author.mention} souhaite la bienvenue !!**", file=discord.File("files/welcome.mp4")) + else: + t=5-ecart.seconds + await ctx.send(f"Tu dois encore attendre {t} seconde{'s' if t>1 else ''} avant de lancer cette commande.", delete_after=2) + +@client.command() +async def vidage(ctx): + if ctx.channel==client.get_channel(634059175004995587): + messages=[] + async for x in ctx.message.channel.history(): + if x.author==ctx.author: + messages.append(x) + await ctx.channel.delete_messages(messages) + await ctx.send("Tous vos messages ont été supprimés.", delete_after=2) + await ctx.send("Merci de ne pas abuser de cette commande.", delete_after=4) + else: + await ctx.send("Tu ne peux pas utiliser cette commande.") + +@client.command() +async def runtime(ctx): + now = datetime.datetime.now() + elapsed = now - starttime + seconds = elapsed.seconds + minutes, seconds = divmod(seconds, 60) + hours, minutes = divmod(minutes, 60) + return await ctx.send(f"Lancé depuis {elapsed.days} jours, {hours}h {minutes}min {seconds}sec.") + +@client.command() +async def ctsurenft(ctx): + await ctx.invoke(client.get_command("memes"), args="ctsurenft") + +@client.command() +async def xd(ctx): + chiffre=randint(1,3) + if chiffre==1: + nom_fichier="XD.jpg" + elif chiffre==2: + nom_fichier="XD2.jpg" + elif chiffre==3: + nom_fichier="XD3.jpg" + return await ctx.send("?XD", file=discord.File(f"files/{nom_fichier}")) + +@client.command() +async def suceptible(ctx): + return await ctx.send(file=discord.File(f"files/suceptible.mp4")) + +@client.command() +async def troll(ctx): + users=json.load(open('data/users.json', 'r')) + try: + dernier_message_temps=users[str(571348123855880192)]['dernier_message_XP_pics'] + dernier_message_temps=datetime.datetime.strptime(dernier_message_temps, '%Y-%m-%dT%H:%M:%S.%f') + created_at=datetime.datetime.now() + ecart=created_at-dernier_message_temps #caclul l'écart + except: + users[str(571348123855880192)]={} + dernier_message_temps=users[str(571348123855880192)]['experience']=-1 + ecart=datetime.timedelta(seconds=6) + if ecart.seconds>=5: + users[str(571348123855880192)]['dernier_message_XP_pics']=datetime.datetime.now() + json.dump(users, open('data/users.json', 'w'), default=JSONEncoder, indent=4, sort_keys=True) + chiffre=randint(1,3) + if chiffre==1: + nom_fichier="Troll.png" + elif chiffre==2: + nom_fichier="Troll2.webp" + elif chiffre==3: + nom_fichier="Troll3.png" + return await ctx.send(file=discord.File(f"files/{nom_fichier}")) + else: + t=5-ecart.seconds + await ctx.send(f"Tu dois encore attendre {t} seconde{'s' if t>1 else ''} avant de lancer cette commande.", delete_after=2) + +@client.command() +async def delchat(ctx, *, number: int): + listeravaG(ctx) + if ctx.author in LravaG: + messages=[] + async for x in ctx.message.channel.history(limit=number+1): + messages.append(x) + try: + await ctx.channel.delete_messages(messages) + except: + return await ctx.send("Je ne peux pas supprimer les messages vieux de plus de 14 jours.") + await ctx.send('Messages supprimés !', delete_after=4) + await ctx.send("Merci de ne pas abuser de cette commande.", delete_after=4) + else: + await ctx.send("Tu ne peux pas faire ça.") + +# Commande listes +def listeravaG(ctx): + global LravaG + LravaG=[] + ravaG=discord.utils.get(ctx.guild.roles, name="😎 ravaG") + for member in ctx.guild.members: + if ravaG in member.roles: + LravaG.append(member) + +def listeverified(ctx): + global Lverified + Lverified=[] + verified=discord.utils.get(ctx.guild.roles, name="🐾 Verified") + for member in ctx.guild.members: + if verified in member.roles: + Lverified.append(member) + +def listeinvite(ctx): + global Linvite + Linvite=[] + invite=discord.utils.get(ctx.guild.roles, name="👤 Invité") + for member in ctx.guild.members: + if invite in member.roles: + Linvite.append(member) + +def listebot(ctx): + global Lbot + Lbot=[] + bot=discord.utils.get(ctx.guild.roles, name="🤖 Bot") + for member in ctx.guild.members: + if bot in member.roles: + Lbot.append(member) + +def listeusers(ctx): + global Lusers + Lusers=[] + for member in ctx.guild.members: + Lusers.append(member) + +def listeadminBot(ctx): + global LadminBot + LadminBot=[] + adminBot=discord.utils.get(ctx.guild.roles, name="admin-bot") + for member in ctx.guild.members: + if adminBot in member.roles: + LadminBot.append(member) + +def listechannel(ctx): + global LchannelID + LchannelID=[] + try: + for channel in ctx.guild.channels: + LchannelID.append(channel.id) + except AttributeError: + pass + +temps_lantence_avant=int(time.strftime("%S"))-1 + +client.run(token) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..b1703ef --- /dev/null +++ b/requirements.txt @@ -0,0 +1,10 @@ +git+https://github.com/Rapptz/discord.py +async-timeout>=3.0.1 +riotwatcher>=2.7.1 +psycopg2-binary>=2.8.4 +lyricsgenius>=1.7.0 +google-auth-httplib2>=0.0.3 +praw>=6.4.0 +google-api-python-client>=1.7.11 +youtube-dl>=2020.3.24 +PyNaCl>=1.3.0 \ No newline at end of file