删除没有ctx属性的消息

时间:2020-05-28 12:20:28

标签: python discord.py discord.py-rewrite

问题

我正在齿轮上运行一个机器人事件,如果消息不在正确的频道中,我想删除该消息。但是,on_message似乎仅带有messages参数,因此我无法删除在上下文中发送的消息:

 @commands.Cog.listener()
async def on_message(self, message):
    musicchannel = self.bot.get_channel(705116959804489898)
    if message.content.startswith('-p'):
        if message.channel.id == musicchannel.id:
            pass
        else:
            await message.channel.send("```ini\n[Music commands only in the appropriate channel]```", delete_aft$
            await asyncio.sleep(4)
            message.delete()

通常,您将拥有ctx参数,因此它像ctx.message.delete()一样简单,但是在这种情况下不起作用。

我尝试过的事情

我尝试使用self.bot.fetch_message(message.id)来获取消息,但是漫游器没有采用fetch_message()属性。

解决方案

以某种方式,我并没有立即注意到它,但是您所需要的只是await,因为.delete()是一个例行程序。

1 个答案:

答案 0 :(得分:1)

您所缺少的只是await。由于delete()是一个例程,因此您只需要修改该事件,即可:

@commands.Cog.listener()
async def on_message(self, message):
    musicchannel = self.bot.get_channel(705116959804489898)
    if message.content.startswith('-p'):
        if message.channel.id == musicchannel.id:
            pass
        else:
            #code
            await message.delete()

参考: