嘿,我的代码命令 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.")
谢谢你的帮助
答案 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 可以更好地为您自动完成