📖 Полезные статьи

← На главную · ← В статьи

Bot для TG, который удаляет по ключевым словам

Установим pip (можно также еще и screen), а из него все остальное:

📁 Разное #telegram#python 2026-10-21

Установим библиотеку python-telegram-bot (актуальная версия 21+):

pip install python-telegram-bot

Теперь напишем код бота:

import logging

from telegram import Update
from telegram.ext import (
    ApplicationBuilder,
    CommandHandler,
    ContextTypes,
    MessageHandler,
    filters,
)

TOKEN = "YOUR_TOKEN_HERE"
KEYWORDS = ["bad_word_1", "bad_word_2"]  # слова, при которых сообщение удаляется

logging.basicConfig(
    format="%(asctime)s %(levelname)s %(message)s",
    level=logging.INFO,
)


async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    await update.message.reply_text(
        "Привет! Я бот, который удаляет сообщения по ключевым словам."
    )


async def delete_messages(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    message = update.effective_message
    if message is None or not message.text:
        return

    text = message.text.lower()
    if any(keyword.lower() in text for keyword in KEYWORDS):
        try:
            await message.delete()
        except Exception as error:
            logging.warning("Не удалось удалить сообщение: %s", error)


def main() -> None:
    app = ApplicationBuilder().token(TOKEN).build()

    app.add_handler(CommandHandler("start", start))
    app.add_handler(
        MessageHandler(filters.TEXT & ~filters.COMMAND, delete_messages)
    )

    app.run_polling()


if __name__ == "__main__":
    main()

Сохраняем файл как bot.py и запускаем:

python3 bot.py

Важно:

  • бот должен быть администратором чата, иначе удалить чужие сообщения не получится;
  • в группах нужно отключить privacy mode: @BotFather → /setprivacy → Disable, иначе бот не видит обычные сообщения;
  • ключевые слова сравниваются без учёта регистра.