Bonjour à tous,
Un collègue et moi, nous nous sommes lancé un défi afin de créer un petit bot Discord pour notre team.
Petite précision, nous débutons juste dans la programmation avec Python.
Celui-ci fonctionne parfaitement mais le code est tout stocké dans un même fichier.
Je souhaiterais pouvoir le scinder, pour pouvoir y travailler plus confortablement dessus, si nous venons à rajouter des fonctionnalités dans le futur.
Avec l'aide de différents tutos, j'arrive à appeler une fonction "print" simple, mais je n'arrive pas à appeler la commande "clear"....
Pourriez-vous me venir en aide et m'indiquer ce que j'ai mal fait dans le code?
Je pense que j'ai du me mélanger les pinceaux
Je vous mets en copie le code 2 fichiers.
Le fichier bot.py :
Le fichier clear.py :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 import re import datetime import os.path import discord import asyncio from discord.ext import commands from discord.utils import get from discord.ext.commands import Bot TOKEN = '' client = commands.Bot(command_prefix = '.') extensions =['clear'] @client.event async def on_ready(): print('Bot Online') if __name__ == '__main__': for extension in extensions: try: client.load_extension(extension) except Exception as error: print('{} cannot be loaded. [{}]'.format(extension, error)) client.run(TOKEN)
Avec Visual Studio Code, j'ai async et ctx de surligné en rouge dans le fichier clear.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import discord from discord.ext import commands client = commands.Bot(command_prefix = '.') class Clear: def __init__(self, client): self.client = client @commands.command(pass_context=True) async def clear(ctx, number): user_roles = [r.name.lower() for r in ctx.message.author.roles] if "modos" not in user_roles: return await client.say(":no_entry: "+ctx.message.author.mention+", tu n'as pas le droit d'exécuter cette commande... :no_entry:") pass mgs = [] number = int(number) + 1 numbervrai = number - 1 async for x in client.logs_from(ctx.message.channel, limit = number): mgs.append(x) await client.delete_messages(mgs) await client.say(":recycle: "+str(numbervrai)+" Message(s) supprimé(s) par "+ctx.message.author.mention+" :recycle:") def setup(client): client.add_cog(Clear(client))
Cordialement.
Partager