Определение мата

Рейтинг: 0Ответов: 2Опубликовано: 12.03.2023

Как сделать так чтоб бот определял мат даже если есть заглавные буквы? например:

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('токен')

Если написать слово Мат то он не определит его как плохое слово и не удалит его:(

Ответы

▲ 0

Используйте метод .lower():

    for word in msg_words:
        if word.lower() in ban_words:
▲ 0

Я понял как снизить регистр! Нужно было написать msg_words = [simplify_word(word).lower() for word in message.content.lower().split()] то есть за раннее до проверки снизить регистр. При этом я не знаю, нужно ли везде и в simplify_word(word) и в message.content писать lower(). Но всем большое спасибо!