Антиспам-бот Telegram на Gemini Flash: экономия 1000x vs GigaChat | AiManual
AiManual Logo Ai / Manual.
02 Апр 2026 Гайд

Как построить антиспам-бота для Telegram на Gemini Flash: экономия в 1000 раз против GigaChat

Пошаговый гайд по созданию антиспам-бота для Telegram на Gemini Flash. Сравнение стоимости с GigaChat: экономия в 1000 раз. Расчеты токенов, промпты, код и разв

Спам в Telegram: тихий ужас админов и кошельков

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

Но вот загвоздка: русскоязычные AI вроде GigaChat 3 дико дороги. Очень дороги. Настолько, что содержать антиспам-бота для активного чата может стоить больше, чем сам спам наносит ущерба.

А что если я скажу, что есть способ дешевле в 1000 раз? И быстрее. И проще.

Знакомьтесь: Gemini 3 Flash от Google. Младший брат Gemini Pro, который стоит копейки, но отлично справляется с классификацией текста. На 02.04.2026 это самая новая и оптимизированная версия для задач, где не нужны глубокие рассуждения - только быстрая и точная оценка.

Важно: все цифры и версии моделей актуальны на 02.04.2026. Если читаете это позже - проверьте обновления.

Почему GigaChat 3 разоряет, а Gemini Flash - нет

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

Модель Стоимость за 1K токенов (вход) Лимиты запросов Скорость ответа
Gemini 3 Flash (актуально на 02.04.2026) $0.0001 15 запросов в секунду на ключ ~200 мс
GigaChat 3 (актуально на 02.04.2026) $0.1 5 запросов в минуту на ключ ~2-5 секунд

Видите разницу? 1000 раз по стоимости. И в 60 раз по лимитам (если перевести в одинаковые единицы). GigaChat 3 просто не предназначен для массовой обработки сообщений в реальном времени - он для чатов и диалогов. А антиспам должен работать мгновенно и дешево.

Но как насчет качества? Gemini Flash справится с русским языком? Справится. В 2026 году поддержка языков у Google на высоте. И для задачи классификации "спам/не спам" не нужна глубокая эрудиция - нужно понять контекст и намерение.

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

Расчеты: сколько вы сэкономите на 1000 сообщений

Предположим, у вас чат с 10 000 сообщений в день. Средняя длина сообщения - 50 токенов (это около 40 слов на русском).

  • GigaChat 3: 10 000 * 50 = 500 000 токенов. Стоимость: 500 * $0.1 = $50 в день. Это $1500 в месяц. За антиспам!
  • Gemini Flash: те же 500 000 токенов обойдутся в 500 * $0.0001 = $0.05 в день. $1.5 в месяц.

Экономия: $1500 против $1.5. Это в 1000 раз. Даже если мои цифры отличаются от ваших реалий, порядок величины тот же.

А теперь перейдем к практике. Как собрать бота, который будет использовать эту экономию.

1 Готовим окружение и ключи

Первое: вам нужен Python 3.10 или выше. Установите библиотеки:

pip install python-telegram-bot google-generativeai python-dotenv

Второе: получите API ключ для Gemini. Идите в Google AI Studio (это не партнерская ссылка, а официальный ресурс). Создайте ключ. Он бесплатный, но с лимитами, которых хватит для начала.

Третье: создайте Telegram-бота через BotFather. Запишите токен.

Если вы новичок в создании ботов, рекомендую курс "Создание Telegram-бота" от Skillbox - там все разжевано от начала до конца.

2 Пишем скелет бота

Создайте файл bot.py. Импорты и базовая структура:

import os
import logging
from dotenv import load_dotenv
from telegram import Update
from telegram.ext import Application, MessageHandler, filters, ContextTypes
import google.generativeai as genai

load_dotenv()

TELEGRAM_TOKEN = os.getenv("TELEGRAM_TOKEN")
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")

genai.configure(api_key=GEMINI_API_KEY)
model = genai.GenerativeModel('gemini-3-flash')

logging.basicConfig(level=logging.INFO)

Мы используем python-telegram-bot версии 20.x (актуально на 02.04.2026). Обратите внимание: модель указана как gemini-3-flash. Это последняя версия на момент написания.

Если у вас возникают проблемы с доступом к API Google, возможно, вам поможет Gemini CLI Proxy - ваш личный шлюз для обхода ограничений.

3 Создаем промпт для антиспама

Вот где магия. Нам нужно научить Gemini отличать спам от нормальных сообщений. Используем few-shot промпт - дадим несколько примеров.

Промпт должен быть на русском, но с учетом, что Gemini обучена на множестве языков.

ANTISPAM_PROMPT = """
Ты - антиспам-фильтр для Telegram-чата. Твоя задача - анализировать сообщения и определять, являются ли они спамом.

Спам - это:
1. Реклама казино, криптовалют, финансовых пирамид.
2. Предложения "заработать быстро" с ссылками.
3. Массовые рассылки с призывом перейти по ссылке.
4. Сообщения с большим количеством эмодзи и заглавных букв.
5. Попытки выманить личные данные.

Не спам - это:
1. Обычные сообщения участников чата.
2. Вопросы, обсуждения, шутки.
3. Ссылки на известные и безопасные ресурсы (YouTube, GitHub, новости).
4. Картинки, голосовые, стикеры (если без спам-текста).

Примеры:
Сообщение: "ЗАРАБАТЫВАЙТЕ ОТ 1000$ В ДЕНЬ БЕЗ ВЛОЖЕНИЙ! ПЕРЕХОДИ ПО ССЫЛКЕ >>>"
Ответ: СПАМ

Сообщение: "Привет, ребята. Кто-нибудь знает хороший туторий по Python?"
Ответ: НЕ СПАМ

Сообщение: "Смотрите, какой прикольный кот: https://youtube.com/shorts/abc123"
Ответ: НЕ СПАМ

Сообщение: "СТАВКИ НА СПОРТ! ВСЕГДА ВЫИГРЫВАЙ! НАША КОМАНДА ПРОФЕССИОНАЛОВ!"
Ответ: СПАМ

А теперь проанализируй следующее сообщение и ответь только "СПАМ" или "НЕ СПАМ".

Сообщение: "{message_text}"
Ответ:
"""

Этот промпт дает контекст и примеры. Gemini Flash отлично справляется с такой задачей. Вам может потребоваться добавить больше примеров под ваш конкретный чат.

4 Функция проверки сообщения

Теперь напишем функцию, которая будет отправлять текст в Gemini и получать ответ.

async def check_spam(text: str) -> bool:
    """Проверяет, является ли сообщение спамом."""
    try:
        prompt = ANTISPAM_PROMPT.format(message_text=text)
        response = model.generate_content(prompt)
        result = response.text.strip().upper()
        logging.info(f"Сообщение: {text[:50]}... Результат: {result}")
        return "СПАМ" in result
    except Exception as e:
        logging.error(f"Ошибка при проверке спама: {e}")
        return False  # В случае ошибки лучше пропустить, чем заблокировать невиновного

Обратите внимание: мы используем асинхронность? Нет, потому что вызов Gemini API синхронный. Но мы можем запустить его в отдельном потоке, чтобы не блокировать бота. Или использовать асинхронную библиотеку для Gemini, если такая есть. На 02.04.2026, возможно, есть асинхронная поддержка. Для упрощения, я буду использовать синхронный вызов в пуле потоков.

Но в python-telegram-bot обработчики сообщений асинхронные. Поэтому нам нужно запустить синхронный вызов в отдельном потоке. Используем asyncio.to_thread.

import asyncio

async def check_spam_async(text: str) -> bool:
    """Асинхронная проверка спама."""
    loop = asyncio.get_event_loop()
    return await loop.run_in_executor(None, check_spam, text)

Но в функции check_spam уже есть асинхронность? Нет, она синхронная. Поэтому так.

Однако, для производительности лучше использовать асинхронные клиенты. Но для простоты гайда, оставим так.

5 Обработчик сообщений в Telegram

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

async def message_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
    # Игнорируем сообщения от самого бота
    if update.message.from_user.id == context.bot.id:
        return

    message_text = update.message.text
    if not message_text:
        return  # Игнорируем медиа без текста

    is_spam = await check_spam_async(message_text)
    if is_spam:
        # Удаляем сообщение и банним пользователя
        try:
            await update.message.delete()
            await context.bot.ban_chat_member(
                chat_id=update.message.chat_id,
                user_id=update.message.from_user.id
            )
            logging.info(f"Забанен пользователь {update.message.from_user.username} за спам.")
        except Exception as e:
            logging.error(f"Не удалось удалить сообщение или забанить: {e}")

def main():
    application = Application.builder().token(TELEGRAM_TOKEN).build()
    application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, message_handler))
    application.run_polling()

if __name__ == "__main__":
    main()

Это базовая логика. В реальности, вы можете захотеть отправлять предупреждения, использовать мягкие меры (например, только удаление), или логировать в канал.

Совет: не баните сразу навсегда. Давайте шанс. Например, сначала предупреждение, затем мут на день, потом бан. Это снизит количество ложных срабатываний.

Нюансы, которые взорвут ваш бот, если не учесть

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

1. Однопоточность API Gemini

Gemini Flash имеет лимит 15 запросов в секунду на ключ. Это много, но если ваш чат очень активный, можно упереться. Решение: использовать несколько API ключей и балансировать нагрузку. Или кэшировать результаты для похожих сообщений.

2. Ложные срабатывания

AI не идеален. Он может принять за спам безобидное сообщение с ссылкой на ваш же продукт. Всегда добавляйте возможность апелляции. Например, создайте команду /appeal для разбана.

3. Длина сообщений

Gemini Flash имеет лимит на количество токенов (вероятно, 1 миллион для контекста). Но одно сообщение в Telegram редко превышает 4096 символов. Все равно обрезайте длинные сообщения до разумного предела, например, 500 токенов.

4. Стоимость все равно есть

Да, она в 1000 раз меньше, но если у вас супер-активный чат с миллионом сообщений в день, вы все равно заплатите десятки долларов. Следите за использованием.

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

Что в итоге?

Вы получаете антиспам-бота, который:

  • Стоит копейки (до 1000 раз дешевле GigaChat 3).
  • Работает быстро (сотни миллисекунд).
  • Легко настраивается через промпт.
  • Масштабируется за счет множества ключей.

И все это на актуальной модели Gemini 3 Flash от Google, которая на 02.04.2026 является лучшим выбором для задач классификации текста.

Код из этого гайда - лишь основа. Добавьте логирование, панель управления, белый список, обработку медиа - и у вас будет профессиональный антиспам-бот.

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

И последний совет: не полагайтесь слепо на AI. Спамеры адаптируются. Ваш промпт должен эволюционировать вместе с ними. Раз в неделю просматривайте логи и добавляйте новые примеры спама. Так вы останетесь на шаг впереди.

Удачи в борьбе со спамом! И помните: каждый рубль, сэкономленный на API, - это рубль, который можно вложить в развитие чата.

Подписаться на канал