删除不和谐频道中某些作者以外的所有消息

时间:2020-07-08 16:33:46

标签: python python-3.x discord discord.py

我刚刚完成了一个purge命令,该命令在启用时使用cog来不断删除通道中的消息,而在禁用时则不行(toggle命令)。我现在也想添加一件事,那就是只清除不是我发送的消息。

我知道这可以通过一个简单的if语句完成,但是我无法从discord.py API中找出需要使用的内容。我一直在尝试使用message.author.id != "id"及其它的其他变体,但它似乎不起作用。顺便说一下,我正在我的cogs.py中进行所有操作。我看过其他有关在API中使用日志内容的堆栈溢出文章,以及删除其中带有某些关键字的消息的示例,但是它们都没有确切说明message.author东西的使用以及它是字符串还是整数。 ,或者实际上,如果我应该使用其他东西。

这是我目前针对机器人的代码,尝试达到我的目标

    @commands.Cog.listener()
async def on_message(self, message):
    try:
        if self.channels[message.channel]:
            await message.channel.purge(limit=999)
    except:
        pass

我尝试过这样的事情:

    @commands.Cog.listener()
async def on_message(self, message):
    try:
        if message.author != 396025519398977548 and self[message.channel]:
            await message.delete(message.channel)
    except:
        pass

但是我错过了一些东西,哈哈。对于python来说还是有点新手,但是我不妨通过观看示例等来学习。这种学习方式很容易,但是显然我正在读一本关于python的书。

但是我离题了,有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以检查作者姓名或ID。您弄错的是该message.author.id是整数而不是字符串。

  • 作者姓名:

例如,如果您的不和谐标签为Yolo#5236,则必须检查message.author =='Yolo'

@commands.Cog.listener()
async def on_message(self, message):
    try:
        if self.channels[message.channel] and message.author == 'Your discord name':
            await message.delete()
    except:
        pass
  • 带有作者的ID

例如,如果您的ID为48864468684,则必须检查message.author.id == 48864468684

@commands.Cog.listener()
async def on_message(self, message):
    try:
        if self.channels[message.channel] and message.author.id == id:
            await message.delete()
    except:
        pass