Бот который матерится в Телеграмме

Я хотел бы узнать, как сделать определение мата в сообщениях в группе Telegram. Обратился за помощью, т.к. мои методы очень сырые практически неработающие. Мой код удаляет все сообщения со словом в списке. Пример: words = [testing, testers], при отправлении сообщения «test» — оно тоже удалится. Вот сам код:

words = [‘запрещённые слова’] for i in range(0, len(words)): if words[i] in message.text.lower(): try: bot.delete_message(message.chat.id, message.message_id, ) except OSError: print(«Ошибка.») time.sleep(3) bot.delete_message(message.chat.id, message.message_id)

Мне же нужно, чтобы бот удалял именно нецензурные слова, и мог определять их даже если слово выглядит вот так: «test.ing», «teste rs» и т.д. Надеюсь на фидбек, заранее спасибо.

Отслеживать
задан 9 дек 2021 в 20:05
74 5 5 бронзовых знаков
Не надо страдать ерундой и идти у ханжей на поводу
10 дек 2021 в 23:32

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Тут либо нейросеть написать, либо сделать очень большой список матов.

Лучшие Боты в Телеграмме. Часть 2. Защита от спама в чате. Модераторы чатов в помощь для админов

Так как плохие слова русские люди могут написать разными способами, начиная с замены на английские буквы, заканчивая теми же пробелами.

Однако я бы сделал проверку на часть мата. Например test in test1ng и так далее

Источник: ru.stackoverflow.com

Дерзкий telegram бот

Недавно, в попытках разобраться с nlp, мне пришла идея написать простого telegram бота, который будет разговаривать, как дерзкий гопник. То есть:

  • давать ответ по слову-триггеру, как «хочу», «короче», «нет» и т.д.;
  • отвечать дерзким вопросом на вопрос;
  • отвечать нецензурной рифмой;
  • если ничего не подходит и бот в замешательстве, отвечать злой фразой.
Еще по теме:  Как установить приложение мессенджер Телеграмм

Для имплементации был выбран JavaScript с ES6 и Flow. Возможно, Python подошёл бы лучше, так как под него существует больше стабильных и проверенных библиотек для nlp. Но для JS есть Az.js, которого вполне хватило.

Для работы с Telegram API был использован node-telegram-bot-api.

Осторожно, под катом присутствует нецензурная речь и детали реализации!

Часть с реализацией работы с Telegram API не сильно интересная, и про это уже написано множество статей, и её я опущу.

Начну сразу с того, как бот пытается найти подходящий ответ. Первый метод поиска ответа – слово-триггер:

user: Хочу новую машину!
bot: Хотеть невредно!

Для начала мы имеем список пар [regexp, ответ] :

const TRIGGERS = [ [/^к[оа]роч[ье]?$/i, ‘У кого короче, тот дома сидит!’], [/^нет$/i, ‘пира ответ!’], [/^хо(чу|тим|тят|тел|тела)$/i, ‘Хотеть невредно!’], ];

Потом мы должны разбить сообщение от пользователя на слова:

ТОП-10 ТЕЛЕГРАМ БОТОВ для каждого


const getWords = (text: string): string[] => Az.Tokens(text) .tokens .filter(() => type === Az.Tokens.WORD) .map(() => text.substr(st, length).toLowerCase());

Пройти по всем триггерам и вернуть возможные ответы:

const getByWordTrigger = function*(text: string): Iterable < for (const word of getWords(text)) < for (const [regexp, answer] of constants.TRIGGERS) < if (word.match(regexp)) < yield answer; >> > >;

Вышло очень просто. Теперь пришло время второго метода поиска ответа – отвечать дерзким вопросом на вопрос:

user: Когда мы уже пойдём домой?
bot: А тебя ебёт?

Для того чтобы определить, является ли сообщение вопросом, мы должны проверить его на наличие вопросительного знака в конце и на наличие вопросительных слов, как «когда», «где» и т.д.:

const getAnswerToQuestion = (text: string): string[] => < if (text.trim().endsWith(‘?’)) < return [constants.ANSWER_TO_QUESTION]; >const questionWords = getWords(text) .map((word) => Az.Morph(word)) .filter((morphs) => morphs.length morphs[0].tag.Ques); if (questionWords.length) < return [constants.ANSWER_TO_QUESTION]; >else < return []; >>;

Еще по теме:  Имя пользователя в Телеграмме придумать на английском эгоистка

Так, в случае вопроса, бот вернёт захардкоженый constants.ANSWER_TO_QUESTION .

Третий метод поиска ответа – ответ нецензурной рифмой. Этот метод наиболее сложный:

user: хочу в Австрию!
bot: хуявстрию
user: у него есть трактор
bot: хуяктор

Вкратце: мы просто заменяем первый слог существительного или прилагательного на «ху» и трансформированную гласную из слога, как «о» → «ё», «а» → «я» и т.д.

Для начала мы должны уметь получать первый слог слова. Это несложно:

const getFirstSyllable = (word: string): string => < const result = []; let readVowel = false; for (const letter of word) < const isVowel = constants.VOWELS.indexOf(letter) !== -1; if (readVowel !isVowel) < break; >if (isVowel) < readVowel = true; >result.push(letter); > return result.join(»); >;

Потом нужно заменять первый слог на «ху» + гласную, если это возможно:

const getRhyme = (word: string): ?string => < const morphs = Az.Morph(word); if (!morphs.length) < return; >const = morphs[0]; if (!tag.NOUN !tag.ADJF) < return; >const syllable = getFirstSyllable(word); if (!syllable || syllable === word) < return; >const prefix = constants.VOWEL_TO_RHYME[last(syllable)]; const postfix = word.substr(syllable.length); return `$$`; >;

И, наконец, возвращать все возможные рифмы для слов из сообщения:

const getRhymes = (text: string): string[] => getWords(text) .map(getRhyme) .filter(Boolean) .reverse();

Последний метод поиска ответа – отвечать в замешательстве грубой фразой:

user: wtf
bot: Чё?

Этот метод более чем простой, поэтому будет реализован в агрегирующей все методы функции:

export default (text: string): string[] => < const answers = uniq([ . getByWordTrigger(text), . getAnswerToQuestion(text), . getRhymes(text), ]); if (answers.length) < return answers; >else < return constants.NO_ANSWERS; >>;

Источник: habr.com

«Звукозавр» — Telegram-бот, который отругает любителей аудиосообщений

Создатели «Всратослава» выпустили нового бота для Telegram со звучным названием «Звукозавр». После добавлении в групповой чат он будет отвечать на каждое аудиосообщение, доходчиво объясняя, что лучше воспользоваться клавиатурой. Хамство, ругань и маты прилагаются.

Еще по теме:  Нацди ТГ по айди

Красноречия «Звукозавру» не занимать, но при необходимости вы можете предложить свой вариант ответа на аудиосообщения. Делается это при помощи единственной кнопки в меню бота.

А как вы относитесь к голосовым сообщениям? Расскажите в комментариях.

  • 10 ботов Telegram, которые упростят вашу жизнь и развлекут
  • Telegram-бот расскажет, по какой статье вас могут посадить
  • Этот Telegram-бот покажет ваши пароли, которые утекли в Сеть

Источник: lifehacker.ru

Рейтинг
( Пока оценок нет )
Загрузка ...