我正在齿轮上运行一个机器人事件,如果消息不在正确的频道中,我想删除该消息。但是,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()
是一个例行程序。
答案 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()
参考: