需要帮助过滤聊天,代码不起作用



我从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

相关内容

最新更新