V5 is here !!!
This commit is contained in:
Maël 2017-04-29 15:03:37 -04:00
parent a70e98de97
commit 1ee3811ef2
16 changed files with 272 additions and 90 deletions

View file

@ -6,7 +6,11 @@ TuxBot, un bot discord écrit en Python.
Ici se trouve le code source de ce bot proventant du serveur Discord "Aide GNU/Linux-Fr". Ici se trouve le code source de ce bot proventant du serveur Discord "Aide GNU/Linux-Fr".
## Installation ## Installation
TuxBot à besoin de ``Python 3.5`` et des libraries : ``discord.py``,``beautifulsoup4``, ``pytz``, ``wikipedia``, ``requests`` pour fonctionner. Une fois ces "programmes" installés, éditez le fichier ``config.py`` en entrant votre token puis si vous êtes sous windows lancez le fichier ``start-windows.bat`` et si vous êtes sous linux lancer ``start.sh`` ! - Installez Python3.5 ou plus
- Installez PIP
- Installez ``requirements.txt`` (``pip install -r requirements.txt``)
- Editez à votre guise le fichier ``config.py`` en entrant votre token
- Si vous êtes sous windows lancez le fichier ``start-windows.bat`` et si vous êtes sous linux lancer ``start.sh`` !
## Permissions : ## Permissions :
- Gerer les messages - Gerer les messages

1
botassets/__init__.py Normal file
View file

@ -0,0 +1 @@
__all__ = ["imports","arrays"]

7
botassets/arrays.py Executable file
View file

@ -0,0 +1,7 @@
pokemon = ['Ratifeu','Squirtle','Ninetales','Bulbizarre','Carabaffe','Carapuce','Roucarnage','Nidorino','Akwakwak','Miaouss','Ratifeu','Squirtle','Ninetales','Bulbizarre','Carabaffe','Carapuce','Roucarnage','Nidorino','Akwakwak','Miaouss','outout14','Psyko','Arcanin','Boustiflor','Fantominus','Voltorbe','Excelangue','Poissirène','Magicarpe','Électhor','Joliflor','Cotovol','Mentali']
jokes = ['Linux : lose your time\nMac : lose your money','Un virus est un programme nocif.\nIl est petit, rapide, prend peu de place en mémoire et sais se faire discret.\nOSX n\'est donc pas un virus, c\'est un bug.','Quel est le plus gros Apple du monde ? \n *Le big MAC...*','OSX est à l\'informatique ce que la tectonick est à la musique...','Si les OS étaient des élèves:\nOSX: Le plus vieux\nLinux: Le premier de la classe\nWindows: Le différent victimisé','Windows, Mac Os et Linux sont aux toilettes. Mac OS se lave complètement les mains en sortant et déclare : Rien de plus sûr que ça ! Linux se lave uniquement deux doigts : Pas besoin de plus de sécurité ! Windows sort sans se laver les mains : Chez Windows, on ne s\'urine pas dessus !','https://cdn.discordapp.com/attachments/187284361505144833/187287424852951042/unknown.png !','Les hyperboles sa sert à manger des hyper-soupes :3 (Lawl!)','Attention : une étude récente a prouvé que la consommation prolongée de drogues peut définitivement endommager la mémoire à court terme.','https://images-1.discordapp.net/.eJwlyFEKhCAQANC7eAAn09TtNmJisTUjzkQf0d1bWHhf71Zn39WsVpHGM8Cycaa-aBbqqRZdiepeUttYZzogiaS8HgWFwcQwRme9mYbJOBet_VcwYbTB-8_wAyd-kS7UDat6XggYIuY.Tzl6-x2F39v_DjLRKkOBafZcvUg.png','C\'est un aveugle qui rentre dans un bar, qui rentre dans une chaise, qui rentre dans une table,..', 'Le comble de Windows, cest que pour larrêter, il faut cliquer sur démarrer x)', 'C\'est un type qui rentre dans un bar et qui s\'exclame "Salut c\'est moi !", tout le monde se retourne, c\'était pas lui...', 'Que prend un éléphant dans un bar ? De la place...', 'Un zoophile prend son élan avant de rentrer dans un bar :D !', 'Pourquoi un aveugle vous tutoi ? Car il ne vous voit pas.....', 'C\'est une requête SQL qui rentre dans un bar et qui s\'adresse à deux tables : Puis-je vous joindre ?','Combien de développeurs faut-il pour remplacer une ampoule grillée ? Aucun, c\'est un problème Hardware.','4h du matin un homme rentre chez lui mort bourré. Pour ne pas se faire prendre par sa femme il decide de se faire un jus de citron. Le lendemain matin sa femme lui crie dessus. "Tu as encore bus comme un trou hier" L\'homme: "Mais non" La femme: "A ouais et le cannari dans le presse citron il s\'est suicider"', 'Il ne faut jamais croire les girafes, c\'est un cou monté.', 'Quelle est la seule fonctionnalité qui n\'as jamais planté sur Windows ? Le BSOD', 'Windows n\'aime pas quel l\'on appel un dossier con, car c\'est le synonyme de son créateur (Gaston Portail)', 'Pourquoi personne n\'aime ISS? Car il était utilisé par les NAZIS', 'Sous Mac il n\'y a qu\'un virus : MacOSX', 'Le meilleur entreprise de système d\'exploitation ? Apple : Ils exploitent ton argent', 'Windows est un OS. Il est dur, n\'as pas de goût et on veut l\'enterrer', '```Apple --> perdre son argent a force de tout acheter \n Android --> perdre ses données a force de se faire pirater```', 'Plusieurs scientifiques sont entrain de se demander quel est le pire : "Utiliser Windows 8" ou "Ecouter du Jul"']
youtube = ['KickSama, dessins annimés : https://www.youtube.com/user/TheKickGuy', 'U=RI, videos sur l\'électricité | Lien : https://www.youtube.com/channel/UCVqx3vXNghSqUcVg2nmegYA', 'Outout, chaine vraiment nul et peu alimenté du créateur du bot | Lien : https://www.youtube.com/channel/UC2XpYyT5X5tq9UQpXdc1JaQ', 'SuperJDay64, LP sur des jeux de type mario | Lien : https://www.youtube.com/channel/UCjkQgODdmhR9I2TatJZtGSQ/about', 'Monsieur Plouf, critiques de jeux AAA | Lien : https://www.youtube.com/channel/UCrt_PUTF9LdJyuDfXweHwuQ', 'MaxEstLa, vidéos réaction sur d\'autres chaines (c\'est presque du clash ) | Lien : https://www.youtube.com/channel/UCsk9XguwTfgbenCZ4AlIcYQ', 'BastienLePirate, astuces youtube, vidéos sur des ytubers, ...| Lien : https://www.youtube.com/channel/UCJFGk2A34R-99RIVDK2Hlwg', 'Blender Foundation, animations libre de droits réalisé en utilisant blender | Lien : https://www.youtube.com/channel/UCSMOQeBJ2RAnuFungnQOxLg', 'Met-Hardware, chaine youtube sur l\'hardware et des let\'s play ! Lien : https://www.youtube.com/channel/UC7rse81OttysA1m1yn_f-OA', 'Les teachers du net, tutoriels | Lien : https://www.youtube.com/user/hounwanou1993','5secondfilms (Anglais), des courts-métrage | Lien : https://www.youtube.com/user/5secondfilms','TomSka (Anglais), des courts-métrages | Lien : https://www.youtube.com/user/TomSka','Trash, des Tops | Lien : https://www.youtube.com/channel/UCfGfdZuYifBYb1fmZcL1JBQ','ElectronikHeart, l\'informatique sous un angle différent | Lien : https://www.youtube.com/user/ElectronikHeart','Blender Foundation, des court-métrages réalisés avec Blender | Lien : https://www.youtube.com/channel/UCSMOQeBJ2RAnuFungnQOxLg','Caljbeut, politique, etc... en dessins | Lien : https://www.youtube.com/channel/UCNM-UkIP1BL5jv9ZrN5JMCA','SetSolution, des concepts d\'Iphones, etc... | Lien : https://www.youtube.com/channel/UCAXlQL_BcggjH6MpMSekjYg']
policier = [" Humm... Overdose de GNU/Linux, suivez moi...", " Ca fonctionne comment un ethylotest, vous savez vous ?", " Wow, vous êtes trop bourré, z'avez cassé mon ethylotest!", " Heeu, vous êtes à vélo mais vous êtes bourré, c'est légal ?", " Vous n'avez pas consomé d'alchool mais vous avez consomé du Canabis, c'est pas ma mission, circulez !"]
array_emoji = ["1⃣", "2⃣", "3⃣", "4⃣", "5⃣", "6⃣", "7⃣", "8⃣", "9⃣", "🔟"]
wlcm_msgs = ['Bienvenue à toi, {0.mention} sur le mangifique discord {0.server.name} !', 'Souhaitons la bienvenue à notre nouveau membre, {0.mention} sur notre super serveur !', 'Welcome :heart:, {0.mention} sur le discord {0.server.name} !']
adios_msgs = ['Pourquoi {0.name} nous à t-il quitté ?!? Il faudra qu\'il m\'explique !', '{0.name} nous a malheuresement quitté, il a fait une grave erreur, nous le traquerons puis nous lui feront avaler le CD de Ubuntu !!! :smirk:', '{0.name} est mort, enfin il à quitté notre discord...', ':sob: Ouiiin... {0.name} est partit de notre beau serveur !', '{0.name} nous à quitté, on ne l\'oublieras jamais... Enfaite c\'était qui encore {0.name} ?']

21
botassets/imports.py Normal file
View file

@ -0,0 +1,21 @@
#################
# IMPORTS #
#################
import discord ##Discord.py library
import asyncio
from config import *
import random
import time
import sys
import math
import os
import urllib
from bs4 import *
import urllib.request ##URL functions
import re
import logging
import datetime ##For Time
import pytz ##For time
import requests
import wikipedia
import sqlite3

View file

@ -8,15 +8,15 @@ __licence__ = "WTFPL Licence 2.0"
## TOKEN ## TOKEN
## Insert your DiscordAPP Token here ## Insert your DiscordAPP Token here
token = "TOKEN" token = " "
##PREFIX ##PREFIX
##Default prefix . ##Default prefix .
prefix = "." prefix = "."
##Authorized channels ##Authorized channel
op_channel = ["tuxbot", "bot", "boat", "commandes", "commands"] op_channel = ["tuxbot-dev", "bot", "boat", "commandes"]
##Version information ##Version information
## DONT TOUCH ! ## DONT TOUCH !
version = " Release 4.2 " version = " Release 5.0 "

276
main.py
View file

@ -8,24 +8,8 @@ __licence__ = "WTFPL Licence 2.0"
################# #################
# IMPORTS # # IMPORTS #
################# #################
import discord ##Discord.py library from botassets import *
import asyncio from botassets.imports import *
from config import * ##Configuration file
from arrays import * ##arrays
import random
import time
import sys
import math
import os
import urllib
from bs4 import *
import urllib.request ##URL functions
import re
import logging
import datetime ##For Time
import pytz ##For time
import requests
import wikipedia
client = discord.Client() client = discord.Client()
status = "dnd" status = "dnd"
wikipedia.set_lang("fr") wikipedia.set_lang("fr")
@ -50,6 +34,26 @@ logger.info(' \n \n New TuxBot instance \n \n')
########################################### ###########################################
game = open('msg/game.txt').read() game = open('msg/game.txt').read()
#### SQL #####
conn = sqlite3.connect('tuxbot.db') #Connexion SQL
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS users(
id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
userid TEXT,
username TEXT,
usermention TEXT,
os TEXT,
config TEXT,
useravatar TEXT,
userbirth TEXT,
cidate TEXT,
pays TEXT
)
""")# Creation table Utilisateur si premiere fois
conn.commit()
########################################### ###########################################
# # # #
@ -82,16 +86,16 @@ async def on_member_join(member):
logger.log(logging.INFO, member.name + ' joined the server !') logger.log(logging.INFO, member.name + ' joined the server !')
server = member.server server = member.server
prv = await client.start_private_message(member) prv = await client.start_private_message(member)
welcome_msg = random.choice(wlcm_msgs) welcome_msg = random.choice(arrays.wlcm_msgs)
if member.server.name == "Aide GNU/Linux-fr": if member.server.name == "Aide GNU/Linux-fr":
fmt = 'Bienvenue {0.mention} sur le suberbe serveur discord **' + member.server.name + '** ! Je te conseil de lire #regles pour commencer !' fmt = 'Bienvenue {0.mention} sur le suberbe serveur discord **' + member.server.name + '** ! Je te conseil de lire #regles pour commencer et te créer une carte d\'identité dans ``#bot`` grâce à la commande ``.ci-register`` et la personnaliser :smile: !'
else: else:
fmt = 'Bienvenue {0.mention} sur le discord **'+ member.server.name +'**, j\'espère que tu passeras un bon moment avec nous !' ##Multi-Server fmt = 'Bienvenue {0.mention} sur le discord **'+ member.server.name +'**, j\'espère que tu passeras un bon moment avec nous !' ##Multi-Server
await client.send_message(prv, fmt.format(member)) await client.send_message(prv, fmt.format(member))
await client.send_message(member.server.default_channel, "**{0}**".format(welcome_msg.format(member))) await client.send_message(member.server.default_channel, "**{0}**".format(welcome_msg.format(member)))
@client.event @client.event
async def on_member_remove(member): async def on_member_remove(member):
adios_msg = random.choice(adios_msgs) adios_msg = random.choice(arrays.adios_msgs)
logger.log(logging.INFO, member.name + ' left the server !') logger.log(logging.INFO, member.name + ' left the server !')
await client.send_message(member.server.default_channel, "**{0}**".format(adios_msg.format(member))) await client.send_message(member.server.default_channel, "**{0}**".format(adios_msg.format(member)))
########################################### ###########################################
@ -113,79 +117,92 @@ async def on_message_delete(message):
@client.event @client.event
async def on_message(message): async def on_message(message):
########################################### ###########################################
# # # #
# CUSTOMS FUNCTIONS # # CUSTOMS FUNCTIONS #
# BLOCKING AND ... # # BLOCKING AND ... #
# # # #
########################################### ###########################################
roles = ["bot-commander", "admin", "Admin"] roles = ["bot-commander", "poney"]
def cmd(cmd_name): def cmd(cmd_name):
if not message.channel.is_private and not message.author.bot: if not message.channel.is_private and not message.author.bot:
if message.channel.name in op_channel: return message.content.startswith(prefix + cmd_name)
return message.content.startswith(prefix + cmd_name)
def op_cmd(cmd_name): def authadmin():
if not message.channel.is_private and not message.author.bot: role = message.author.roles
role = message.author.roles print("A")
try: try:
if str(role[0]) in roles or str(role[1]) in roles or str(role[2]) in roles or str(role[3]) in roles or str(role[4]) in roles: if str(role[0]) in roles or str(role[1]) in roles or str(role[2]) in roles or str(role[3]) in roles or str(role[4]) in roles:
return message.content.startswith(prefix + cmd_name) return True
except IndexError: else:
##Essayons de ne rien afficher x) return False
variable_inutile_car_flemme = 0 except IndexError:
return False
if message.channel.is_private and not message.author.bot: if message.channel.is_private and not message.author.bot:
await client.send_message(message.channel, "Désolé mais mon papa m'a dit de ne pas parler par Message Privé, viens plutot sur un serveur discord !") await client.send_message(message.channel, "Désolé mais mon papa m'a dit de ne pas parler par Message Privé, viens plutot sur un serveur discord !")
########################################### ###########################################
# # # #
# ADMIN COMMANDS # # ADMIN COMMANDS #
# # # #
########################################### ###########################################
if op_cmd("sendlogs"): if cmd("sendlogs"):
wait = await client.send_message(message.channel, message.author.mention + " Le contenue du fichier log est entrain d'être envoyé... Veuillez patienter, cela peut prendre du temps !") if authadmin:
await client.send_file(message.author, fp="logs/activity.log", filename="activity.log", content="Voci mon fichier ``activity.log`` comme demandé !", tts=False) wait = await client.send_message(message.channel, message.author.mention + " Le contenue du fichier log est entrain d'être envoyé... Veuillez patienter, cela peut prendre du temps !")
await client.edit_message(wait, message.author.mention + " C'est bon vous venez de recevoir par message privé mon fichier de logs") await client.send_file(message.author, fp="logs/activity.log", filename="activity.log", content="Voci mon fichier ``activity.log`` comme demandé !", tts=False)
await client.edit_message(wait, message.author.mention + " C'est bon vous venez de recevoir par message privé mon fichier de logs")
else:
await client.send_message(message.channel, "[**ERREUR**] Vous n'avez pas la permission d'executer cette commande")
elif op_cmd("say"): #Control elif cmd("say"): #Control
args = message.content.split("say ") if authadmin():
try: args = message.content.split("say ")
await client.send_message(message.channel, args[1]) try:
logger.info(message.author.name + ' ordered TuxBot to say : ' + args[1]) await client.send_message(message.channel, args[1])
await client.delete_message(message) logger.info(message.author.name + ' ordered TuxBot to say : ' + args[1])
except IndexError: await client.delete_message(message)
await client.send_message(message.author, "**[ERREUR]** Merci de fournir le paramètre du message à dire, je ne suis pas dans ta tête !") except IndexError:
await client.delete_message(message) await client.send_message(message.author, "**[ERREUR]** Merci de fournir le paramètre du message à dire, je ne suis pas dans ta tête !")
await client.delete_message(message)
else:
await client.send_message(message.channel, message.author.mention + "[**ERREUR**] Vous n'avez pas la permission d'executer cette commande")
elif op_cmd("clear"): elif cmd("clear"):
try: if authadmin:
args = message.content.split("clear ") try:
argument = int(args[1]) args = message.content.split("clear ")
argument = argument+1 argument = int(args[1])
logger.info(message.author.name + ' ordered TuxBot to remove ' + args[1] + ' messages') argument = argument+1
deleted = await client.purge_from(message.channel, limit=argument) logger.info(message.author.name + ' ordered TuxBot to remove ' + args[1] + ' messages')
await client.send_message(message.author, args[1] + " messages ont bien été supprimés") deleted = await client.purge_from(message.channel, limit=argument)
except IndexError: await client.send_message(message.author, args[1] + " messages ont bien été supprimés")
await client.send_message(message.author, "**[ERREUR]** Merci de fournir le paramètre du nombre de message à supprimer, je ne suis pas dans ta tête !") except IndexError:
await client.delete_message(message) await client.send_message(message.author, "**[ERREUR]** Merci de fournir le paramètre du nombre de message à supprimer, je ne suis pas dans ta tête !")
await client.delete_message(message)
else:
await client.send_message(message.channel, message.author.mention + "[**ERREUR**] Vous n'avez pas la permission d'executer cette commande")
elif op_cmd("changegame"): elif cmd("changegame"):
args = message.content.split("changegame ") if authadmin:
try: args = message.content.split("changegame ")
ngame = open('msg/game.txt','w') try:
ngame.write(args[1]) ngame = open('msg/game.txt','w')
ngame.close() ngame.write(args[1])
rgame = open('msg/game.txt').read() ngame.close()
await client.change_presence(game=discord.Game(name=rgame), status=discord.Status(status), afk=False) rgame = open('msg/game.txt').read()
await client.send_message(message.author, "Mon jeu joué à bien été changé en : " + rgame) await client.change_presence(game=discord.Game(name=rgame), status=discord.Status(status), afk=False)
await client.delete_message(message) await client.send_message(message.author, "Mon jeu joué à bien été changé en : " + rgame)
logger.info(message.author.name + ' changed the game played from tuxbot to : ' + args[1]) await client.delete_message(message)
except IndexError: logger.info(message.author.name + ' changed the game played from tuxbot to : ' + args[1])
await client.send_message(message.author, "**[ERREUR]** Merci de fournir le paramètre du jeu que je dois jouer, je ne suis pas dans ta tête !") except IndexError:
await client.delete_message(message) await client.send_message(message.author, "**[ERREUR]** Merci de fournir le paramètre du jeu que je dois jouer, je ne suis pas dans ta tête !")
await client.delete_message(message)
else:
await client.send_message(message.channel, message.author.mention + "[**ERREUR**] Vous n'avez pas la permission d'executer cette commande")
########################################### ###########################################
# # # #
@ -238,13 +255,13 @@ async def on_message(message):
await client.delete_message(wait) await client.delete_message(wait)
final = await client.send_message(message.channel, embed=em) final = await client.send_message(message.channel, embed=em)
for emoji in array_emoji: for emoji in arrays.array_emoji:
await client.add_reaction(final, emoji) await client.add_reaction(final, emoji)
res = await client.wait_for_reaction(message=final, user=message.author) res = await client.wait_for_reaction(message=final, user=message.author)
for emoji in array_emoji: for emoji in arrays.array_emoji:
num_emoji = array_emoji.index(emoji) num_emoji = arrays.array_emoji.index(emoji)
if res.reaction.emoji == emoji: if res.reaction.emoji == emoji:
args_ = results[num_emoji] args_ = results[num_emoji]
@ -272,7 +289,7 @@ async def on_message(message):
elif cmd("yt"): elif cmd("yt"):
await client.send_typing(message.channel) await client.send_typing(message.channel)
chaineyt = random.choice(youtube) chaineyt = random.choice(arrays.youtube)
ytname = chaineyt.split(",") ytname = chaineyt.split(",")
yturl = chaineyt.split(": ") yturl = chaineyt.split(": ")
ytname = ytname[0] ytname = ytname[0]
@ -325,22 +342,23 @@ async def on_message(message):
msg = await client.send_message(message.channel, "La piece est retombé sur " + piece) msg = await client.send_message(message.channel, "La piece est retombé sur " + piece)
elif cmd("joke"): ##Joke elif cmd("joke"): ##Joke
joke = random.choice(jokes) joke = random.choice(arrays.jokes)
await client.send_typing(message.channel) await client.send_typing(message.channel)
msg = await client.send_message(message.channel, message.author.mention + " " + joke) msg = await client.send_message(message.channel, message.author.mention + " " + joke)
elif cmd("ethylotest"): elif cmd("ethylotest"):
resultat = random.choice(policier) resultat = random.choice(arrays.policier)
await client.send_typing(message.channel) await client.send_typing(message.channel)
msg = await client.send_message(message.channel, message.author.mention + resultat) msg = await client.send_message(message.channel, message.author.mention + resultat)
elif cmd('randomcat'): ##Cat elif cmd('randomcat'): ##Cat
r = requests.get('http://random.cat/meow.php') r = requests.get('http://random.cat/meow.php')
await client.send_message(message.channel, message.author.mention + " " + r.json()['file']) await client.send_message(message.channel, message.author.mention + " " + r.json()['file'])
elif cmd('pokemon'): ##Pokemon elif cmd('pokemon'): ##Pokemon
await client.send_typing(message.channel) await client.send_typing(message.channel)
poke1 = random.choice(pokemon) poke1 = random.choice(arrays.pokemon)
poke2 = random.choice(pokemon) poke2 = random.choice(arrays.pokemon)
win = random.choice([str(poke1),str(poke2)]) win = random.choice([str(poke1),str(poke2)])
msg1 = await client.send_message(message.channel, '**Le combat Commence !**') msg1 = await client.send_message(message.channel, '**Le combat Commence !**')
msg2 = await client.send_message(message.channel, '📢 **Présentateur** : Les combatants sont : ' + str(poke1) + ' Contre ' + str(poke2)) msg2 = await client.send_message(message.channel, '📢 **Présentateur** : Les combatants sont : ' + str(poke1) + ' Contre ' + str(poke2))
@ -352,7 +370,24 @@ async def on_message(message):
await asyncio.sleep(1) await asyncio.sleep(1)
msg5 = await client.send_message(message.channel, '**📢 Présentateur** : **' + str(win) + '**') msg5 = await client.send_message(message.channel, '**📢 Présentateur** : **' + str(win) + '**')
if cmd("servers-list"):
nbmr = 0
msg = ""
for serveur in list(client.servers):
nbmr = nbmr + 1
msg = msg + "=> **{}** \n".format(serveur.name)
msg = msg + "{} se trouve sur **{} serveur(s)** au total !".format(client.user.name, nbmr)
em = discord.Embed(title='Liste des serveurs où se trouve ' + client.user.name, description=msg, colour=0x36D7B7)
em.set_author(name=client.user.name, icon_url=client.user.avatar_url)
await client.send_message(message.channel, embed=em)
elif cmd("count-members"):
nbmr = 0
for name in list(client.get_all_members()):
nbmr = nbmr + 1
msg = "Il y'a **{} membres** sur le serveur Discord **{}**".format(nbmr, message.server.name)
em = discord.Embed(title='Compteur de membres', description=msg, colour=0x9A12B3)
await client.send_message(message.channel, embed=em)
########################################### ###########################################
# # # #
@ -437,6 +472,84 @@ async def on_message(message):
except IndexError: except IndexError:
await client.send_message(message.channel, message.author.mention + " **[ERREUR]** Veuillez sélectionner une ville dans ``.clock list`` !") await client.send_message(message.channel, message.author.mention + " **[ERREUR]** Veuillez sélectionner une ville dans ``.clock list`` !")
###################
# IDENTIY SYSTEM #
###################
elif cmd("ci-register"):
cursor.execute("""INSERT INTO users(userid, username, usermention, useravatar, userbirth, cidate) VALUES(?, ?, ?, ?, ?, ?)""", (message.author.id, message.author.name, message.author.mention, message.author.avatar_url, message.author.created_at, message.timestamp))
conn.commit()
await client.send_message(message.channel, message.author.mention + "> **Votre carte d'intentité à été enregistrée !** Pour plus d'informations sur le système de carte d'indentité, tapez la commande ``{}ci-info`` !".format(prefix))
elif cmd("ci-setos"):
try:
args = message.content.split("ci-setos ")
cursor.execute("""UPDATE users SET os = ? WHERE usermention = ?""", (args[1], message.author.mention))
conn.commit()
await client.send_message(message.channel, message.author.mention + " l'information à bien été modifié sur votre carte d'identité !")
except IndexError:
await client.send_message(message.channel, message.author.mention + " [**ERREUR**] : Veuillez argumenter la commande !")
elif cmd("ci-setconf"):
try:
args = message.content.split("ci-setconf ")
cursor.execute("""UPDATE users SET config = ? WHERE usermention = ?""", (args[1], message.author.mention))
conn.commit()
await client.send_message(message.channel, message.author.mention + " l'information à bien été modifié sur votre carte d'identité !")
except IndexError:
await client.send_message(message.channel, message.author.mention + " [**ERREUR**] : Veuillez argumenter la commande !")
elif cmd("ci-setnation"):
try:
args = message.content.split("ci-setnation ")
cursor.execute("""UPDATE users SET pays = ? WHERE usermention = ?""", (args[1], message.author.mention))
conn.commit()
await client.send_message(message.channel, message.author.mention + " l'information à bien été modifié sur votre carte d'identité !")
except IndexError:
await client.send_message(message.channel, message.author.mention + " [**ERREUR**] : Veuillez argumenter la commande !")
elif cmd("ci-info"):
cinfomd = open('msg/ci-info.md').read()
em = discord.Embed(title='Aide sur la carte d\'identité', description=cinfomd.format(prefix), colour=0xDEADBF)
await client.send_message(message.channel, embed=em)
elif cmd("ci"):
try:
args = message.content.split("ci ")
cursor.execute("""SELECT userid, username, os, usermention, useravatar, userbirth, cidate, config, pays FROM users WHERE usermention=?""", (args[1],))
result = cursor.fetchone()
if not result:
await client.send_message(message.channel, message.author.mention + "> Désolé mais {} n'a pas fait enregistrer sa Carte d'indentité".format(args[1]))
else:
userid = result[0]
username = result[1]
if not result[2]:
os = "Non renseigné"
else:
os = result[2]
if not result[7]:
config = "Non renseigné"
else:
config = result[7]
if not result[8]:
pays = "Non renseigné"
else:
pays = result[8]
useravatar = result[4]
userbirth = result[5]
cidate = result[6]
userbirth = userbirth.split(" ")
cidate = cidate.split(" ")
em_content = open('msg/identity.md').read()
em = discord.Embed(title='Carte d\'Identité de '+ username, description=em_content.format(userid, username, os, useravatar, userbirth[0], cidate[0], config, pays), colour=0xDEADBF)
em.set_author(name=username, icon_url=useravatar)
await client.send_message(message.channel, embed=em)
except IndexError:
await client.send_message(message.channel, message.author.mention + " [**ERREUR**] : Veuillez argumenter la commande !")
########################################### ###########################################
@ -476,4 +589,7 @@ async def on_message(message):
if re.search(r'^(bonjour |salut |hello |bjr |slt |s\'lut)?([^ ]+ ){0,3}(qui s\'y conna(î|i)(t|s)|des gens|quelqu\'un|qqun|des personnes|du monde s\'y connait)[^\?]+\?$', message.content): if re.search(r'^(bonjour |salut |hello |bjr |slt |s\'lut)?([^ ]+ ){0,3}(qui s\'y conna(î|i)(t|s)|des gens|quelqu\'un|qqun|des personnes|du monde s\'y connait)[^\?]+\?$', message.content):
await client.send_message(message.channel, ":question: N'hésite pas à poser ta question directement " + message.author.mention + ", il n'est pas utile de demander si quelqu'un connait quelque chose avant.") await client.send_message(message.channel, ":question: N'hésite pas à poser ta question directement " + message.author.mention + ", il n'est pas utile de demander si quelqu'un connait quelque chose avant.")
if message.content == message.content.upper() and not message.author.bot:
if len(message.content) > 5:
await client.send_message(message.channel, message.author.mention + " pas que des capitales dans ton message quand même !")
client.run(token) client.run(token)

View file

View file

View file

View file

8
msg/ci-info.md Normal file
View file

@ -0,0 +1,8 @@
La carte d'identité est un petit système dans tuxbot permetant de vous démarquer de vos amis en ayant la possibilité d'y renseigner plusieurs informations !
**Liste des commandes : **
-> {0}ci _@pseudo_ : Affiche la carte d'identité de _pseudo_
-> {0}ci-register : Vous enregistre dans la base de donnée des cartes d'identité
-> {0}ci-setos _nom de l'os_ : Défini le système d'exploitation (affiché sur la CI)
-> {0}ci-setconf _votre configuration pc_ : Défini la configuration de votre ordinateur (affiché sur la CI)
-> {0}ci-setnation : Défini votre Pays (affiché sur la CI)

View file

@ -1 +1 @@
test passer une batterie de test

View file

@ -3,6 +3,7 @@
-> {0}info : affiche des informations sur le bot -> {0}info : affiche des informations sur le bot
-> {0}help : affiche l'aide -> {0}help : affiche l'aide
-> {0}search help : affiche l'aide sur les commandes de recherche -> {0}search help : affiche l'aide sur les commandes de recherche
-> {0}ci-info : affiche l'aide et des infos sur le système de carte d'identité
-> {0}clock list: affiche la liste des horloges des villes -> {0}clock list: affiche la liste des horloges des villes
-> {0}ping : Ping le bot -> {0}ping : Ping le bot
-> {0}github : Affiche le repos Github du Bot :heart: -> {0}github : Affiche le repos Github du Bot :heart:
@ -12,16 +13,24 @@
-> {0}back : signaler son retour -> {0}back : signaler son retour
-> {0}clock _ville_: Affiche l'heure et quelques infos sur la ville en question -> {0}clock _ville_: Affiche l'heure et quelques infos sur la ville en question
-> {0}ytdiscover : découvrir des chaines youtube -> {0}ytdiscover : découvrir des chaines youtube
-> {0}servers-list : liste les serveurs où se trouve le bot
**Commandes Funs** **Commandes Funs**
-> {0}joke : affiche une blague (au hasard) -> {0}joke : affiche une blague (au hasard)
-> {0}ethylotest : simule un ethylotest détraqué (au hasard) -> {0}ethylotest : simule un ethylotest détraqué (au hasard)
-> {0}pokemon : Lance un combat de pokémons (au hasard) -> {0}pokemon : Lance un combat de pokémons (au hasard)
-> {0}coin : fait un pile ou face -> {0}coin : fait un pile ou face
-> {0}randomcat : affiche des image de chats :hearth: -> {0}randomcat : affiche des image de chats :heart:
**Commandes Carte d'Identité**
-> {0}ci _@pseudo_ : Affiche la carte d'identité de _pseudo_
-> {0}ci-register : Vous enregistre dans la base de donnée des cartes d'identité
-> {0}ci-setos _nom de l'os_ : Défini le système d'exploitation (affiché sur la CI)
-> {0}ci-setconf _votre configuration pc_ : Défini la configuration de votre ordinateur (affiché sur la CI)
-> {0}ci-setnation : Défini votre Pays (affiché sur la CI)
** Commandes d'administration ** ** Commandes d'administration **
-> {0}say _votre message_ : fait le bot écrire -> {0}say _votre message_ : fait le bot écrire
-> {0}clear _nombre_ : Supprime _nombre_ de messages -> {0}clear _nombre_ : Supprime _nombre_ de messages
-> {0}changegame _votre texte_ : Change le jeu joué par le Bot') -> {0}changegame _votre texte_ : Change le jeu joué par le Bot
-> {0}sendlogs : Envoie le fichier de Log du bot par MP -> {0}sendlogs : Envoie le fichier de Log du bot par MP

9
msg/identity.md Normal file
View file

@ -0,0 +1,9 @@
**ID** : {0}
**Nom** : {1}
**Système d'exploitation** : {2}
**Configuration Système** : {6}
**Lien vers avatar** : [Cliquer pour accèder]({3})
**Date de naissance** : {4}
**Pays** : {7}
_Date de fabrication de la carte : {5}_

View file

@ -6,7 +6,7 @@
└> Api : [discord.py](https://github.com/Rapptz/discord.py) └> Api : [discord.py](https://github.com/Rapptz/discord.py)
==> Serveur de Test: ==> Serveur de Test:
└> Ordinateur de Outout sous [Kali Linux 2](https://wwww.kali.org/) └> Ordinateur de Outout sous [Ubuntu 16.04 LTS](http://releases.ubuntu.com/16.04/)
└> Version de Python : [3.5.2](http://www.python.org/) └> Version de Python : [3.5.2](http://www.python.org/)
==> Serveur de Prod : ==> Serveur de Prod :

7
requirements.txt Normal file
View file

@ -0,0 +1,7 @@
discord.py
asyncio
beautifulsoup4
bs4
pytz
requests
wikipedia