python - DISCORD:使用 python 脚本删除包含黑名单单词的 Discord 消息
问题描述
我正在编写一个脚本来删除包含黑名单单词的 Discord 消息,但无法使其正常工作。我成功写了一个ping,但没有删除消息,并且控制台中没有显示错误:
# ----- Imports -----
import discord
from discord.ext import commands
# ----- Variables -----
client = commands.Bot(command_prefix = 't.')
blacklist = [
"nigger",
"nigga",
"slut",
"whore",
"cum",
"pussy",
"dick",
"penis",
"vagina",
"cock",
"faggot",
"nig",
"fag"
"test"]
# ----- Functions -----
# Function that runs when bot is logged in and ready
@client.event
async def on_ready():
print('Bot is ready.')
activity = discord.Game(name="t.ping")
await client.change_presence(status=discord.Status.online, activity=activity)
# Ping command
@client.command()
async def ping(ctx):
await ctx.send(f'Pong! {round(client.latency) * 1000}ms')
# function for deleting messages
@client.event
async def on_message(message):
for word in blacklist:
if word in message.content:
await message.delete(message)
await message.channel.send("Test")
# Token
client.run('TOKEN_STRING')
'TOKEN_STRING' 被替换为真实应用程序中的身份验证令牌。
我不确定如何在消息内容中测试单词的存在。我尝试过的事情是:
if word in message.content:
word in message.content
message.content == word
- ...
但到目前为止还没有解决这个问题。关于如何解决它的任何想法?
解决方案
为了简单起见,我确保缩短了黑名单中的单词列表,以便于阅读。如果您在任何时候需要任何进一步的解释,请告诉我,但下面的代码应该非常简单。
blacklist = [
"test",
"panic",
"five"
]
@client.event
async def on_message(message):
if any(word in message.content for word in blacklist):
await message.delete()
await message.channel.send("That word is not allowed :(")
推荐阅读
- google-sheets - searchRecord 未呈现正确的信息或需要多次显示
- flutter - `LinearProgressIndicator` - “BoxConstraints 强制使用无限宽度。” 错误
- php - PHP 对象数组(get() 方法不起作用)
- node.js - 使用时区查询 Mongo 的时间跨度(今天、过去 7 天等)
- html - 删除滚动时的 HTML 文本
- r - R - 带有数据框列表的正则表达式 (Regex)(仅第一个匹配项)
- .net - ExecuteReader 不支持 MultiExec
- svelte - 如何在 SvelteKit 中导入 Material Web 组件?
- android - 从 Room 数据库中查询单列并计算总和
- python - 有没有办法使用 for 循环遍历两列的值?