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 :aie:
Je vous mets en copie le code 2 fichiers.
Le fichier bot.py :
Le fichier clear.py :Code:
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.pyCode:
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.