Discord.py - 为什么我的命令禁令不起作用?

时间:2021-03-18 09:03:42

标签: python-3.x discord.py bots

嘿,我的代码命令 del 正常工作,但我不明白为什么我的其他命令禁令不能正常工作,你有一个想法吗?

def client():
    import discord
    default_intents = discord.Intents.default()
    default_intents.members = True

    client = discord.Client(intents = default_intents)
#☺démarrage du bot
    @client.event
    async def on_ready():
        print("ready !")
   
#commande de del
    @client.event
    async def on_message(message):
        try:
            if message.content.startswith("-del"):
                number = int(message.content.split()[1])
                messages = await message.channel.history(limit = number +1).flatten()
                
                for each_message in messages:
                    await each_message.delete()
        except:
            await message.channel.send('La commande "-del"demande un nombre comme argument.')
#commande de Ban
        try:
            if message.content.startswith("-ban"):
                user: discord.User = message.content.split()[1]
                reason = message.content.split()[2][-1]
                await discord.guild.ban(user, reason = reason)
                await message.channel.send(f"{user} à été ban pour la raison : {reason}")
        except:
            await message.channel.send("La fonction '-ban' demande l'utilisateur et la raison.")

谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

你的行await discord.guild.ban(user, reason = reason)错了,命令ban是公会对象的方法,不是公会模块,所以不知道在哪个公会做ban

回溯可能在 try/except 中丢失,因此您可以删除 try/except 子句以查看真正导致问题的原因。

解决方案是在消息 (https://discordpy.readthedocs.io/en/latest/api.html?highlight=message#discord.Message.guild) 中给出的公会对象上使用 ban 方法,这样它就会变成

await message.guild.ban(user, reason = reason)

此外,您可以随意输入函数或命令的参数(async def on_message(message): 将变为 async def on_message(message: Message):,这样您的 IDE 可以更好地为您自动完成

最后,您应该研究一下 Cogscommand 装饰器