MAATRIX / Блог / VPS для бота рассылок: лимиты, очереди и антиспам

VPS для бота рассылок: лимиты, очереди и антиспам

Блог MAATRIX · 2026-07-07

Рассылочный бот — это не «залить базу и жать кнопку». Платформы жёстко ограничивают темп, а за спам банят и бота, и сервер. Разберём, как рассылать легально: очередь на Redis, соблюдение лимитов, корректная обработка ошибок и обязательная отписка.

Честно о лимитах и антиспаме

['Сразу о главном: массовая рассылка незнакомым людям — это спам, за который платформы блокируют без разговоров. Telegram банит ботов за жалобы пользователей, а серверный IP может попасть в чёрные списки. Легальная рассылка идёт только тем, кто сам подписался на бота.', 'Второй ограничитель — темп. Telegram Bot API держит примерно до 30 сообщений в секунду суммарно и не более одного сообщения в секунду одному чату. Превысите — получите ошибку 429 с полем retry_after. Задача сервера — рассылать ровно, а не пачкой.', '
  • Только opt-in — рассылка тем, кто подписался сам.
  • ~30 сообщений/сек — общий лимит Telegram, держите запас.
  • Кнопка отписки — обязательна, снижает жалобы и баны.
']

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

Арендовать VPS для бота рассылок

Архитектура: очередь вместо цикла

['Рассылать в лоб циклом for — путь к 429 и потерянным сообщениям. Правильно: складываем получателей в очередь (Redis) и выгребаем их с контролируемым темпом отдельным воркером. Так рассылка переживёт перезапуск и не превысит лимит.', '
sudo apt update && sudo apt install -y redis-server python3-venv\nsudo systemctl enable --now redis-server\npython3 -m venv ~/mailer/.venv && source ~/mailer/.venv/bin/activate\npip install redis aiogram
', 'Наполнение очереди — id всех подписчиков:', "
import redis\nr = redis.Redis()\nfor uid in subscriber_ids:\n    r.rpush('broadcast:queue', uid)
"]

Воркер с контролем темпа

['Воркер берёт получателей из очереди и шлёт с паузой, удерживая лимит. Простой троттлинг — не чаще ~25 сообщений в секунду, с запасом от потолка.', "
import asyncio, redis\nr = redis.Redis()\nRATE = 25  # сообщений в секунду, с запасом\n\nasync def worker(bot, text):\n    while True:\n        item = r.lpop('broadcast:queue')\n        if item is None:\n            break\n        uid = int(item)\n        try:\n            await bot.send_message(uid, text)\n        except Exception as e:\n            handle_error(uid, e)\n        await asyncio.sleep(1 / RATE)
"]

Обработка 429, блокировок и отписок

['Три типовые ситуации при рассылке, которые нужно обрабатывать явно:', '
  • 429 / FloodWait — притормозить на retry_after секунд и вернуть получателя в очередь.
  • Forbidden (bot blocked) — пользователь заблокировал бота; пометить как неактивного и больше не слать.
  • Chat not found — аккаунт удалён; вычистить из базы.
', "
from aiogram.exceptions import TelegramRetryAfter, TelegramForbiddenError\ntry:\n    await bot.send_message(uid, text)\nexcept TelegramRetryAfter as e:\n    await asyncio.sleep(e.retry_after)\n    r.rpush('broadcast:queue', uid)   # вернуть в очередь\nexcept TelegramForbiddenError:\n    mark_inactive(uid)                # заблокировал бота
", 'Регулярная чистка базы от заблокировавших и удалённых аккаунтов повышает доставляемость и снижает нагрузку.']

Запуск и устойчивость

['Воркер рассылки держим под systemd — большая рассылка идёт долго, и процесс должен пережить сетевые сбои. Очередь в Redis гарантирует, что после рестарта рассылка продолжится с места остановки, а не начнётся заново.', '
[Unit]\nDescription=Broadcast worker\nAfter=network-online.target redis-server.service\n\n[Service]\nUser=mailer\nWorkingDirectory=/home/mailer/mailer\nExecStart=/home/mailer/mailer/.venv/bin/python worker.py\nRestart=always\nRestartSec=5\n\n[Install]\nWantedBy=multi-user.target
', '
sudo systemctl daemon-reload\nsudo systemctl enable --now mailer\njournalctl -u mailer -f
']

Где брать сервер и частые ошибки

['Рассылочному боту важны стабильный аптайм и надёжный IP с хорошей репутацией — с зарубежного адреса Telegram API отвечает ровнее. На тарифах MAATRIX это AMD EPYC + NVMe от $8/мес, root-доступ для systemd и Redis, локации UK и США. Ежедневные бэкапы сохранят базу подписчиков. Оплата картой РФ, СБП, криптой или токеном MAAT.', '
  • Рассылка не-подписчикам — жалобы и бан бота, спам недопустим.
  • Цикл без троттлинга — мгновенный 429 и потеря сообщений.
  • Игнор retry_after — усугубляет флуд-лимит и удлиняет паузу.
  • Нет очереди — рестарт обнуляет прогресс большой рассылки.
  • Нет отписки — рост жалоб и в итоге блокировка.
']

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

Арендовать VPS для бота рассылок

Частые вопросы

Какой лимит на рассылку в Telegram?

Ориентир — около 30 сообщений в секунду суммарно и не чаще одного в секунду одному чату. При превышении API возвращает 429 с полем retry_after.

Можно ли рассылать по купленной базе?

Нет. Это спам: Telegram банит ботов по жалобам, а данные людей без согласия использовать нельзя. Рассылайте только подписавшимся через вашего бота.

Зачем очередь на Redis для рассылки?

Она держит темп в пределах лимита и сохраняет прогресс: после перезапуска воркер продолжит с места остановки, а не начнёт рассылку заново.