Бот discord (discord.py) фильтр матов
Ребят, подскажите, пожалуйста, как можно реализовать такую штуку. У меня есть бот на discord. py. Он берет сообщение из чата, переводит в нижний регистр, убирает знаки препинания и сравнивает, есть ли сходство msg_words (нашего полученного слова) в списке ban_words. Все прекрасно, однако есть но. Например, у нас есть слово стол. Его можно написать так: стоАААл или так: сАААтол. При выполнении моей программы остается это: стоал или это сатол. Но ТАКОГО СЛОВА НЕТ В СПИСКЕ! Есть только стол. И поэтому мне надо, чтобы он находил схожесть полученного слова с banwords в ПРОЦЕНТАХ! и если оно больше 80%, то тогда программа выводила: Щас по губам отшлепаю! Вот сама программа:
import discord
from discord.ext import commands
import os, sqlite3
import string, json
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().translate(str.maketrans('','', string.punctuation))) 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} **Щас по губам отшлепаю!**')
return
bot.run('TOKEN')
Ответы (1 шт):
Я думаю вам стоит посмотреть в сторону регулярных выражений. Модуль re