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 :
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)
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))
Avec Visual Studio Code, j'ai async et ctx de surligné en rouge dans le fichier clear.py

Cordialement.