Telegram bot based on ChatGPT API
Телеграм бот на базі API від ChatGPT
Example:
Приклад:
https://t.me/ixGPTbot
Make sure that you have a created account in OpenAI service:
Переконайся, що в тебе є зареєстрований акаунт в OpenAI сервісі:
https://openai.com/
Create a new API key there:
Створи новий API ключ:
https://platform.openai.com/account/api-keys
There's only one thing that you need in your OS is Docker.
Єдине, що тобі потрібно встановити до ОС - це Docker.
Open the link below and follow instructions:
Відкрий посилання та слідуй інструкціям:
https://docs.docker.com/get-docker/
Run the command in your terminal.
Виконай команду в терміналі.
cd /path/to/directory/with/projects
git clone git@github.com:Inevix/chatgpt-telegram-bot.git
cd $_
Now you have to create a new bot to get an API bot token.
Зараз тобі потрібно буде створити нового бота, щоб отримати АПІ токен боту.
Open the chat:
Відкрий чат:
https://t.me/BotFather
Send the command message to the bot:
Відправ боту команду:
/newbot
And follow instructions
Та слідуй інструкціям.
Also, at current step I recommend you to create second bot, 'cause you will have 2 environments:
Також на цьому етапі я хотів би порадити тобі створити ще одного бота, бо в тебе буде 2 оточення:
dev
production
It includes different docker containers and different databases. In this case, better to have 2 different bots with different tokens to run them separately.
Я маю на увазі різні докер контейнери та бази даних. В цьому випадку краще мати 2-х різних ботів з різними токенами, щоб запускати їх окремо.
In the new chatgpt-telegram-bot
directory you can find the directory env
with the file .env.example
.
В новій директорії chatgpt-telegram-bot
ти можеш знайти ще одну директорію env
з файлом .env.example
.
First of all copy and rename this file to 2 different files such as: .env.dev
and .env.production
.
Для початку, зроби 2 копії цього файлу та перейменуй його в .env.dev
та .env.production
.
cp env/.env.example env/.env.dev
cp env/.env.example env/.env.production
Open both env files and set the tokens as values of the OPENAI_API_KEY
variable.
Відкрий обидва env файли та вкажи отримані токени, як значення для змінної OPENAI_API_KEY
.
OPENAI_API_KEY="xx-xxxxx..."
Open both env files and set the tokens as values of the TELEGRAM_BOT_TOKEN
variable.
Відкрий обидва env файли та вкажи отримані токени, як значення для змінної TELEGRAM_BOT_TOKEN
.
TELEGRAM_BOT_TOKEN="xxxxx:xxxxx..."
Don't forget that better to use different bots with different tokens for dev
and production
modes.
Не забудь, що краще використовувати різних ботів з різними токенами для dev
та production
режимів.
Open both env files and set telegram usernames to the ALLOWED_USERS
variable which allowed to use your bot.
Відкрий обидва env файли та вкажи телеграм юзернейми, яким ти хочеш дати доступ для користуванням ботом, як значення для змінної ALLOWED_USERS
.
# Only one / Тільки один
ALLOWED_USERS="username"
# Some users / Для декількох юзерів
ALLOWED_USERS="username1 username2 username3..."
Before you'll add a lot of users, remember that you have only $18 for the trial period ~3 months.
Перед тим, як давати доступ великій кількості людей, памʼятай, що безкоштовно ти можеш використовувати чат тільки 3 місяці і маєш на це $18.
Check usage:
Перевірити використання:
https://platform.openai.com/account/usage
npm run docker:dev
The command docker:dev
and other you can find in the package.json
file.
Команду docker:dev
та інші ти можеш знайти у файлі package.json
.
When you run the bot in the developer mode you can't run docker containers in a background, and you see a lot of logs from telegram updates. You can prevent this. Feel free to run the bot in background mode without any logs of telegram updates by the command:
Коли ти запускаєш бота в режимі розробника, ти не можеш запустити докер контейнери у фоні, а також ти бачиш багато логів після кожного оновлення в чаті з ботом. Ти можеш цьому зарадити. Запустити бота у фоні без логів можна за допомогою команди:
npm run docker:start
Additional commands:
Додаткові команди:
npm run docker:start
npm run docker:stop
npm run docker:restart
Run the bot in the developer mode:
Запусти бот в режимі розробника:
npm run docker:dev
Next feel free to edit any files in the bot
directory.
Далі зміни будь який файл в директорії bot
.
Before go next steps, you have to install NPM packages to your local machine too.
Перед тим, як рухатися далі, ти маєш встановити NPM пакети локально також.
If you don't have Node.js locally, please visit the site.
Якщо в тебе немає Node.js локально, відвідай цей сайт.
Next just install NPM packages to the project directory.
Далі просто встанови NPM пакети в директорію проєкту.
npm i
There is the .eslintrc.js
file in the project to present rules for ESLint.
В проєкті є .eslintrc.js
файл з правилами для ESLint.
Configure your code editor to follow rules:
Налаштуй свій редактор коду під вказані правила:
There is the .prettierrc.js
file in the project to preset rules for Prettier.
В проєкті є .prettierrc.js
файл з правилами для Prettier.
Configure your code editor to follow rules:
Налаштуй свій редактор коду під вказані правила:
I'm really excited if you are interested in the improving of my project. Thanks so much!
Я дійсно в захваті, що ти зацікавився покращенням мого проєкту. Дуже тобі вдячний!
There are some steps how you can do that:
Тут декілька кроків, що потрібно зробини для цього:
- Fork my repository.
Зроби форк мого репозиторію. - Deploy the project locally (follow instructions above).
Розгорни проєкт локально, слідуючи інструкціям вище. - Make your changes.
Внеси свої зміни. - Make sure that your changes have been self-checked by you.
Обовʼязково перевір свої зміни власноруч. - Make sure that you followed rules of ESLint and Prettier. I can't merge your changes if you'll ignore this point.
Переконайся, що в тебе налаштовані ESLint та Prettier. Без них я не прийму твій код. - Create a new PR (Pull Request) from your repo to mine.
Зроби новий ПР (запит на внесення коду) з твоєї репи до моєї. - Wait while I'll check that.
Очікуй, поки я не перевірю. - If I don't agree with your changes, be absolutely sure that I'll write a comment why I think so.
Якщо я не згодний зі змінами, будь певний, я обовʼязково відпишу чому. - If I want to see your changes in the project:
Якщо мені подобаються твої зміни:- I'll merge the PR if everything is fine.
Я внесу їх, якщо все добре. - I'll ask you to do some fixes if something will be wrong.
Я попрошу тебе зробити певні правки, якщо щось буде не так.
- I'll merge the PR if everything is fine.