Что понадобится
- Ключ RuAPI. Консоль → API-ключи → создайте ключ
sk-.... Новым пользователям обычно сразу начисляется пробный баланс, на нём доступныdeepseek-flash,claude-haiku-5-5иgpt-6-luna. Для остальных моделей пополните баланс — см. Пополнение. - Аккаунт Cloudflare (бесплатный).
- Аккаунт GitHub или GitLab. Cloudflare скопирует в него код бота. Лучше взять отдельный пустой аккаунт — ниже объясняем почему.
- Telegram на телефоне или компьютере.
Шаг 1. Создайте бота и узнайте свой ID
1
Бот в @BotFather
Откройте @BotFather, отправьте
/newbot, придумайте имя и username, который заканчивается на _bot. BotFather пришлёт токен — сохраните его, никому не показывайте.2
Ваш Telegram ID
Откройте @userinfobot и отправьте
/start. Он ответит числом Id — это ваш ADMIN_ID.Шаг 2. Разверните бота на Cloudflare
1
Откройте ссылку для деплоя
deploy.workers.cloudflare.com/?url=https://github.com/TBXark/ChatGPT-Telegram-Workers — войдите в Cloudflare.
2
Подключите Git-аккаунт
Без подключения GitHub или GitLab деплой не запустится (Connect a Git account to continue). Нажмите кнопку подключения GitHub и разрешите доступ.
3
Заполните форму
ADMIN_PASSWORD подписан как необязательный, но без него форма не отправится. Придумайте длинный случайный пароль (20+ символов) и сохраните: с ним открывается админка бота, где лежит ваш ключ RuAPI.
4
Запустите деплой
Сборка идёт около минуты. Дождитесь, пока все этапы станут зелёными.
Шаг 3. Включите адрес workers.dev
В новых проектах адрес*.workers.dev бывает выключен, и тогда Telegram не может достучаться до бота. Откройте проект → вкладка с доменами (Domains) → включите переключатель у адреса Production. Адрес Preview может включиться вместе с ним — это не мешает. Скопируйте адрес Production — он понадобится дальше.
Надписи «доступ есть у всех, кто знает URL» не пугайтесь: писать боту может только ADMIN_ID, а админка закрыта паролем.
Шаг 4. Войдите в админку и привяжите webhook
1
Вход в админку
Откройте
https://<ваш-проект>.<ваш-поддомен>.workers.dev/admin и войдите с паролем ADMIN_PASSWORD.2
Привязка webhook
В том же браузере откройте 
Если видите 
https://<ваш-проект>.<ваш-поддомен>.workers.dev/init. Должно появиться Webhook bound successfully.
Unauthorized. Open /admin, log in, then retry. — вы не вошли в админку. Вернитесь к предыдущему шагу, затем нажмите Retry.
Шаг 5. Подключите RuAPI
В админке на вкладке Chat нажмите Add Provider:
1
Модели
Нажмите Fetch Models — подтянется список моделей RuAPI. Нажмите + у нужных, например 
deepseek-flash, claude-haiku-5-5, gpt-6-luna. Если список не загрузился, добавьте модели вручную через Add Model, точные ID есть на странице цен.
2
Модель по умолчанию
Нажмите на модель в списке Models — галочка отмечает модель по умолчанию. Для начала удобно взять
deepseek-flash — одна из самых недорогих моделей, см. цены.3
RuAPI по умолчанию и сохранение
Нажмите Set as Default, затем Save. В списке провайдеров у RuAPI должна появиться галочка. Если провайдеров несколько, без этого бот может отвечать не через RuAPI.



Шаг 6. Проверьте
Откройте своего бота в Telegram:/setenv settings.language=en— служебные сообщения бота по умолчанию на китайском, русского языка в боте нет, поэтому переключите на английский. Чтобы меню команд / тоже стало английским, ещё раз откройте/initв браузере. На ответы модели это не влияет: она отвечает на языке вашего вопроса./start— бот ответит, что начат новый диалог.- Напишите «Привет, представься одной фразой» — ответ появляется постепенно, по мере генерации.
/models→ RuAPI → выберите другую модель, отправьте/newи спросите что-нибудь ещё.- Отправьте фото с вопросом «что на картинке?».
deepseek-flashкартинки не видит — для фото переключитесь, например, наclaude-haiku-5-5. Какие модели понимают изображения — см. Изображения.
Все команды бота
Команды из меню Telegram (кнопка / рядом с полем ввода):
Команды, которых нет в меню, но которые работают:
/admin, /system, /setenv, /setenvs и /delenv в личном чате работают только для ADMIN_ID. Если отправить боту JSON без команды, он уйдёт модели как обычный текст — настройки так не меняются.
Полезные настройки
Их можно менять в админке на вкладке Settings или командой/setenv:
Сбросить настройку:
/delenv settings.systemInitMessage.
Чтобы ботом пользовались друзья, добавьте их Telegram ID в список разрешённых пользователей на вкладке Settings. Все их запросы списываются с вашего баланса RuAPI. Учтите: друзья тоже могут менять модель через /models, и она меняется для всех. Оставьте в списке Models только недорогие модели.
Расходы
- Cloudflare: для личного бота обычно хватает бесплатного тарифа Workers.
- RuAPI: оплата за токены по ценам. С каждым сообщением бот заново отправляет модели историю диалога, поэтому в длинной переписке каждый следующий ответ стоит дороже. Начинайте
/new, когда меняете тему. - Для Claude RuAPI автоматически кэширует повторяющееся начало диалога: если между сообщениями проходит не больше 5 минут, повторно отправленная история стоит дешевле — см. Кэширование промптов.
Если что-то не работает
Connect a Git account to continue
Connect a Git account to continue
Деплой через Cloudflare требует подключить GitHub или GitLab — пропустить этот шаг нельзя. Подключите отдельный пустой аккаунт (см. шаг 2).
Форма не отправляется: «Заполните это поле» у ADMIN_PASSWORD
Форма не отправляется: «Заполните это поле» у ADMIN_PASSWORD
Поле фактически обязательное. Укажите длинный случайный пароль.
Бот молчит
Бот молчит
- Проверьте, что адрес workers.dev включён (шаг 3) и
/initпоказал успех. - Cloudflare Access должен быть выключен.
- ADMIN_ID — это ваш числовой ID от @userinfobot, а не username.
Модель называет себя другой моделью
Модель называет себя другой моделью
После
/models бот продолжает старый диалог, и новая модель видит, что «она» писала раньше. Например, Claude после ответа DeepSeek может назвать себя DeepSeek. Отправьте /new после смены модели.Ошибка «Начните с пробной модели…»
Ошибка «Начните с пробной модели…»
Пока баланс не пополнен, работают только
deepseek-flash, claude-haiku-5-5 и gpt-6-luna. Выберите одну из них в /models или пополните баланс.Админка не открывается
Админка не открывается
Админка и
/init открываются через адрес *.workers.dev. Если в вашем регионе он не открывается или грузится очень медленно, попробуйте другую сеть. Переписка с ботом идёт через Telegram и от этого не зависит.401 / неверный ключ
401 / неверный ключ
- API Key — ключ RuAPI
sk-.... - Base URL — ровно
https://www.ruapi.ai/v1.
Безопасность
- Ключ RuAPI и токен бота хранятся в вашем аккаунте Cloudflare и не попадают в Git-репозиторий.
- Можно создать для бота отдельный ключ RuAPI с лимитом расходов — тогда в худшем случае бот потратит не больше лимита.
- Если бот больше не нужен: удалите Worker в Cloudflare, бота — командой
/deletebotв @BotFather, ключ — в консоли RuAPI, созданный репозиторий — в GitHub. В настройках GitHub (Settings → Applications) отзовите доступ Cloudflare.