使用Discord.py调用purge方法时出现参数数量不符错误求助
解决discord.py中
purge()方法的参数错误问题 嘿,我来帮你搞定这个问题!你遇到的错误根源很明确:discord.py的purge()方法不接受位置参数来指定删除消息的数量,而是需要通过limit这个关键字参数来传递数值。
你之前直接把num2c作为位置参数传给purge(),但这个方法的第一个位置参数其实是Python自动传递的self(也就是当前的TextChannel实例),这就导致你相当于传了两个位置参数——自然触发了"仅接受1个位置参数,却传入了2个"的报错。
具体修改方案
把你代码里的这一行:
await message.channel.purge(num2c)
改成:
await message.channel.purge(limit=num2c)
通过limit=明确指定参数名,就不会和自动传入的self冲突了,方法也能正确识别你要删除的消息数量。
另外给你个小优化建议:如果用户输入!cleanup后面没有数字,num2c会被转为0,这时候purge(limit=0)不会删除任何消息。你可以加个简单判断让命令更健壮:
if message.content.startswith("!cleanup"): num2c = 0 try: num2c = int(message.content.replace("!cleanup", "").strip()) except ValueError: await message.channel.send("请在`!cleanup`后面输入一个有效的数字!") return if num2c <= 0: await message.channel.send("请输入大于0的数字哦!") return print(num2c) await message.channel.purge(limit=num2c) cleanmessage = f"Cleared {num2c} Messages." await message.channel.send(cleanmessage)
这样就能处理用户输入非数字或者无效数字的情况啦~
内容的提问来源于stack exchange,提问作者Odd's Adventures
相关产品推荐
相关产品推荐

