ДокументацияTelegram-бот с нейросетью

Telegram-бот с нейросетью

СценарииНовичок15 мин

За 15 минут у вас будет Telegram-бот, который отвечает через нейросеть и помнит последние 10 сообщений чата.

Нужно: аккаунт Telegram, ключ fetch_... (создать), баланс от $0.01 (пополнить), Python 3.10+ или Node.js 18+ (не знаете — берите Python).

  1. 1
    Создайте бота

    В @BotFather отправьте /newbot, задайте имя и адрес на bot (например, my_helper_bot). Придёт токен 123456789:AA... — никому его не показывайте.

  2. 2
    Создайте ключ для бота

    В кабинете → API-ключи создайте отдельный ключ. Поставьте лимит, например $1 в день, и разрешите только claude-haiku-5-5 — как.

  3. 3
    Установите библиотеки

    Создайте папку ai-bot и откройте в ней терминал.

    Python:

    bash
    python3 -m venv .venv
    source .venv/bin/activate      # Windows: .venv\Scripts\activate
    pip install "python-telegram-bot>=21,<22" openai

    Node.js:

    bash
    npm init -y
    npm install grammy @grammyjs/runner openai
  4. 4
    Сохраните код

    Скопируйте код из раздела «Готовый код» ниже в bot.py (Python) или bot.mjs (Node.js) в папке ai-bot.

  5. 5
    Запустите

    macOS и Linux:

    bash
    export TELEGRAM_BOT_TOKEN="123456789:AA..."
    export ZUKKO_API_KEY="fetch_..."
    python bot.py        # или: node bot.mjs

    Windows (PowerShell):

    bash
    $env:TELEGRAM_BOT_TOKEN="123456789:AA..."
    $env:ZUKKO_API_KEY="fetch_..."
    python bot.py

    Появится «Бот запущен». Не закрывайте окно: бот отвечает, пока работает программа.

  6. 6
    Проверьте

    Найдите бота в Telegram, нажмите «Старт» и задайте вопрос.

1Готовый код

Память на 10 сообщений хранится в оперативной памяти и стирается при перезапуске. Команда /reset очищает её вручную.

import asyncio
import logging
import os
from collections import defaultdict, deque

from openai import APIConnectionError, APIStatusError, AsyncOpenAI
from telegram import Update
from telegram.constants import ChatAction
from telegram.ext import Application, CommandHandler, ContextTypes, MessageHandler, filters

logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s")
logging.getLogger("httpx").setLevel(logging.WARNING)  # иначе в лог попадает адрес с токеном бота
log = logging.getLogger("bot")

2Работа 24/7

Скопируйте папку ai-bot на Linux-VPS, установите библиотеки и настройте автозапуск.

# /etc/systemd/system/ai-bot.service
[Unit]
Description=Telegram AI bot
After=network-online.target
Wants=network-online.target

[Service]
User=bot
WorkingDirectory=/home/bot/ai-bot
EnvironmentFile=/home/bot/ai-bot/.env
ExecStart=/home/bot/ai-bot/.venv/bin/python bot.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Для systemd создайте рядом с ботом .env со строками TELEGRAM_BOT_TOKEN=... и ZUKKO_API_KEY=... (без export и кавычек), выполните chmod 600 .env и включите сервис:

bash
sudo systemctl daemon-reload
sudo systemctl enable --now ai-bot
journalctl -u ai-bot -f      # лог бота в реальном времени

3Если не работает

Что видитеЧто сделать
KeyError: 'TELEGRAM_BOT_TOKEN'Выполните export ... в том же окне, где запускаете бота
ModuleNotFoundError: No module named 'telegram'source .venv/bin/activate, затем снова pip install
Conflict: terminated by other getUpdates requestБот запущен дважды — оставьте одну копию
«Временно не может ответить», в логе 401 / 402 / 403401 — проверьте ZUKKO_API_KEY. 402 — пополните баланс. 403 model_not_allowed_for_key — разрешите модель в ключе или смените ZUKKO_MODEL
429 key_daily_limit_reachedПоднимите лимит ключа или дождитесь 00:00 UTC
Бот долго думаетВозьмите быструю модель: claude-haiku-5-5 или deepseek-v4.1-flash

Другие коды — Ошибки API.

Telegram-бот с нейросетью · Документация Zukko