使用discord.py,我制作了一个黑名单来过滤某些单词,它似乎在删除用户图像,我不知道为什么

2024-05-14 03:33:43 发布

您现在位置:Python中文网/ 问答频道 /正文

代码:

#W A T C H E R
@bot.event
async def on_message(message):
  # L O G G I N G
  username = message.author.display_name
  msg = message.content
  with open('blacklist.txt', 'r') as f:
    blacklist = f.read()
    if message.author.bot:
      return
    elif msg.lower() in blacklist:
      await message.delete()
    else:
      await bot.process_commands(message)

该代码只是检查用户输入是否在黑名单单词列表中,并基于此删除或保留消息。但机器人会不断删除用户发布的图像,而不仅仅是黑名单类别中列出的单词

自动删除任何频道中的用户图像


Tags: 代码用户图像eventmessageasyncondef
1条回答
网友
1楼 · 发布于 2024-05-14 03:33:43

当他们发送图像时,他们很可能不发送任何内容,因此msg.lower()是一个空字符串,并且空字符串总是在任何字符串中

>>> "" in "some words here"
True

考虑检查内容是否在黑名单的列表内,而不是单个字符串,例如

if msg.lower() in blacklist.split():
    ...

str.split返回字符串中的单词列表:https://docs.python.org/3.8/library/stdtypes.html#str.split

或者更好的方法是在blacklist.split()上循环并检查是否有任何单词在msg.lower()内,例如if any(word for word in blacklist.split() if word in msg.lower())

相关问题 更多 >