Add files via upload
This commit is contained in:
parent
f80c0666ae
commit
704a402a03
5 changed files with 482 additions and 0 deletions
138
Benne_a_ordure.py
Normal file
138
Benne_a_ordure.py
Normal file
|
@ -0,0 +1,138 @@
|
||||||
|
import discord
|
||||||
|
from discord.ext import commands
|
||||||
|
|
||||||
|
#Paramètres
|
||||||
|
|
||||||
|
deletion_minimal = -2 #quantité de votes totale nécessaire
|
||||||
|
#pour supprimer un post.
|
||||||
|
#Prends en compte le nombre de votes
|
||||||
|
#pour le conserver et pour le supprimer.
|
||||||
|
delet_symbole = "🗑" #Réaction permettant la suppression du post.
|
||||||
|
cons_symbole = "♻" #Réaction permettant la conservation du post.
|
||||||
|
|
||||||
|
authorized_to_start_deletion = ["156484695083843585","177393521051959306"]
|
||||||
|
blocked_from_deleted = [".156484695083843585",".384104235375001632"]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
reactDict = {}
|
||||||
|
messageDict = {}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def authorized_verif(id):
|
||||||
|
for i in range(len(authorized_to_start_deletion)):
|
||||||
|
if id == authorized_to_start_deletion[i]:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def anti_delete(id):
|
||||||
|
for i in range(len(blocked_from_deleted)):
|
||||||
|
if str(id) == blocked_from_deleted[i]:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
async def first_reaction(self , reaction , user):
|
||||||
|
if authorized_verif(user.id):
|
||||||
|
print("creation")
|
||||||
|
if reaction.emoji == delet_symbole:
|
||||||
|
reactDict[reaction.message.id]=-1
|
||||||
|
elif reaction.emoji == cons_symbole:
|
||||||
|
reactDict[reaction.message.id]=1
|
||||||
|
date,heure = timeCorrect(reaction.message.timestamp)
|
||||||
|
|
||||||
|
|
||||||
|
message = str(reaction.message.author.mention)+" a recut un vote pour la suppression ou la conservation de son message du "+str(reaction.message.timestamp)+".Si vous souhaitez voir son message supprimé, votez "+delet_symbole+". Si vous pensez que son message est correct, votez "+str(cons_symbole)+"."
|
||||||
|
m = await self.bot.send_message(reaction.message.channel,message)
|
||||||
|
messageDict[reaction.message.id]=m
|
||||||
|
await self.bot.add_reaction(reaction.message,cons_symbole)
|
||||||
|
await self.bot.add_reaction(reaction.message,delet_symbole)
|
||||||
|
|
||||||
|
async def delete(self , reaction , user):
|
||||||
|
await self.bot.delete_message(reaction.message)
|
||||||
|
await self.bot.delete_message(messageDict[reaction.message.id])
|
||||||
|
|
||||||
|
|
||||||
|
def timeCorrect(temps):
|
||||||
|
date = "5"
|
||||||
|
heure = "6"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return date,heure
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Ben:
|
||||||
|
def __init__(self,bot):
|
||||||
|
self.bot = bot
|
||||||
|
f = open("log_test.txt","a") #Montres le début de l'enregistrement dans les logs.
|
||||||
|
f.write("\n\nDébut de l'enregistrement des réactions.\n\n\n")
|
||||||
|
f.close
|
||||||
|
|
||||||
|
|
||||||
|
async def on_reaction_remove(self,reaction,user):#Récupères la réaction
|
||||||
|
print("-"+str(reaction.emoji)) #si on retire une réaction.
|
||||||
|
print(reaction.count)
|
||||||
|
print(user.name)
|
||||||
|
print(reaction.message.id)
|
||||||
|
if str(reaction.emoji) == cons_symbole: #Vérifie si le caractère
|
||||||
|
reactDict[reaction.message.id]-=1 #corresponds au symbole
|
||||||
|
elif str(reaction.emoji) == delet_symbole: #de suppression
|
||||||
|
reactDict[reaction.message.id]+=1
|
||||||
|
#ou au symbole de conservation.
|
||||||
|
print("num = "+str(reactDict[reaction.message.id]))
|
||||||
|
if reactDict[reaction.message.id]==deletion_minimal:
|
||||||
|
await delete(self , reaction , user) #si le
|
||||||
|
#nombre est
|
||||||
|
#suppérieur,
|
||||||
|
#suppression.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#def auto_deletion(self,Message):
|
||||||
|
# await self.bot.delete_message(Message)
|
||||||
|
# print(Message.content)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
async def on_reaction_add(self, reaction, user): #Récupères la réaction
|
||||||
|
print("+"+str(reaction.emoji)) #si on ajoute une réaction.
|
||||||
|
print(reaction.count)
|
||||||
|
print(user.name)
|
||||||
|
print(reaction.message.id)
|
||||||
|
if anti_delete(reaction.message.author.id)== True:
|
||||||
|
print("message autorise")
|
||||||
|
if str(reaction.emoji) <= cons_symbole:
|
||||||
|
if reactDict.get(reaction.message.id)!=None:
|
||||||
|
reactDict[reaction.message.id]+=1
|
||||||
|
print("message present")
|
||||||
|
else:
|
||||||
|
await first_reaction(self,reaction,user)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if str(reaction.emoji) == delet_symbole:
|
||||||
|
if reactDict.get(reaction.message.id)!=None:
|
||||||
|
reactDict[reaction.message.id]-=1
|
||||||
|
print("message present")
|
||||||
|
else:
|
||||||
|
await first_reaction(self,reaction,user)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if reactDict.get(reaction.message.id) != None :
|
||||||
|
if reactDict[reaction.message.id]<=deletion_minimal:
|
||||||
|
await delete(self , reaction , user)
|
||||||
|
else:
|
||||||
|
print(reactDict[reaction.message.id])
|
||||||
|
|
||||||
|
print("tzdsqdzqs"+str(reactDict[reaction.message.id]))
|
||||||
|
|
||||||
|
def setup(bot):
|
||||||
|
bot.add_cog(Ben(bot))
|
66
DefaultCMD.py
Normal file
66
DefaultCMD.py
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
import discord
|
||||||
|
from discord.ext import commands
|
||||||
|
|
||||||
|
class DefaultCMD:
|
||||||
|
def __init__(self, bot):
|
||||||
|
self.bot = bot
|
||||||
|
|
||||||
|
#Commande ping
|
||||||
|
@commands.command(pass_context=True)
|
||||||
|
async def ping(self, ctx):
|
||||||
|
"""La commande la plus stupide de se bot"""
|
||||||
|
await self.bot.say("Pong!")
|
||||||
|
print("Commande ping lancer par: "+str(ctx.message.author))
|
||||||
|
|
||||||
|
#Commande dis
|
||||||
|
@commands.command(pass_context=True)
|
||||||
|
async def dis(self, ctx, *, something):
|
||||||
|
"""Un mode peroquet"""
|
||||||
|
await self.bot.say(something)
|
||||||
|
print("Commande dis lancer par: "+str(ctx.message.author)+" argument: "+str(something))
|
||||||
|
|
||||||
|
#Commande kick
|
||||||
|
@commands.command(pass_context=True)
|
||||||
|
async def kick(self, ctx, member:discord.Member):
|
||||||
|
"""Expulse un jouer"""
|
||||||
|
#await self.bot.kick(member)
|
||||||
|
await self.bot.say("Kick de: "+str(member)+" par: "+str(ctx.message.author))
|
||||||
|
print("Commande kick lancer par: "+str(ctx.message.author)+" sur: "+str(member))
|
||||||
|
|
||||||
|
#Commande flash
|
||||||
|
@commands.command(pass_context=True)
|
||||||
|
async def flash(self, ctx, *, something):
|
||||||
|
"""Fait apparaitre un text siblimiquement"""
|
||||||
|
await self.bot.delete_message(ctx.message)
|
||||||
|
print("Commande flash lancer par: "+str(ctx.message.author)+" argument: "+str(something))
|
||||||
|
|
||||||
|
#Commande indirect
|
||||||
|
@commands.command(pass_context=True)
|
||||||
|
async def say(self, ctx, *, something):
|
||||||
|
"""Fait passer un message indirectement"""
|
||||||
|
await self.bot.say("**{} said:** {}".format(str(ctx.message.author), something))
|
||||||
|
await self.bot.delete_message(ctx.message)
|
||||||
|
print("Commande say lancer par: "+str(ctx.message.author)+" argument: "+str(something))
|
||||||
|
|
||||||
|
#Groupe de commande role
|
||||||
|
@commands.group(pass_context=True)
|
||||||
|
async def role(self, ctx):
|
||||||
|
if ctx.invoked_subcommand is None:
|
||||||
|
"""Permet la gestion de roles"""
|
||||||
|
await self.bot.say("role: create; ...")
|
||||||
|
print("Commande role lancer par: "+str(ctx.message.author))
|
||||||
|
|
||||||
|
#Commande role create
|
||||||
|
@role.command(pass_context=True)
|
||||||
|
async def create(self, ctx, *, name):
|
||||||
|
"""Permer de crée un role"""
|
||||||
|
await self.bot.say("Creation du role : "+str(name))
|
||||||
|
print("Commande role create lancer par: "+str(ctx.message.author)+" argument: "+str(name))
|
||||||
|
|
||||||
|
@commands.command(pass_context=True, aliases=["id"])
|
||||||
|
async def ID(self, ctx):
|
||||||
|
await self.bot.say("ID de l'envoyeur: "+ctx.message.author.id)
|
||||||
|
print("Commande ID lancer par: "+str(ctx.message.author)+" résultat: "+str(ctx.message.author.id))
|
||||||
|
|
||||||
|
def setup(bot):
|
||||||
|
bot.add_cog(DefaultCMD(bot))
|
165
ExampleRepl.py
Normal file
165
ExampleRepl.py
Normal file
|
@ -0,0 +1,165 @@
|
||||||
|
from discord.ext import commands
|
||||||
|
import time
|
||||||
|
import datetime
|
||||||
|
import math
|
||||||
|
import asyncio
|
||||||
|
import traceback
|
||||||
|
import discord
|
||||||
|
import inspect
|
||||||
|
import textwrap
|
||||||
|
from contextlib import redirect_stdout
|
||||||
|
import io
|
||||||
|
|
||||||
|
ownerid = "177393521051959306"
|
||||||
|
|
||||||
|
class REPL:
|
||||||
|
def __init__(self, bot):
|
||||||
|
self.bot = bot
|
||||||
|
self._last_result = None
|
||||||
|
self.sessions = set()
|
||||||
|
|
||||||
|
def cleanup_code(self, content):
|
||||||
|
"""Automatically removes code blocks from the code."""
|
||||||
|
# remove ```py\n```
|
||||||
|
if content.startswith('```') and content.endswith('```'):
|
||||||
|
return '\n'.join(content.split('\n')[1:-1])
|
||||||
|
|
||||||
|
# remove `foo`
|
||||||
|
return content.strip('` \n')
|
||||||
|
|
||||||
|
def get_syntax_error(self, e):
|
||||||
|
if e.text is None:
|
||||||
|
return '```py\n{0.__class__.__name__}: {0}\n```'.format(e)
|
||||||
|
return '```py\n{0.text}{1:>{0.offset}}\n{2}: {0}```'.format(e, '^', type(e).__name__)
|
||||||
|
|
||||||
|
@commands.command(pass_context=True, hidden=True, name='exec')
|
||||||
|
async def _eval(self, ctx, *, body: str):
|
||||||
|
if ctx.message.author.id != ownerid:
|
||||||
|
return
|
||||||
|
env = {
|
||||||
|
'bot': self.bot,
|
||||||
|
'ctx': ctx,
|
||||||
|
'channel': ctx.message.channel,
|
||||||
|
'author': ctx.message.author,
|
||||||
|
'server': ctx.message.server,
|
||||||
|
'message': ctx.message,
|
||||||
|
'_': self._last_result
|
||||||
|
}
|
||||||
|
|
||||||
|
env.update(globals())
|
||||||
|
|
||||||
|
body = self.cleanup_code(body)
|
||||||
|
stdout = io.StringIO()
|
||||||
|
|
||||||
|
to_compile = 'async def func():\n%s' % textwrap.indent(body, ' ')
|
||||||
|
|
||||||
|
try:
|
||||||
|
exec(to_compile, env)
|
||||||
|
except SyntaxError as e:
|
||||||
|
return await self.bot.say(self.get_syntax_error(e))
|
||||||
|
|
||||||
|
func = env['func']
|
||||||
|
try:
|
||||||
|
with redirect_stdout(stdout):
|
||||||
|
ret = await func()
|
||||||
|
except Exception as e:
|
||||||
|
value = stdout.getvalue()
|
||||||
|
await self.bot.say('```py\n{}{}\n```'.format(value, traceback.format_exc()))
|
||||||
|
else:
|
||||||
|
value = stdout.getvalue()
|
||||||
|
try:
|
||||||
|
await self.bot.add_reaction(ctx.message, '\u2705')
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
if ret is None:
|
||||||
|
if value:
|
||||||
|
await self.bot.say('```py\n%s\n```' % value)
|
||||||
|
else:
|
||||||
|
self._last_result = ret
|
||||||
|
await self.bot.say('```py\n%s%s\n```' % (value, ret))
|
||||||
|
|
||||||
|
@commands.command(pass_context=True, hidden=True)
|
||||||
|
async def repl(self, ctx):
|
||||||
|
if ctx.message.author.id != ownerid:
|
||||||
|
return
|
||||||
|
msg = ctx.message
|
||||||
|
|
||||||
|
variables = {
|
||||||
|
'ctx': ctx,
|
||||||
|
'bot': self.bot,
|
||||||
|
'message': msg,
|
||||||
|
'server': msg.server,
|
||||||
|
'channel': msg.channel,
|
||||||
|
'author': msg.author,
|
||||||
|
'_': None,
|
||||||
|
}
|
||||||
|
|
||||||
|
if msg.channel.id in self.sessions:
|
||||||
|
await self.bot.say('Already running a REPL session in this channel. Exit it with `quit`.')
|
||||||
|
return
|
||||||
|
|
||||||
|
self.sessions.add(msg.channel.id)
|
||||||
|
await self.bot.say('Enter code to execute or evaluate. `exit()` or `quit` to exit.')
|
||||||
|
while True:
|
||||||
|
response = await self.bot.wait_for_message(author=msg.author, channel=msg.channel,
|
||||||
|
check=lambda m: m.content.startswith('`'))
|
||||||
|
|
||||||
|
cleaned = self.cleanup_code(response.content)
|
||||||
|
|
||||||
|
if cleaned in ('quit', 'exit', 'exit()'):
|
||||||
|
await self.bot.say('Exiting.')
|
||||||
|
self.sessions.remove(msg.channel.id)
|
||||||
|
return
|
||||||
|
|
||||||
|
executor = exec
|
||||||
|
if cleaned.count('\n') == 0:
|
||||||
|
# single statement, potentially 'eval'
|
||||||
|
try:
|
||||||
|
code = compile(cleaned, '<repl session>', 'eval')
|
||||||
|
except SyntaxError:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
executor = eval
|
||||||
|
|
||||||
|
if executor is exec:
|
||||||
|
try:
|
||||||
|
code = compile(cleaned, '<repl session>', 'exec')
|
||||||
|
except SyntaxError as e:
|
||||||
|
await self.bot.say(self.get_syntax_error(e))
|
||||||
|
continue
|
||||||
|
|
||||||
|
variables['message'] = response
|
||||||
|
|
||||||
|
fmt = None
|
||||||
|
stdout = io.StringIO()
|
||||||
|
|
||||||
|
try:
|
||||||
|
with redirect_stdout(stdout):
|
||||||
|
result = executor(code, variables)
|
||||||
|
if inspect.isawaitable(result):
|
||||||
|
result = await result
|
||||||
|
except Exception as e:
|
||||||
|
value = stdout.getvalue()
|
||||||
|
fmt = '```py\n{}{}\n```'.format(value, traceback.format_exc())
|
||||||
|
else:
|
||||||
|
value = stdout.getvalue()
|
||||||
|
if result is not None:
|
||||||
|
fmt = '```py\n{}{}\n```'.format(value, result)
|
||||||
|
variables['_'] = result
|
||||||
|
elif value:
|
||||||
|
fmt = '```py\n{}\n```'.format(value)
|
||||||
|
|
||||||
|
try:
|
||||||
|
if fmt is not None:
|
||||||
|
if len(fmt) > 2000:
|
||||||
|
await self.bot.send_message(msg.channel, 'Content too big to be printed.')
|
||||||
|
else:
|
||||||
|
await self.bot.send_message(msg.channel, fmt)
|
||||||
|
except discord.Forbidden:
|
||||||
|
pass
|
||||||
|
except discord.HTTPException as e:
|
||||||
|
await self.bot.send_message(msg.channel, 'Unexpected error: `{}`'.format(e))
|
||||||
|
|
||||||
|
def setup(bot):
|
||||||
|
bot.add_cog(REPL(bot))
|
42
Reactionner.py
Normal file
42
Reactionner.py
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
import discord
|
||||||
|
from discord.ext import commands
|
||||||
|
|
||||||
|
licorne_symbole = "🦄"
|
||||||
|
licorne = ["licorne"]
|
||||||
|
|
||||||
|
caca_symbole = "💩"
|
||||||
|
caca = ["caca", "merde"]
|
||||||
|
|
||||||
|
sel_symbole = ":PJSalt:232086190545829888"
|
||||||
|
sel = ["sel", "salty", "putain"]
|
||||||
|
|
||||||
|
troll_symbole = ":troll:232080409083641856"
|
||||||
|
troll = ["troll", "trol", "trololo"]
|
||||||
|
|
||||||
|
class Reactionner:
|
||||||
|
def __init__(self, bot):
|
||||||
|
self.bot = bot
|
||||||
|
|
||||||
|
async def on_message(self, message):
|
||||||
|
for i in range(len(licorne)):
|
||||||
|
if licorne[i] in message.content.lower():
|
||||||
|
print("licorne detecter !")
|
||||||
|
await self.bot.add_reaction(message,licorne_symbole)
|
||||||
|
|
||||||
|
for i in range(len(caca)):
|
||||||
|
if caca[i] in message.content.lower():
|
||||||
|
print("caca detecter !")
|
||||||
|
await self.bot.add_reaction(message,caca_symbole )
|
||||||
|
|
||||||
|
for i in range(len(sel)):
|
||||||
|
if sel[i] in message.content.lower():
|
||||||
|
print("sel detecter !")
|
||||||
|
await self.bot.add_reaction(message,sel_symbole)
|
||||||
|
|
||||||
|
for i in range(len(troll)):
|
||||||
|
if troll[i] in message.content.lower():
|
||||||
|
print("troll detecter !")
|
||||||
|
await self.bot.add_reaction(message,troll_symbole)
|
||||||
|
|
||||||
|
def setup(bot):
|
||||||
|
bot.add_cog(Reactionner(bot))
|
71
bot.py
Normal file
71
bot.py
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
import discord
|
||||||
|
from discord.ext import commands
|
||||||
|
|
||||||
|
bot = commands.Bot(description="Je suis le bot du serveur FTW !", command_prefix="<@384094872820252674> ")
|
||||||
|
|
||||||
|
owner = ["177393521051959306"]
|
||||||
|
|
||||||
|
def is_owner(id):
|
||||||
|
for i in range(len(owner)):
|
||||||
|
if id == owner[i]:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
#Démarrage
|
||||||
|
@bot.event
|
||||||
|
async def on_ready():
|
||||||
|
print("Démarrage de DefaultCMD")
|
||||||
|
bot.load_extension("DefaultCMD")
|
||||||
|
|
||||||
|
print("Démarrage de ExampleRepl")
|
||||||
|
bot.load_extension("ExampleRepl")
|
||||||
|
|
||||||
|
print("Démarrage de Benne_a_ordure")
|
||||||
|
bot.load_extension("Benne_a_ordure")
|
||||||
|
|
||||||
|
print("Démarrage de Reactionner")
|
||||||
|
bot.load_extension("Reactionner")
|
||||||
|
|
||||||
|
print("FTW's Bot operationelle")
|
||||||
|
|
||||||
|
@bot.command(pass_context = True)
|
||||||
|
async def load(ctx, ext):
|
||||||
|
""": Charge une extension"""
|
||||||
|
if is_owner(ctx.message.author.id) == True:
|
||||||
|
bot.load_extension(ext)
|
||||||
|
print("Extention "+str(ext)+" charger par: "+str(ctx.message.author))
|
||||||
|
await bot.say("Extension "+str(ext)+" charger")
|
||||||
|
else:
|
||||||
|
await bot.say("Désoler <@"+str(ctx.message.author.id)+"> mais vous n'avez pas le droit de faire ca !")
|
||||||
|
print("Refue de charger: "+str(ext)+" car "+str(ctx.message.author)+" n'a pas le droit !")
|
||||||
|
|
||||||
|
@bot.command(pass_context = True)
|
||||||
|
async def unload(ctx,ext):
|
||||||
|
""": Décharge une extension"""
|
||||||
|
if is_owner(ctx.message.author.id) == True:
|
||||||
|
bot.unload_extension(ext)
|
||||||
|
print("extention "+str(ext)+" décharger")
|
||||||
|
await bot.say("Extension "+str(ext)+" décharger")
|
||||||
|
else:
|
||||||
|
await bot.say("Désoler <@"+str(ctx.message.author.id)+"> mais vous n'avez pas le droit de faire ca !")
|
||||||
|
print("Refue de décharger: "+str(ext)+" car "+str(ctx.message.author)+" n'a pas le droit !")
|
||||||
|
|
||||||
|
@bot.command(pass_context = True)
|
||||||
|
async def reload(ctx,ext):
|
||||||
|
""": Recharge une extension avec ses modifications"""
|
||||||
|
if is_owner(ctx.message.author.id) == True:
|
||||||
|
bot.unload_extension(ext)
|
||||||
|
bot.load_extension(ext)
|
||||||
|
print("Extention "+str(ext)+" mis à jour par: "+str(ctx.message.author))
|
||||||
|
await bot.say("Extension "+str(ext)+" mis à jour")
|
||||||
|
else:
|
||||||
|
await bot.say("Désoler <@"+str(ctx.message.author.id)+"> mais vous n'avez pas le droit de faire ca !")
|
||||||
|
print("Refue de mettre à jour: "+str(ext)+" car "+str(ctx.message.author)+" n'a pas le droit !")
|
||||||
|
|
||||||
|
"""
|
||||||
|
@bot.event
|
||||||
|
async def on_message(msg):
|
||||||
|
print(msg.content)
|
||||||
|
"""
|
||||||
|
|
||||||
|
bot.run("Mzg0MDk0ODcyODIwMjUyNjc0.DPt74w.2t6XZoFVYgk-7eMeS702dqyvoP4")
|
Reference in a new issue