#python #discord.py-rewrite
#python #discord.py
Вопрос:
Я пишу скрипт для удаления сообщений 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')
ТОКЕН_STRING заменяется на токен аутентификации в реальном приложении.
Я не уверен, как проверить наличие слова в содержимом сообщения. Я пробовал следующие вещи:
if word in message.content:
word in message.content
message.content == word
- …
но пока ничего не решило проблему. Есть идеи о том, как это решить?
Ответ №1:
Для простоты я сократил список слов в черном списке, чтобы его было легче читать. Если вам нужны какие-либо дополнительные пояснения по любому вопросу, дайте мне знать, но приведенный ниже код должен быть довольно простым.
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 :(")