Telegram-бот с нейросетью
За 15 минут у вас будет Telegram-бот, который отвечает через нейросеть и помнит последние 10 сообщений чата.
Нужно: аккаунт Telegram, ключ fetch_... (создать), баланс от $0.01 (пополнить), Python 3.10+ или Node.js 18+ (не знаете — берите Python).
- 1Создайте бота
В @BotFather отправьте
/newbot, задайте имя и адрес наbot(например,my_helper_bot). Придёт токен123456789:AA...— никому его не показывайте. - 2Создайте ключ для бота
В кабинете → API-ключи создайте отдельный ключ. Поставьте лимит, например $1 в день, и разрешите только
claude-haiku-5-5— как. - 3Установите библиотеки
Создайте папку
ai-botи откройте в ней терминал.Python:
bashpython3 -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install "python-telegram-bot>=21,<22" openaiNode.js:
bashnpm init -y npm install grammy @grammyjs/runner openai - 4Сохраните код
Скопируйте код из раздела «Готовый код» ниже в
bot.py(Python) илиbot.mjs(Node.js) в папкеai-bot. - 5Запустите
macOS и Linux:
bashexport TELEGRAM_BOT_TOKEN="123456789:AA..." export ZUKKO_API_KEY="fetch_..." python bot.py # или: node bot.mjsWindows (PowerShell):
bash$env:TELEGRAM_BOT_TOKEN="123456789:AA..." $env:ZUKKO_API_KEY="fetch_..." python bot.pyПоявится «Бот запущен». Не закрывайте окно: бот отвечает, пока работает программа.
- 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 и включите сервис:
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 / 403 | 401 — проверьте 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.