Телеграм-бот на DeepSeek: код, память диалога и лимиты

Телеграм-бот на DeepSeek - код, память диалога и лимиты

Телеграм-бот на DeepSeek собирается за вечер: бот принимает сообщение, отправляет его в API модели и возвращает ответ. Никакой регистрации в зарубежных сервисах не нужно — достаточно ключа API и токена бота от @BotFather.

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

Что понадобится

  • Токен бота — выдаёт @BotFather в Телеграме за минуту.
  • Ключ API — создаётся в кабинете разработчика, пополняется по токенам.
  • Python 3.10+ и две библиотеки: aiogram для бота и openai-клиент для запросов к модели.
  • Сервер или любой хостинг с постоянным процессом — бот должен работать 24/7.

Схема работы

  1. Пользователь пишет боту сообщение.
  2. Бот отправляет его в API вместе с системной инструкцией.
  3. Модель отвечает, бот пересылает текст обратно в чат.
  4. История диалога хранится в памяти бота и передаётся в следующий запрос, чтобы модель помнила контекст.

Телеграм-бот на DeepSeek: минимальный код

import asyncio
from aiogram import Bot, Dispatcher, F
from aiogram.types import Message
from openai import AsyncOpenAI

BOT_TOKEN = "токен_от_BotFather"
client = AsyncOpenAI(api_key="ключ_API", base_url="https://api.deepseek.com")

bot = Bot(BOT_TOKEN)
dp = Dispatcher()

@dp.message(F.text)
async def handle(message: Message):
    response = await client.chat.completions.create(
        model="deepseek-chat",
        messages=[
            {"role": "system", "content": "Отвечай кратко и по делу, на русском языке."},
            {"role": "user", "content": message.text},
        ],
    )
    await message.answer(response.choices[0].message.content)

asyncio.run(dp.start_polling(bot))

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

Память диалога

У модели нет состояния между запросами: каждый вызов — новый разговор. Чтобы бот помнил контекст, историю хранят в словаре по идентификатору чата и передают в запрос целиком или последними N сообщениями. Важно ограничивать длину: контекст в 1 млн токенов стоит денег, и старые сообщения дешевле обрезать, чем оплачивать.

Ошибки, из-за которых бот ломается

  • Таймаут. Модель думает дольше, чем ждёт Телеграм: ставьте таймаут клиента 60–120 секунд и обрабатывайте исключение.
  • Длина сообщения. Телеграм ограничивает одно сообщение 4096 символами, а модель может выдать больше — ответ нужно резать на части.
  • Двойные ответы. Если процесс перезапускается с webhook и polling одновременно, бот отвечает по два раза.
  • Слишком длинный запрос. Пользователь присылает документ на 200 тысяч символов — без ограничения такой запрос съест бюджет.
  • Отсутствие лимитов на пользователя. Один активный человек способен израсходовать дневной бюджет API за час.

Телеграм-бот на DeepSeek: сколько это стоит

Оплата идёт за токены: короткий диалог на десять сообщений стоит копейки, но при сотне активных пользователей счёт растёт пропорционально. Практика простая: считать токены на пользователя, ставить суточный лимит сообщений и логировать расход — иначе первый же вирусный день в канале обнулит баланс.

Что добавить после запуска

  • Команды. /start с описанием возможностей, /reset для очистки истории, /help с примерами запросов.
  • Системная инструкция. Роль, тон, язык, запрет на выдуманные факты — заметно повышают качество ответов.
  • Переключатель модели. Быстрая версия по умолчанию и флагманская по команде или кнопке для сложных задач.
  • Логи и метрики. Сколько запросов, средняя длина, доля ошибок — без этого невозможно понять, что улучшать.

Безопасность

Ключ API нельзя держать в коде: его выносят в переменные окружения и не публикуют в репозитории. В сообщениях пользователи могут присылать персональные данные — стоит предупредить об этом в описании бота. Если бот публичный, нужен фильтр на спам и минимальная модерация, иначе им начнут пользоваться для генерации мусора. Для продакшена телеграм-бот на DeepSeek дополняют очередью запросов, чтобы всплеск активности не превращался в лавину таймаутов.

Нужен ли VPN для работы бота?

Для самого бота — нет, сервер обращается к API напрямую. VPN может понадобиться только при разработке на домашнем компьютере, если провайдер блокирует доступ к сервису.

Можно ли сделать бота без программирования?

Можно, в конструкторах ботов с готовыми блоками и подключением внешнего API. Но гибкость будет ниже: память диалога, переключение моделей и обработку ошибок всё равно придётся настраивать вручную.

Сколько стоит тысяча сообщений?

Зависит от длины сообщений: короткие реплики стоят единицы центов, длинные запросы с документами — в разы дороже. Точную сумму даёт подсчёт токенов по логам после первой недели работы.

Бот будет помнить прошлые разговоры?

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