我拥有它,因此我的机器人删除了并输入了带有错误词的消息。由于某种原因,如果我连续执行2个坏词,它将删除第一条消息,并且dm是我一次,然后删除另外2条消息,并且dm是我两次。有人可以告诉我我在做什么错吗?
@client.event
async def on_message(message):
bad_words = ['bad','bot']
user = client.get_user(647589407515213866)
for word in bad_words:
if (message.content.count(word) > 0) and (message.content.count(word) < 2):
print("A bad word was said")
await message.channel.purge(limit=1)
await user.send(f'User {message.author} wrote {word}')
else:
await client.process_commands(message)
有人可以告诉我为什么它会堆积消息以及如何解决它吗?
答案 0 :(得分:1)
您应该使用message.delete
而不是从频道中清除。如果每个坏词都为真,则应删除该消息,而不是删除每个坏词的消息。我们可以在for
子句中使用else
循环:
@client.event
async def on_message(message):
bad_words = ['bad','bot']
user = client.get_user(647589407515213866)
for word in bad_words:
if 0 < message.content.count(word) < 2:
print("A bad word was said")
await user.send(f'User {message.author} wrote {word}')
await message.delete()
break
else:
await client.process_commands(message)
此外,大于0且小于2仅为1,因此您可以检查一下。