Перейти к содержанию

Создаем бота ChatGPT в Telegram - Подробная инструкция

Опубликовано
  • Админы

Всем привет!

Поюзал ботов я не мало, и остановился на одном. Очень интересном и универсальном.

Репозитория на GitHub - ТУТ

Требования:

  • Свой  VPS сервер за границей.
    Да-да. Лучше иметь сервер зарубежный, чтобы избежать потенциального блока на использование API.
  • API ключ от ChatGPT
  • немного навыков обращения с консолью
  • телеграм аккаунт

Шаг 1. Регистрируем бота в BotFather.

Идём к Батьке всех ботов. Сюда.

https://t.me/BotFather

Пишем ему команду: /newbot

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

Шаг 2. У вас должен быть аккаунт OpenAI, и доступ к ChatGPT. А ещё у вас на аккаунте должны быть кредиты (хотя бы бесплатные 5$) 

Идём на страницу: API keys - OpenAI API

Жмём image.png

Копируем этот API в блокнотик себе и не отдаем никому. Он нам будет нужен дальше.

Шаг 3. Идём на свой VPS сервер.

Рефералки на провайдеров VPS где их можно арендовать размещены тут: Рефералки - opeNode - Mind & Data Space

На сервер попали.

 

UPDATE 1.08.2023

Теперь можно просто заюзать скрипт:

bash <(wget -qO- https://raw.githubusercontent.com/DigneZzZ/chatgpt_telegram_bot/main/setup.sh)

 

Ниже инструкция по ручной установке:

 

пишем в консоле:

git clone https://github.com/karfly/chatgpt_telegram_bot.git

!!! У вас должен быть установлен GIT. Если не установлен, юзай команду: apt install git

После этого, идем в папку:

cd chatgpt_telegram_bot

Теперь нам нужно переименовать конфиг файлы:

mv config/config.example.yml config/config.yml
mv config/config.example.env config/config.env

Теперь нам нужно зайти в конфиг и вставить свои "пять копеек":

nano config/config.yml

Попав сюда видим:

telegram_token: ""
openai_api_key: ""
use_chatgpt_api: true
allowed_telegram_usernames: []  # if empty, the bot is available to anyone. pass a username string to allow it and/or user ids as integers
new_dialog_timeout: 600  # new dialog starts after timeout (in seconds)
return_n_generated_images: 1
n_chat_modes_per_page: 5
enable_message_streaming: true  # if set, messages will be shown to user word-by-word

# prices
chatgpt_price_per_1000_tokens: 0.002
gpt_price_per_1000_tokens: 0.02
whisper_price_per_1_min: 0.006

Дальше все логично, внутрь ковычек вставляем наши API.

В telegram_token: "здесь-апи-ключ" - API ключ от BotFather.
В openai_api_key: "здесь-апи-ключ-OpenAI" - сюда ключ от OpenAI.

Теперь сделаем так, чтобы пользоваться могли только вы. Для этого нам нужен параметр.

В него вставляется НИК в telegram.

Несколько аккаунтов разделяются запятой. 

allowed_telegram_usernames: [durov,BotFather]

ОЧЕНЬ ВАЖНО СОБЛЮДАТЬ РЕГИСТР БУКВ (маленькие или БОЛЬШИЕ) - так как в точности называется ваш ник в Tелеграм.

ЕСЛИ НЕ УКАЗАТЬ НИКОВ - ПОЛЬЗОВАТЬСЯ СМОЖЕТ КАЖДЫЙ!

 

Ещё можно задать время, сколько будет ждать бот, прежде чем сбросить тему диалога (задается в секундах):

new_dialog_timeout: 600

На этом настройки можно заканчивать.

Шаг 4. ЗАПУСКАЕМ БОТА 

docker compose --env-file config/config.env up --build -d

 

На этом всё.

Идём в телеграм, пишем своему боту /start

И радуемся общению 🙂

Вот его команды:

image.png

Моды чата - это то в каком стиле будут даваться ответы.

Доступны такие, можно почитать тут:

image.png

image.png

image.png

Ещё важная настройка, доступная из диалога - /settings

image.png

Я рекомендую использовать ChatGPT. Он соответствует версии ChatGPT3.5 Turbo. Он дешевый и ничем не уступает в ответах дорогому GPT-3.5. Там один токен очень дорого стоит.

Посчитать токены кстати можно здесь:

OpenAI API - TOKENIZER

Обратите внимание, текст на русском потребляет в несколько раз больше токенов за одно слово.

image.png

А вот на английском:

image.png

 

Удачи.

 

Featured Replies

Опубликовано

Бот классный и удобный.

На коленке перевел его на русский язык, кому интересно https://github.com/persoun/chatgpt_tg_bot_ru

По ошибкам пишите, исправлю.

 

 upd 17.06.23

Немного дополнил перевод. Обновил реп.

По установке, если на чистую, то можно сразу поставить из моего репозитория

git clone https://github.com/persoun/chatgpt_tg_bot_ru.git

И дальнейшие действия производить в папке chatgpt_tg_bot_ru:

cd chatgpt_tg_bot_ru

Либо заменить три файла в текущей сборке и перезапустить бота:

1. /chatgpt_tg_bot_ru/bot/bot.py

2. /chatgpt_tg_bot_ru/config/chat_modes.yml

3. /chatgpt_tg_bot_ru/config/config.yml

Так же, в chat_modes.yml можно задавать другие роли для бота, но это уже другая история.

 

Как это выглядит

image.thumb.png.fdec9e3a817450a49963a7f4b9fb9485.pngimage.thumb.png.6c5938c66d9b387a4adc70f230f88eeb.png

 

Изменено пользователем persoun
upd

Опубликовано

Package 'python-dev' has no installation candidate

Опубликовано
  • Автор
  • Админы
2 минуты назад, tabsiger сказал:

Package 'python-dev' has no installation candidate

Это что и в какой момент?

Опубликовано
10 минут назад, DigneZzZ сказал:

Это что и в какой момент?

На 4 шаге, удалил в Docerfile "python-dev" и все завелось

 

Опубликовано

И еще вопрос как получить эти бесплатные 5$ у chatgpt ?

Опубликовано
13 минут назад, tabsiger сказал:

На 4 шаге, удалил в Docerfile "python-dev" и все завелось

 

Something went wrong during completion. Reason: You exceeded your current quota, please check your plan and billing details.

Сам бот пишет это..

Опубликовано

Не увидел ограничений по серверу в инструкции, чтобы использовать openai_api_key подойдет сервер взятый у vdsina расположенный в Нидерландах?

Опубликовано
  • Автор
  • Админы
19 минут назад, tabsiger сказал:

На 4 шаге, удалил в Docerfile "python-dev" и все завелось

 

Очень странно, я много раз его переставлял, все было ок

 

19 минут назад, tabsiger сказал:

И еще вопрос как получить эти бесплатные 5$ у chatgpt ?

Я брал на plati.market аккаунт с 5$ долларами на счету. за 100 или за 150 рублей.

7 минут назад, tabsiger сказал:

Something went wrong during completion. Reason: You exceeded your current quota, please check your plan and billing details.

Сам бот пишет это..

Баланс для Апи значит пустой)

1 минуту назад, tabsiger сказал:

Не увидел ограничений по серверу в инструкции, чтобы использовать openai_api_key подойдет сервер взятый у vdsina расположенный в Нидерландах?

Для бота подойдет.

Опубликовано

Разобрался, 1 мая истекли 18$ но вот python-dev не встаёт, ставил на чистый Ubuntu 22.04, хотя и с без него все работает, были б кредиты...

Опубликовано
  • Автор
  • Админы
55 минут назад, tabsiger сказал:

На 4 шаге, удалил в Docerfile "python-dev" и все завелось

 

 

24 минуты назад, tabsiger сказал:

Разобрался, 1 мая истекли 18$ но вот python-dev не встаёт, ставил на чистый Ubuntu 22.04, хотя и с без него все работает, были б кредиты...

Надо было попробовать исправить на  python3-dev

Опубликовано

Немного дополнил перевод. Обновил реп. В первом сообщении.

Изменено пользователем persoun

Опубликовано
  • Автор
  • Админы

Обновил свой репозиторий по установке.

https://github.com/DigneZzZ/chatgpt_telegram_bot/

Добавлен скрипт для упрощенной установки setup.sh.

bash <(wget -qO- https://raw.githubusercontent.com/DigneZzZ/chatgpt_telegram_bot/main/setup.sh)

Добавить русский язык можно командой:

bash <(wget -qO- https://raw.githubusercontent.com/DigneZzZ/chatgpt_telegram_bot/main/russian.sh)

Модели чата берутся из репозитория  @persoun

  • 3 месяца спустя...
Опубликовано

Привет!
У меня такая ошибка после установки. Ставил с помощью скрипта

Спойлер
update = {

  "update_id": 992707431,

  "message": {

    "chat": {

      "id": 123,

      "type": "private",

      "first_name": "1231",

      "username": "12313"

    },

    "text": "hi",

    "group_chat_created": false,

    "message_id": 342,

    "delete_chat_photo": false,

    "date": 1701091570,

    "supergroup_chat_created": false,

    "channel_chat_created": false,

    "from": {

      "is_bot": false,

      "username": "1231",

      "first_name": "123123",

      "id": 123,

      "language_code": "ru",

      "is_premium": true

    }

  }

}



Traceback (most recent call last):

  File "/usr/local/lib/python3.8/site-packages/telegram/ext/_application.py", line 1104, in process_update

    await coroutine

  File "/usr/local/lib/python3.8/site-packages/telegram/ext/_handler.py", line 141, in handle_update

    return await self.callback(update, context)

  File "bot/bot.py", line 307, in message_handle

    await task

  File "bot/bot.py", line 210, in message_handle_fn

    if (datetime.now() - db.get_user_attribute(user_id, "last_interaction")).seconds > config.new_dialog_timeout and len(db.get_dialog_messages(user_id)) > 0:

TypeError: '>' not supported between instances of 'int' and 'NoneType'

 


 

 

Опубликовано
  • Автор
  • Админы
6 минут назад, seo сказал:

Привет!
У меня такая ошибка после установки. Ставил с помощью скрипта

  Скрыть контент

update = {

  "update_id": 992707431,

  "message": {

    "chat": {

      "id": 123,

      "type": "private",

      "first_name": "1231",

      "username": "12313"

    },

    "text": "hi",

    "group_chat_created": false,

    "message_id": 342,

    "delete_chat_photo": false,

    "date": 1701091570,

    "supergroup_chat_created": false,

    "channel_chat_created": false,

    "from": {

      "is_bot": false,

      "username": "1231",

      "first_name": "123123",

      "id": 123,

      "language_code": "ru",

      "is_premium": true

    }

  }

}



Traceback (most recent call last):

  File "/usr/local/lib/python3.8/site-packages/telegram/ext/_application.py", line 1104, in process_update

    await coroutine

  File "/usr/local/lib/python3.8/site-packages/telegram/ext/_handler.py", line 141, in handle_update

    return await self.callback(update, context)

  File "bot/bot.py", line 307, in message_handle

    await task

  File "bot/bot.py", line 210, in message_handle_fn

    if (datetime.now() - db.get_user_attribute(user_id, "last_interaction")).seconds > config.new_dialog_timeout and len(db.get_dialog_messages(user_id)) > 0:

TypeError: '>' not supported between instances of 'int' and 'NoneType'

 


 

 

Репозиторий обновился...

Нужно посмотреть что поменялось.

Опубликовано
22 часа назад, DigneZzZ сказал:

Репозиторий обновился...

Нужно посмотреть что поменялось.

А если в ручном режиме устанавливать по вашей инструкции, то все ок? Ранее запускал на винде, но не особо удобно было. Сейчас апишку с РУ/РБ айпи дернуть уже нельзя, блочит сразу.

Поэтому, например, AEZA (не реклама) не подойдет под подобный бот, так как у аезы серваки в РУ и на chatgpt не пустит. 

п.с. ответ саппорта aeza:
 

Цитата

Мы не можем повлиять на обновление гео-базы у сайтов по получению информации по IP. Из-за того, что подсеть новая для нас, она ещё не обновилась и содержит информацию старого провайдера, примерно через недели 2-4 информация обновится и будет отображаться как Швеция, Стокгольм.

 

есть хостер, с оплатой из Ру, с серваками в DE и Fi, иногда бывают промо тарифы по 1 евро) Опять таки, рекламить не собираюсь, кому надо - в ЛС.

Опубликовано
  • Автор
  • Админы
14 минут назад, seo сказал:

А если в ручном режиме устанавливать по вашей инструкции, то все ок? Ранее запускал на винде, но не особо удобно было. Сейчас апишку с РУ/РБ айпи дернуть уже нельзя, блочит сразу.

Поэтому, например, AEZA (не реклама) не подойдет под подобный бот, так как у аезы серваки в РУ и на chatgpt не пустит. 

п.с. ответ саппорта aeza:
 

 

есть хостер, с оплатой из Ру, с серваками в DE и Fi, иногда бывают промо тарифы по 1 евро) Опять таки, рекламить не собираюсь, кому надо - в ЛС.

Вручную можно,должно получиться

С Ру серверов лучше не запускать.

Но если хостер в РФ, а сервер зарубежный, как например Аеза,то бота на таком сервере можно запускать. У меня уже год так работает.

Опубликовано
19 часов назад, DigneZzZ сказал:

Вручную можно,должно получиться

ПОнял, попробую

 

19 часов назад, DigneZzZ сказал:

Но если хостер в РФ, а сервер зарубежный, как например Аеза,то бота на таком сервере можно запускать. У меня уже год так работает.

У меня софт работает с апишкой chatgpt, вешал на aeza впнку, в итоге с ней как и с Ру айпи

image.thumb.png.a318fba9975670f01a902cf11a159229.png

Опубликовано
  • Автор
  • Админы
1 минуту назад, seo сказал:

У меня софт работает с апишкой chatgpt, вешал на aeza впнку, в итоге с ней как и с Ру айпи

image.thumb.png.a318fba9975670f01a902cf11a159229.png

Ого!

Ну возьми у Hetzner, там точно работает, или у melbicom,у них тоже раньше работало все хорошо

Опубликовано

Ошибка на финальной стадии, что порт занят. 

[+] Running 3/3

 ✔ Container mongo                 Started                                                                                                                   0.6s 

 ✔ Container chatgpt_telegram_bot  Started                                                                                                                   0.2s 

 ✔ Container mongo-express         Recreated                                                                                                                 0.2s 

Error response from daemon: driver failed programming external connectivity on endpoint mongo-express (a2ee474f97c67b05f09b222a3af6247a207d724ea0004697d54be4f4b1e2add1): Error starting userland proxy: listen tcp4 127.0.0.1:8081: bind: address already in use

 

Как поменять?

Опубликовано
  • Автор
  • Админы
7 минут назад, kaka0 сказал:

Ошибка на финальной стадии, что порт занят. 

[+] Running 3/3

 ✔ Container mongo                 Started                                                                                                                   0.6s 

 ✔ Container chatgpt_telegram_bot  Started                                                                                                                   0.2s 

 ✔ Container mongo-express         Recreated                                                                                                                 0.2s 

Error response from daemon: driver failed programming external connectivity on endpoint mongo-express (a2ee474f97c67b05f09b222a3af6247a207d724ea0004697d54be4f4b1e2add1): Error starting userland proxy: listen tcp4 127.0.0.1:8081: bind: address already in use

 

Как поменять?

В файле /config/config.env

image.png

  • 5 месяцев спустя...
Опубликовано

На Ubuntu 24.04 LTS  не получилось с первого раза запустить все по мануалу. Видимо проблема в разных докерах версиях или еще что то помогла команда из пунтка 4 docker-compose --env-file config/config.env up --build -d  только в ней нужно убрать дефис между docker и compose. docker compose --env-file config/config.env up --build -d и тогда все запустится. На старых версиях ubuntu таких проблем не было.

 

 
Опубликовано
  • Автор
  • Админы
4 часа назад, Hasegawa сказал:

На Ubuntu 24.04 LTS  не получилось с первого раза запустить все по мануалу. Видимо проблема в разных докерах версиях или еще что то помогла команда из пунтка 4 docker-compose --env-file config/config.env up --build -d  только в ней нужно убрать дефис между docker и compose. docker compose --env-file config/config.env up --build -d и тогда все запустится. На старых версиях ubuntu таких проблем не было.

 

 

да, с новой версией docker немного синтаксис поменялся)

поправил в первом сообщении

 

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

Последние посетители 0

  • Ни одного зарегистрированного пользователя не просматривает данную страницу
Яндекс.Метрика

Account

Navigation

Поиск

Поиск

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.