我从bad_list中写单词,但机器人没有删除它们,我做错了什么?
bad_list = ['toy', 'hack']
@client.event
async def on_message( message ):
await client.process_commands( message )
msg = message.content.lower()
if msg in bad_list:
await message.delete()
await message.author.send(embed = discord.Embed(description = f'{message.author},такие слова не допустимы!',color = 0xff0000))
命令行中没有错误
在此处输入图像描述
将存储在msg
中的完整消息与bad_list
中的单词进行比较。只有当评论仅由列表中的一个单词组成时,才会出现这种情况。
相反,您应该检查是否有任何不好的单词出现在消息中。为此,您必须更改if语句:
is_bad = False
for w in bad_list:
if w in msg: is_bad=True
if is_bad:
await message.delete()
await message.author.send(embed = discord.Embed(description = f'{message.author},такие слова не допустимы!',color = 0xff0000))
使用此修改,程序将搜索消息中的任何坏词,并在检测到坏词后立即切换到删除。
不过,还有一个问题。如果消息包含的单词只包含这些字符串而不是坏单词,则它也将被删除(例如:枷锁、latoya(。你最好搜索前面有空格的单词。所以,它只会删除黑客,黑客,黑客。。。
if ' '+w in msg: is_bad=True