Поиск
11 мес.

Защищаем Telegram бота от спама: важность и методы

Когда дело доходит до публикации Telegram бота, одним из ключевых аспектов безопасности является защита от спама и автоматизированных атак.

Все материалы категории
Все материалы

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

Когда дело доходит до публикации Telegram бота, одним из ключевых аспектов безопасности является защита от спама и автоматизированных атак. Проигнорирование этого аспекта может привести к перегрузке бота, его медленной работе, а в некоторых случаях и к блокировке в Telegram из-за подозрительной активности.

Вот простой пример реализации простейшей антиспам-системы на Python с помощью библиотеки python-telegram-bot:


from telegram

ext import Updater, MessageHandler, Filters
from time import time

# Класс контроля за частотой сообщений пользователей
class RateLimiter:
    def init(self, max_messages, window_size):
        # Максимальное количество сообщений
        self.max_messages = max_messages
        # Временное окно в секундах
        self.window_size = window_size
        # Словарь для хранения времени последних сообщений от пользователей
        self.user_messages = {}

    def limit(self, message):
        user_id = message.from_user.id
        current_time = time()

        # Обновляем очередь сообщений пользователя
        if user_id not in self.user_messages:
            self.user_messages[user_id] = []

        # Удаляем устаревшие сообщения с учетом временного окна
        self.user_messages[user_id] = [msg_time for msg_time in self.user_messages[user_id] if current_time - msg_time < self.window_size]

        # Добавляем время текущего сообщения
        self.user_messages[user_id].append(current_time)

        # Проверяем, не превышено ли количество сообщений
        return len(self.user_messages[user_id]) <= self.max_messages

# Функция обработки сообщения
def handle_message(update, context):
    update.message.reply_text("Ваше сообщение получено!")

# Токен вашего бота
TELEGRAM_BOT_TOKEN = 'YOUR_BOT_TOKEN'

# Инициализируем Updater и Dispatcher
updater = Updater(TELEGRAM_BOT_TOKEN, use_context=True)
dp = updater.dispatcher

# Создаем объект RateLimiter
rate_limiter = RateLimiter(max_messages=5, window_size=60)  # Не более 5 сообщений в минуту на пользователя

# Добавляем обработчик сообщений с лимитированием
dp.add_handler(MessageHandler(Filters.text & (~Filters.command), handle_message, filters=rate_limiter.limit))

# Запускаем бота
updater.start_polling()
updater.idle()

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

Поиск по сайту

Поиск

Вход в аккаунт