我刚刚完成了一个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的书。
但是我离题了,有什么想法吗?
答案 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为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