Bot для TG, который удаляет по ключевым словам
Установим pip (можно также еще и screen), а из него все остальное:
Установим библиотеку 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, иначе бот не видит обычные сообщения; - ключевые слова сравниваются без учёта регистра.