Удаление матов в который есть знаки (ТЕ?СТ)
Нужно, чтоб бот блокал маты, в который есть символы. Код:
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).lower() for word in message.content.lower().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('утютютют а вот так ни нада дядя')
Проще говоря чтобы он удалял символ и проверял слово. Например: те!ст. Нужно убрать знак ! и проверить слово. У меня сейчас работает проверка на маты если они с заглавной буквы. Например ТтТеСТ. Сдесь он все переводит в нижний регистр (simplify_word(word).lower() for word in message.content.lower().split()) потом убирает похожие буквы (тттест - тест) и проверяет есть ли такое слово.
Источник: Stack Overflow на русском