Advertisement
InfotrixScience

[PY][Bot Discord] JDR ABYSSE

Apr 8th, 2020
704
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.96 KB | None | 0 0
  1. import discord
  2. import asyncio
  3. from random import *
  4. bot = discord.Client()
  5.  
  6.  
  7. class vaisseau():
  8.     def __init__(self, nom, vaisseau_id, parties):
  9.         self.nom = nom.strip()
  10.         self.id = vaisseau_id
  11.         self.parts = parties
  12.        
  13.     def display(self):
  14.         message = discord.Embed(title=":rocket: "+self.nom,description="id ("+str(self.id)+")", color=0xff9900)
  15.         message.add_field(name="Légende", value="Résistance\nPuissance de feu\nRecharge", inline=True)
  16.         for i in self.parts:
  17.             val = ""
  18.             c=0
  19.             for j in i:
  20.                 if c>0:
  21.                     val = val+"\n"+str(j)
  22.                 c+=1
  23.             message.add_field(name=i[0], value=val, inline=True)
  24.         return(message)
  25.    
  26.     def update(self,part,amount):
  27.         for i in self.parts:
  28.             if i[0] == part:
  29.                 try:
  30.                     i[1] -= int(amount)
  31.                 except ValueError:
  32.                     return(discord.Embed(title=":interrobang: Erreur",description="Veuillez rentrer un nombre", color=0xff0000))
  33.                 return(self.display())
  34.         return(discord.Embed(title=":interrobang: Erreur",description="Composant introuvable", color=0xff0000))
  35.  
  36. def getid(msg,pos):
  37.     target_id = msg.split(" ")[pos]
  38.     for i in my_vessels:
  39.         if str(i.id) == str(target_id):
  40.             return(i)
  41.     return(discord.Embed(title=":interrobang: Erreur",description="Vaisseau Introuvable", color=0xff0000))
  42.  
  43. def give_command(ship):
  44.     command = ".new {}".format(ship.nom)
  45.     for i in ship.parts:
  46.         command += " "
  47.         for j in i:
  48.             command += str(j)+"!"
  49.         command = command[:-1]
  50.     return(discord.Embed(title=":information_source: Votre commande est chaude!",description=command, color=0xff0000))
  51.  
  52. def roll(d):
  53.     result = str(randint(0,int(d)))
  54.     return(discord.Embed(title=":game_die: Lancement d'un D{}".format(str(d)),description="Résultat : {}".format(result), color=0x7686E2))
  55.  
  56. def iroll(d,bonus):
  57.     d=int(d)
  58.     bonus=int(bonus)
  59.     result = randint(0,d)+bonus
  60.     if result <= 0:
  61.         desc = ":x::x: Double échec critique"
  62.     elif result < d/10:
  63.         desc = ":x: Échec critique"
  64.     elif result < d/2:
  65.         desc = ":person_facepalming: Échec"
  66.     elif result < 9*(d/10):
  67.         desc = ":ok_hand: Réussite"
  68.     elif result < 99*(d/100):
  69.         desc = ":champagne_glass: Réussite critique:"
  70.     elif result >= d:
  71.         desc = ":champagne_glass::champagne_glass: Double réussite critique"
  72.     return(discord.Embed(title=":game_die: Lancement d'un D{}".format(str(d)),description=desc, color=0x7686E2))
  73.  
  74. my_vessels = []
  75.  
  76. @bot.event
  77. async def on_ready():
  78.     print("Nom : {}\nID: {}\n-------------------------\n".format(bot.user.name,bot.user.id))
  79.     global display_channel
  80.     display_channel = bot.get_channel(ID channel d'affichage)
  81.  
  82.    com_channel = bot.get_channel(ID channel commandes)
  83.    await com_channel.send(embed=discord.Embed(title=":loudspeaker: Beam me up Scotty!",description=".help pour afficher les commandes",color=0x00ff00))
  84.  
  85. @bot.event
  86. async def on_message(msg):
  87.    if msg.author.name != bot.user.name:
  88.        print("({}) {} >> {}".format(msg.created_at,msg.author,msg.content))
  89.        if msg.content == "ping":
  90.            await display_channel.send("I'm here Capt'n!!")
  91.            
  92.        if ".display" in msg.content and ".displayall" not in msg.content:
  93.            vessel = getid(msg.content,1)
  94.            try:
  95.                await display_channel.send(embed=vessel.display())
  96.                await msg.channel.send(embed=vessel.display())
  97.            except AttributeError:
  98.                await display_channel.send("Vaisseau non trouvé")
  99.                await msg.channel.send("Vaisseau non trouvé")
  100.  
  101.        if ".displayall" == msg.content:
  102.            for i in my_vessels:
  103.                await display_channel.send(embed=i.display())
  104.                await msg.channel.send(embed=i.display())
  105.                
  106.        if ".damage" in msg.content:
  107.            vessel = getid(msg.content,1)
  108.            part = msg.content.split(" ")[2]
  109.            amount = msg.content.split(" ")[3]
  110.            try:
  111.                await display_channel.send(embed=vessel.update(part,amount))
  112.                await msg.channel.send(embed=vessel.update(part,amount))
  113.            except AttributeError:
  114.                await display_channel.send(embed=getid(msg.content,1))
  115.                await msg.channel.send(embed=getid(msg.content,1))
  116.  
  117.        if ".destroy" in msg.content:
  118.            vessel = getid(msg.content,1)
  119.            await display_channel.send(embed=discord.Embed(title=":boom: BOOM!!",description="le {} à été détruit".format(vessel.nom),color=0xff0000))
  120.            await msg.channel.send(embed=discord.Embed(title=":boom: BOOM!!",description="le {} à été détruit".format(vessel.nom),color=0xff0000))
  121.            del my_vessels[vessel.id]
  122.            
  123.        if ".roll" in msg.content:
  124.            d = msg.content.split(" ")[1]
  125.            result = roll(d)
  126.            await display_channel.send(embed=result)
  127.            await msg.channel.send(embed=result)
  128.            
  129.        if ".sroll" in msg.content :
  130.            d = msg.content.split(" ")[1]
  131.            result = roll(d)
  132.            await msg.channel.send(embed=result)
  133.            
  134.        if ".iroll" in msg.content :
  135.            d = msg.content.split(" ")[1]
  136.            try:
  137.                bonus = msg.content.split(" ")[2]
  138.            except IndexError:
  139.                bonus = 0
  140.            result = iroll(d,bonus)
  141.            await msg.channel.send(embed=result)
  142.            if "s" not in msg.content:
  143.                await display_channel.send(embed=result)
  144.            
  145.        if ".gimme" in msg.content and ".gimmeall" != msg.content:
  146.            try:
  147.                
  148.                await msg.channel.send(embed=give_command(getid(msg.content,1)))
  149.            except AttributeError:
  150.                
  151.                await msg.channel.send(embed=getid(msg.content,1))
  152.                
  153.        if ".gimmeall" == msg.content:
  154.            for i in my_vessels:
  155.                await msg.channel.send(embed=give_command(i))
  156.                
  157.        if ".reset" == msg.content:
  158.            my_vessels.clear()
  159.            await display_channel.send(embed=discord.Embed(title="BOOM!!",description="Touts les vaisseaux ont été détruits".format(vessel.nom),color=0xff0000))
  160.            await msg.channel.send(embed=discord.Embed(title="BOOM!!",description="Touts les vaisseaux ont été détruits".format(vessel.nom),color=0xff0000))
  161.            
  162.        if ".new" in msg.content:
  163.            args = msg.content.split(" ")
  164.            nom = args[1]
  165.            parts = []
  166.            c=0
  167.            for i in args:
  168.                if c>1:
  169.                    part_args = i.split("!")
  170.                    part_char = []
  171.                    for j in part_args:
  172.                        try:
  173.                            part_char.append(int(j))
  174.                        except:
  175.                            part_char.append(j)
  176.                    parts.append(part_char)
  177.                c+=1
  178.                
  179.            my_vessels.append(vaisseau(nom,len(my_vessels),parts))
  180.            await display_channel.send(embed=my_vessels[-1].display())
  181.            await msg.channel.send(embed=my_vessels[-1].display())
  182.            
  183.        if ".help" == msg.content:
  184.            message = discord.Embed(title="Liste des commandes",description="Toutes les commandes du bot ABYSSE", color=0x00ff00)
  185.            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)
  186.            message.add_field(name="Afficher un vaisseau", value=".display [id]",inline=False)
  187.            message.add_field(name="Afficher tout les vaisseaux", value=".displayall",inline=False)
  188.            message.add_field(name="Affliger des dommages", value=".damage [id] [composant] [nombre de dégâts]",inline=False)
  189.            message.add_field(name="Détruire un vaisseau", value=".destroy [id]",inline=False)
  190.            message.add_field(name="Détruire tout les vaisseaux", value=".reset",inline=False)
  191.            message.add_field(name="Donner la commande de sauvegarde", value=".gimme [id]",inline=False)
  192.            message.add_field(name="Donner toutes les commandes de sauvegarde", value=".gimmeall",inline=False)
  193.            message.add_field(name="Lancer un dé", value=".roll [D]",inline=False)
  194.            message.add_field(name="Lancer secrètement un dé", value=".sroll [D]",inline=False)
  195.            message.add_field(name="Calculer résultat action", value=".iroll [D] [Bonus]",inline=False)
  196.            message.add_field(name="Calculer secrètement résultat action", value=".irolls [D] [Bonus]",inline=False)
  197.            await msg.channel.send(embed=message)
  198.  
  199. bot.run("Your Token")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement