Определение мата
Как сделать так чтоб бот определял мат даже если есть заглавные буквы? например:
import discord
from discord.ext import commands
bot = commands.Bot(command_prefix='!', intents=discord.Intents.all())
ban_words = ['мат']
def simplify_word(word):
last_letter = ''
result = ''
for letter in word:
if letter != last_letter:
last_letter = letter
result += letter
return result
@bot.event
async def on_message(message):
if message.author.bot:
return
msg_words = [simplify_word(word) for word in message.content.split()]
# для каждого слова првоеряем, содержится ли оно в запрещенном списке
for word in msg_words:
if word in ban_words:
try:
await message.delete()
except:
print('Ошибка при удалении сообщения')
await message.channel.send(f'{message.author.mention} **написал запрещенное слово:** *{word}*')
return
bot.run('токен')
Если написать слово Мат то он не определит его как плохое слово и не удалит его:(
Ответы (2 шт):
Автор решения: q r t s
→ Ссылка
Используйте метод .lower():
for word in msg_words:
if word.lower() in ban_words:
Автор решения: Андрей
→ Ссылка
Я понял как снизить регистр! Нужно было написать msg_words = [simplify_word(word).lower() for word in message.content.lower().split()] то есть за раннее до проверки снизить регистр. При этом я не знаю, нужно ли везде и в simplify_word(word) и в message.content писать lower(). Но всем большое спасибо!