我最近将我的机器人转移到了齿轮上,但是随之而来的是一些麻烦。我有一个命令,使机器人在您调用该命令时会重复一条消息。我希望机器人删除调用该消息的命令,然后发送您键入的消息。我有这个(注意:当它不在齿轮中时,它会起作用):
@commands.command()
async def say(self, ctx, *, arg=None):
if arg is None:
await ctx.send(f'{ctx.message.author.mention} Tell me what to say!')
if len(arg) > 50:
await ctx.send(f"{ctx.message.author.mention} That's too long!")
else:
await ctx.message.delete()
await ctx.send(f'''{arg}
- {ctx.message.author.mention}''')
代码运行并删除调用该命令的消息并发送该消息,但仍会引发错误:
discord.errors.NotFound: 404 NOT FOUND (error code: 10008): Unknown Message
有什么方法可以解决此问题?再次执行该命令,但仍然会引发错误。
谢谢。
编辑:经过一些测试,我认为我已经找到了问题。我的代码的另一个问题是导致此问题,此代码本身并未引起错误。
如果其他人转移到嵌齿轮时遇到类似的问题,那么我的代码在嵌齿轮中有一个on_message侦听器。我错误地添加了await self.client.process_commands(message)
您不需要这个。
答案 0 :(得分:1)
引起该错误的原因是,您试图获取刚刚删除的消息的作者。将ctx.message.author.mention
更改为ctx.author.mention
应该可以解决此错误。
@commands.command()
async def say(self , ctx , * , arg=""):
if arg == "":
await ctx.send(f'{ctx.author.mention} Tell me what to say!')
elif len(arg) > 50:
await ctx.send(f"{ctx.author.mention} That's too long!")
else:
await ctx.message.delete()
await ctx.send(f"```{arg}
- {ctx.author.mention}```")
祝你好运! :D
答案 1 :(得分:0)
尝试一下此代码。
@commands.command()
async def say(self, ctx, *, arg=""):
if arg == "":
await ctx.send(f'{ctx.message.author.mention} Tell me what to say!')
elif len(arg) > 50:
await ctx.send(f"{ctx.message.author.mention} That's too long!")
else:
await ctx.message.delete()
await ctx.send(f"```{arg}
- {ctx.message.author.mention}```")