Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import discord
- import asyncio
- from random import *
- bot = discord.Client()
- class vaisseau():
- def __init__(self, nom, vaisseau_id, parties):
- self.nom = nom.strip()
- self.id = vaisseau_id
- self.parts = parties
- def display(self):
- message = discord.Embed(title=":rocket: "+self.nom,description="id ("+str(self.id)+")", color=0xff9900)
- message.add_field(name="Légende", value="Résistance\nPuissance de feu\nRecharge", inline=True)
- for i in self.parts:
- val = ""
- c=0
- for j in i:
- if c>0:
- val = val+"\n"+str(j)
- c+=1
- message.add_field(name=i[0], value=val, inline=True)
- return(message)
- def update(self,part,amount):
- for i in self.parts:
- if i[0] == part:
- try:
- i[1] -= int(amount)
- except ValueError:
- return(discord.Embed(title=":interrobang: Erreur",description="Veuillez rentrer un nombre", color=0xff0000))
- return(self.display())
- return(discord.Embed(title=":interrobang: Erreur",description="Composant introuvable", color=0xff0000))
- def getid(msg,pos):
- target_id = msg.split(" ")[pos]
- for i in my_vessels:
- if str(i.id) == str(target_id):
- return(i)
- return(discord.Embed(title=":interrobang: Erreur",description="Vaisseau Introuvable", color=0xff0000))
- def give_command(ship):
- command = ".new {}".format(ship.nom)
- for i in ship.parts:
- command += " "
- for j in i:
- command += str(j)+"!"
- command = command[:-1]
- return(discord.Embed(title=":information_source: Votre commande est chaude!",description=command, color=0xff0000))
- def roll(d):
- result = str(randint(0,int(d)))
- return(discord.Embed(title=":game_die: Lancement d'un D{}".format(str(d)),description="Résultat : {}".format(result), color=0x7686E2))
- def iroll(d,bonus):
- d=int(d)
- bonus=int(bonus)
- result = randint(0,d)+bonus
- if result <= 0:
- desc = ":x::x: Double échec critique"
- elif result < d/10:
- desc = ":x: Échec critique"
- elif result < d/2:
- desc = ":person_facepalming: Échec"
- elif result < 9*(d/10):
- desc = ":ok_hand: Réussite"
- elif result < 99*(d/100):
- desc = ":champagne_glass: Réussite critique:"
- elif result >= d:
- desc = ":champagne_glass::champagne_glass: Double réussite critique"
- return(discord.Embed(title=":game_die: Lancement d'un D{}".format(str(d)),description=desc, color=0x7686E2))
- my_vessels = []
- @bot.event
- async def on_ready():
- print("Nom : {}\nID: {}\n-------------------------\n".format(bot.user.name,bot.user.id))
- global display_channel
- display_channel = bot.get_channel(ID channel d'affichage)
- com_channel = bot.get_channel(ID channel commandes)
- await com_channel.send(embed=discord.Embed(title=":loudspeaker: Beam me up Scotty!",description=".help pour afficher les commandes",color=0x00ff00))
- @bot.event
- async def on_message(msg):
- if msg.author.name != bot.user.name:
- print("({}) {} >> {}".format(msg.created_at,msg.author,msg.content))
- if msg.content == "ping":
- await display_channel.send("I'm here Capt'n!!")
- if ".display" in msg.content and ".displayall" not in msg.content:
- vessel = getid(msg.content,1)
- try:
- await display_channel.send(embed=vessel.display())
- await msg.channel.send(embed=vessel.display())
- except AttributeError:
- await display_channel.send("Vaisseau non trouvé")
- await msg.channel.send("Vaisseau non trouvé")
- if ".displayall" == msg.content:
- for i in my_vessels:
- await display_channel.send(embed=i.display())
- await msg.channel.send(embed=i.display())
- if ".damage" in msg.content:
- vessel = getid(msg.content,1)
- part = msg.content.split(" ")[2]
- amount = msg.content.split(" ")[3]
- try:
- await display_channel.send(embed=vessel.update(part,amount))
- await msg.channel.send(embed=vessel.update(part,amount))
- except AttributeError:
- await display_channel.send(embed=getid(msg.content,1))
- await msg.channel.send(embed=getid(msg.content,1))
- if ".destroy" in msg.content:
- vessel = getid(msg.content,1)
- await display_channel.send(embed=discord.Embed(title=":boom: BOOM!!",description="le {} à été détruit".format(vessel.nom),color=0xff0000))
- await msg.channel.send(embed=discord.Embed(title=":boom: BOOM!!",description="le {} à été détruit".format(vessel.nom),color=0xff0000))
- del my_vessels[vessel.id]
- if ".roll" in msg.content:
- d = msg.content.split(" ")[1]
- result = roll(d)
- await display_channel.send(embed=result)
- await msg.channel.send(embed=result)
- if ".sroll" in msg.content :
- d = msg.content.split(" ")[1]
- result = roll(d)
- await msg.channel.send(embed=result)
- if ".iroll" in msg.content :
- d = msg.content.split(" ")[1]
- try:
- bonus = msg.content.split(" ")[2]
- except IndexError:
- bonus = 0
- result = iroll(d,bonus)
- await msg.channel.send(embed=result)
- if "s" not in msg.content:
- await display_channel.send(embed=result)
- if ".gimme" in msg.content and ".gimmeall" != msg.content:
- try:
- await msg.channel.send(embed=give_command(getid(msg.content,1)))
- except AttributeError:
- await msg.channel.send(embed=getid(msg.content,1))
- if ".gimmeall" == msg.content:
- for i in my_vessels:
- await msg.channel.send(embed=give_command(i))
- if ".reset" == msg.content:
- my_vessels.clear()
- await display_channel.send(embed=discord.Embed(title="BOOM!!",description="Touts les vaisseaux ont été détruits".format(vessel.nom),color=0xff0000))
- await msg.channel.send(embed=discord.Embed(title="BOOM!!",description="Touts les vaisseaux ont été détruits".format(vessel.nom),color=0xff0000))
- if ".new" in msg.content:
- args = msg.content.split(" ")
- nom = args[1]
- parts = []
- c=0
- for i in args:
- if c>1:
- part_args = i.split("!")
- part_char = []
- for j in part_args:
- try:
- part_char.append(int(j))
- except:
- part_char.append(j)
- parts.append(part_char)
- c+=1
- my_vessels.append(vaisseau(nom,len(my_vessels),parts))
- await display_channel.send(embed=my_vessels[-1].display())
- await msg.channel.send(embed=my_vessels[-1].display())
- if ".help" == msg.content:
- message = discord.Embed(title="Liste des commandes",description="Toutes les commandes du bot ABYSSE", color=0x00ff00)
- message.add_field(name="Créer un vaisseau (Aucun espace dans les paramètre)", value=".new [nom] [nom_composant]![Resistance]![Puissance de Feu]![Recharge] [nom_composant]![Resistance]![Puissance de Feu]![Recharge]",inline=False)
- message.add_field(name="Afficher un vaisseau", value=".display [id]",inline=False)
- message.add_field(name="Afficher tout les vaisseaux", value=".displayall",inline=False)
- message.add_field(name="Affliger des dommages", value=".damage [id] [composant] [nombre de dégâts]",inline=False)
- message.add_field(name="Détruire un vaisseau", value=".destroy [id]",inline=False)
- message.add_field(name="Détruire tout les vaisseaux", value=".reset",inline=False)
- message.add_field(name="Donner la commande de sauvegarde", value=".gimme [id]",inline=False)
- message.add_field(name="Donner toutes les commandes de sauvegarde", value=".gimmeall",inline=False)
- message.add_field(name="Lancer un dé", value=".roll [D]",inline=False)
- message.add_field(name="Lancer secrètement un dé", value=".sroll [D]",inline=False)
- message.add_field(name="Calculer résultat action", value=".iroll [D] [Bonus]",inline=False)
- message.add_field(name="Calculer secrètement résultat action", value=".irolls [D] [Bonus]",inline=False)
- await msg.channel.send(embed=message)
- bot.run("Your Token")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement