Discord.py ctx.message.delete()在嵌齿轮中引发错误

时间:2019-10-16 04:03:19

标签: python discord.py

我最近将我的机器人转移到了齿轮上,但是随之而来的是一些麻烦。我有一个命令,使机器人在您调用该命令时会重复一条消息。我希望机器人删除调用该消息的命令,然后发送您键入的消息。我有这个(注意:当它不在齿轮中时,它会起作用):

@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)

您不需要这个。

2 个答案:

答案 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}```")