Создаем бота для Telegram
В рамках данной статьи я расскажу о том, как быстро и легко написать программу-бота для популярного мессенджера Telegram. Писать бота мы будем на языке Python, параллельно изучая его основы. Договоримся, что вы используете Linux в качестве операционной системы, либо знаете как выполнить аналоги команд в Windows.
Установка необходимых библиотек
Нам понадобятся следующие библиотеки и программы:
- pip — менеджер пакетов для Python
- python — интерпретатор языка
- virtualenv — виртуальное окружение
- telebot — обертка над telegram API для языка Python
Теперь откроем консоль и наберем несколько команд. Первым делом загрузим менеджер пакетов для питона и виртуальное окружение, внутри которого мы будем устанавливать все остальные пакеты, чтобы не засорять систему и не порождать конфликтов с другими проектами. Также скачаем проект telebot, который носит название pyTelegramBotAPI.
sudo apt-get install python-pip sudo pip install pyTelegramBotAPI sudo pip install virtualenv
Следующая команда создаст в вашей директории новую директорию venv, в которой будет хранить все локальные библиотеки. Подробности про виртуальные окружения можно прочитать по адресу: http://docs.python-guide.org/en/latest/dev/virtualenvs/ Можно работать и без виртуального окружения, но тогда убедитесь, что устанавливаемые вами библиотеки не конфликтуют с другими библиотеками в системе (например, могут сломаться некоторые программы, заточенные под старые версии пакетов).
virtualenv venv
После чего нам потребуется переместиться внутрь виртуального окружения, где можно будет подгружать все необходимые пакеты для проекта.
source venv/bin/activate
Создание Telegram-бота
Начнем с создания простого бота для Telegram. Чтобы наш бот функционировал, нужно первым делом его создать. Для этого в телеграме есть специальный мета-бот BotFather (@BotFather). Добавьте его через поиск в вашем клиенте телеграмма. Список его команд можно получить, написав в чате с ним команду /help. Для создания нового бота нужно написать команду /newbot и в следующем сообщении передать название бота (должно заканчиваться словом bot). В ответ вам придет сообщение с API токеном — он понадобится нам для создания соединения с телеграммом.
Создайте файл simplebot.py со следующим содержанием:
# -*- coding: utf-8 -*- import telebot bot = telebot.TeleBot(«») @bot.message_handler(commands=[‘help’, ‘start’]) def send_welcome(message): msg = bot.send_message(message.chat.id, ‘Привет! Я codex_bot!’) @bot.message_handler(commands=[‘auth’]) def send_auth(message): pass bot.polling()
Код довольно интуитивен, поясним только основные идеи. Когда пользователь будет вводить команды /start и /help — выполнится функция send_welcome, которая отправит пользователю в чат сообщение с приветствием. При вводе /auth пока ничего происходить не будет.
Запустите бота командой:
python simplebot.py
Теперь вы можете добавить своего бота в чат телеграмм и пообщаться с ним. Много полезных функций можно найти в документации telegram. Например, если вы хотите изменить описание, которое будут видеть пользователи при добавлении вашего бота в чат, вы можете написать @botfather следующую команду:
/setdescription
Затем выберите нужного бота из предложенного списка и следующим сообщением отправьте текст описания. Также, вы можете задать вашему боту список команд, которые он понимает. Это необходимо для того, чтобы у пользователей выводились подсказки при наборе команд в чате. Введите:
/setcommands
Выберите бота из списка и в следующем письме введите перечень команд в формате:
команда1 — Описание команды команда2 — Еще одно описание команды
Этих знаний достаточно, чтобы уже сейчас запустить своего бота. О том как сделать его чуточку полезнее, читайте в продолжении.
If you like this article, share a link with your friends
Read more
We talk about interesting technologies and share our experience of using them.
Как создать Telegram бота на Python


Моё мнение про Python

Что нужно знать о чат-ботах на Python

IDE и редакторы кода для Python

Виртуальное окружение в разработке на языке Python
В современном мире мессенджеры стали неотъемлемой частью нашей повседневной жизни, и они предоставляют нам возможность быстрой и удобной коммуникации. Но что, если мы скажем, что вы можете создать своего собственного помощника в мессенджере? Добро пожаловать в мир телеграм-ботов! Телеграм-боты — это программы, которые автоматизируют задачи и обеспечивают взаимодействие с пользователями через Telegram. И что самое лучшее, для создания этих ботов вы можете использовать Python — один из самых гибких и мощных языков программирования на сегодняшний день. Давайте узнаем, как создать собственный телеграм бот на python и расширим его функционал от простого эхо-бота до более сложного с возможностью взаимодействия с кнопками и обработкой пользовательского ввода.
Подготовка к созданию бота

Перед тем, как создать телеграм бота python, нам нужно подготовиться и убедиться, что у нас есть все необходимое программное обеспечение и библиотеки. Это как упаковать вещи перед путешествием — нам нужно взять все нужное, чтобы ничего не забыть.
Итак, что нам понадобится:
- Python — наш главный инструмент. Он прост в изучении и очень мощный. Просто загрузите его с официального сайта Python и установите на свой компьютер.
- Библиотека python-telegram-bot — мы будем использовать ее, чтобы упростить нашу задачу. Это как наш надежный проводник в мире Telegram. Чтобы установить эту библиотеку, вам просто нужно выполнить команду pip install python-telegram-bot в командной строке. Она установит все необходимые зависимости для нашего бота.
Начните свой путь от Новичка к Программисту с курсом Python Start от Foxminded!
bot
Теперь, когда мы готовы создать свой телеграм-бот, нам нужно пройти процесс регистрации в Телеграме. Да, здесь мы будем создавать нашу учетную запись для бота, чтобы он мог официально существовать в мире Telegram. Итак:

- откройте приложение Telegram и введите «BotFather» в поисковую строку. Найдите официальный бот Телеграма, который создает и управляет другими ботами;
- теперь, когда мы нашли BotFather, запустим чат с ним, нажав на кнопку «Start». Здесь мы начинаем наше взаимодействие и создание нашего бота;
- следуйте инструкциям BotFather, чтобы создать нового бота. Он задаст вам несколько вопросов, включая имя бота и уникальное имя пользователя. Выберите креативное и запоминающееся имя;
- после успешного создания бота BotFather предоставит вам уникальный токен доступа. Это и есть ключ к вашему боту в Telegram! Обязательно сохраните его в безопасном месте, потому что мы будем использовать его для аутентификации нашего бота.
Таким образом, вы только что зарегистрировали своего собственного телеграм-бота в Телеграме. Теперь у вас есть токен, который дает вам полный контроль над ним.
Создание эхо-бота
Теперь, когда у нас есть зарегистрированный бот и его уникальный токен, мы можем перейти к созданию его функциональности. Давайте начнем с простого примера — эхо-бота. Этот бот будет просто повторять входящие сообщения как эхо. Это как наш персональный эхолокатор в Telegram!
Вот пример несложного кода на Python:
from telegram import Update from telegram.ext import Updater, CommandHandler, MessageHandler, Filters def echo(update: Update, context): # Получаем входящее сообщение message = update.message.text # Отправляем обратно то же сообщение update.message.reply_text(message) def main(): # Инициализируем бота с использованием токена updater = Updater(token='YOUR_BOT_TOKEN', use_context=True) dispatcher = updater.dispatcher # Определяем обработчик для команды /start start_handler = CommandHandler('start', echo) dispatcher.add_handler(start_handler) # Определяем обработчик для всех входящих сообщений message_handler = MessageHandler(Filters.text, echo) dispatcher.add_handler(message_handler) # Запускаем бота updater.start_polling() updater.idle() if __name__ == '__main__': main()
В этом примере мы используем библиотеку python-telegram-bot для создания экземпляра бота. Мы определяем функцию echo, которая получает входящее сообщение и отправляет его обратно, используя метод reply_text(). Затем мы настраиваем обработчик команды /start и обработчик для всех входящих текстовых сообщений. Когда бот получает сообщение, он вызывает функцию echo, которая повторяет сообщение обратно.
Просто, не так ли? Теперь ваш бот может повторять ваши сообщения, как настоящий эхо-бот! Вы можете запустить его и протестировать, отправив ему сообщение в Telegram.
Конечно, это только начало, и функциональность бота можно расширить в дальнейшем. Однако этот пример позволяет вам быстро создать и запустить базового эхо-бота, который будет повторять ваши сообщения.
Создание сложного бота
Теперь, когда вы знакомы с простым примером того, как сделать телеграм бота на python, вы можете расширить его функционал. Например, вы можете добавить кнопки для более удобного взаимодействия с пользователем. Вот пример более сложного кода на Python для создания бота с кнопками:
from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup from telegram.ext import Updater, CommandHandler, CallbackQueryHandler, ConversationHandler, MessageHandler, Filters # Объявляем состояния для разговора с пользователем SELECTING_ACTION, SELECTING_COLOR = range(2) def start(update: Update, context): # Создаем клавиатуру с кнопками keyboard = [ [InlineKeyboardButton("Выбрать цвет", callback_data='choose_color')], [InlineKeyboardButton("Отмена", callback_data='cancel')] ] reply_markup = InlineKeyboardMarkup(keyboard) # Отправляем приветственное сообщение с клавиатурой update.message.reply_text("Привет! Что бы вы хотели сделать?", reply_markup=reply_markup) return SELECTING_ACTION def choose_color(update: Update, context): query = update.callback_query query.answer() # Отправляем сообщение с выбранным цветом query.edit_message_text("Вы выбрали цвет: <>".format(query.data)) return SELECTING_COLOR def cancel(update: Update, context): query = update.callback_query query.answer() # Отправляем сообщение об отмене query.edit_message_text("Вы отменили операцию.") return ConversationHandler.END def main(): # Инициализируем бота с использованием токена updater = Updater(token='YOUR_BOT_TOKEN', use_context=True) dispatcher = updater.dispatcher # Определяем обработчик для команды /start start_handler = CommandHandler('start', start) dispatcher.add_handler(start_handler) # Определяем обработчик для выбора цвета choose_color_handler = CallbackQueryHandler(choose_color, pattern='^choose_color$') dispatcher.add_handler(choose_color_handler) # Определяем обработчик для отмены операции cancel_handler = CallbackQueryHandler(cancel, pattern='^cancel$') dispatcher.add_handler(cancel_handler) # Запускаем бота updater.start_polling() updater.idle() if __name__ == '__main__': main()
В этом примере мы добавляем новые функции к нашему боту. Мы создаем клавиатуру с кнопками, позволяющими выбрать цвет или отменить операцию. Когда пользователь нажимает на кнопку, мы обрабатываем это событие и отправляем соответствующее сообщение.
Мы используем ConversationHandler для управления разговором с пользователем. Состояние разговора изменяется по мере выполнения действий пользователем. Например, при выборе цвета состояние меняется на SELECTING_COLOR, и мы обрабатываем выбранный цвет. При отмене операции разговор завершается.
Подпишись на наш Ютуб-канал! Полезные видео для программистов уже ждут тебя!
Выбери свой курс программирования! Путь к карьере программиста начинается здесь!
Этот пример демонстрирует, как можно расширить функциональность бота, добавив кнопки и обработку пользовательского ввода. Теперь ваш бот становится более интерактивным и готов к взаимодействию с пользователями!
Тестирование и отладка бота
После создания бота важно протестировать его работу и исправить возможные ошибки. Вы можете использовать тестовые аккаунты в Телеграме для проверки функционала бота и взаимодействия с ним. Разберемся, какие частые типы ошибок могут встретиться и как их можно решить:
| Шаги тестирования и отладки бота | Тип ошибки | Как решить |
| 1. Отправка тестовых сообщений | Некорректная обработка сообщений | При тестировании бота важно проверить, как он реагирует на различные типы сообщений. Отправьте ему текстовые сообщения, команды, изображения, аудио и другие медиафайлы. Убедитесь, что бот правильно обрабатывает каждый тип сообщения и отвечает на него соответствующим образом. |
| 2. Тестирование команд | Неправильное выполнение команд | Если вы определили специальные команды для вашего бота, убедитесь, что он правильно реагирует на них. Выполните команды и проверьте, что бот выполняет запрошенные действия и возвращает ожидаемые результаты. |
| 3. Обработка ошибок | Непонятные сообщения об ошибках | Проверьте, как бот обрабатывает ошибки и неправильный ввод пользователя. Сделайте некорректные запросы или введите неверные данные, чтобы убедиться, что бот возвращает понятные и информативные сообщения об ошибках. Это поможет вам предусмотреть возможные проблемы и улучшить пользовательский опыт. |
| 4. Тестирование масштабируемости | Потеря производительности | Бот должен быть способен обрабатывать большое количество запросов и пользователей без потери производительности. Проверьте его работу при высоких нагрузках и убедитесь, что он остается отзывчивым и стабильным. Это особенно важно, если вы планируете масштабировать бота в будущем. |
| 5. Отладка кода | Ошибки в коде | Если вы обнаружили ошибки или проблемы в работе бота, не отчаивайтесь! Используйте инструменты отладки Python, такие как вывод сообщений или использование инструментов отладки, чтобы идентифицировать и исправить проблемные участки кода. Отладка позволит вам более эффективно решать возникшие проблемы. |
| 6. Журналирование | Отсутствие логирования | Добавьте журналирование в ваш бот, чтобы получать информацию о его работе и помочь идентифицировать проблемы или ошибки. Журналирование позволит вам отслеживать действия пользователей, анализировать производительность бота и быстрее реагировать на проблемы. |
| 7. Обновления и регулярное тестирование | Неправильное поведение после обновления | Если вы вносите изменения в функциональность бота или обновляете используемые библиотеки, не забудьте протестировать его поведение после обновления. Проводите регулярное тестирование, чтобы убедиться, что бот продолжает работать корректно даже после внесения изменений. |
Частые ошибки при отладке телеграм-ботов
Следуя предложенным практическим шагам, вы сможете выявить проблемные моменты в работе бота и принять необходимые меры для их исправления.
Вывод
Создание телеграм-ботов на Python — увлекательный процесс, который может принести множество пользы. Благодаря языку Python и библиотеке python-telegram-bot вы можете легко разрабатывать ботов с разнообразным функционалом, от простых эхо-ботов до более сложных с кнопками и обработкой пользовательского ввода. Рекомендуем попробовать создать своего собственного бота и исследовать возможности, которые он может предоставить. Удачи в вашем творчестве!
Як створити телеграм-бота за допомогою Python
Перекладач: Anastasiia Buievych
Автор: Ashutosh Krishna (Англійська)

Автоматизовані чат-боти надзвичайно корисні для взаємодій. Чат-боти можна створити для Slack, Discord та інших платформ.
У цій публікації я навчу вас створювати чат-бот у телеграмі, який надсилає гороскоп. Розпочнемо!
Як отримати токен бота
Щоб налаштувати новий бот, потрібно поговорити з BotFather. Ні, це не людина — він також бот, і бос всіх інших ботів.

- Знайдіть @botfather у телеграмі.
2. Розпочніть переписуватись з BotFather, натиснувши кнопку «Розпочати» (start).

3. Введіть /newbot та дотримуйтесь підказок для створення нового бота. BotFather надасть токен, який ви використовуватимете для автентифікації свого бота та надання йому доступу до API телеграму.

Примітка: переконайтеся, що ви надійно зберігаєте токен. Вашим ботом може керувати кожен, хто має токен доступу.
Як налаштувати середовище розробки
Налаштуємо середовище розробки! Для створення телеграм-бота доступно безліч бібліотек, але ми використовуватимемо бібліотеку pyTelegramBotAPI. Це проста, але розширна реалізація Python для API телеграм-бота із синхронними та асинхронними можливостями.
Встановіть бібліотеку pyTelegramBotAPI, використовуючи pip:
pip install pyTelegramBotAPI
Потім відкрийте свій улюблений редактор коду та створіть файл .env , щоб зберігати свій токен, як показано нижче:
export BOT_TOKEN=тут-ваш-токен-боту
Після цього запустіть команду source .env , щоб прочитати змінні середовища з файлу .env .
Як створити свій перший бот
Всі реалізації API зберігаються у класі під назвою TeleBot . Він пропонує багато способів прослуховування вхідних повідомлень, а також функції send_message() , send_document() та інші, щоб надсилати повідомлення.
Створіть новий файл bot.py та вставте наступний код:
import os import telebot BOT_TOKEN = os.environ.get('BOT_TOKEN') bot = telebot.TeleBot(BOT_TOKEN)
У коді вище ми використовуємо бібліотеку os , щоб прочитати змінні середовища, збережені у нашій системі.
Якщо ви пам’ятаєте, у минулому кроці ми експортували змінну середовища під назвою BOT_TOKEN . Значення BOT_TOKEN зчитується у змінній під назвою BOT_TOKEN . Крім того, ми використовуємо клас TeleBot , щоб створити екземпляр бота та передаємо йому BOT_TOKEN .
Потім потрібно зареєструвати обробники повідомлень. Ці обробники повідомлень містять фільтри, які має пройти повідомлення. Якщо повідомлення проходить фільтр, викликається декорована функція, а вхідне повідомлення надається як аргумент.
Визначимо обробник повідомлень, який обробляє вхідні команди /start та /hello .
@bot.message_handler(commands=['start', 'hello']) def send_welcome(message): bot.reply_to(message, "Howdy, how are you doing?")
Для функції, декорованої обробником повідомлень, прийнятне будь-яке ім’я, але вона може мати лише один параметр (повідомлення).
Додамо ще один обробник, який повертає усі вхідні повідомлення відправнику.
@bot.message_handler(func=lambda msg: True) def echo_all(message): bot.reply_to(message, message.text)
Наведений вище код використовує вираз lambda , щоб протестувати повідомлення. Оскільки нам потрібно відправляти усі повідомлення назад, ми завжди повертаємо True від функції lambda .
Тепер ви маєте простий бот, який відповідає на команди /start та /hello , а також надсилає усі інші надіслані повідомлення відправнику. Додайте наступне до кінця файлу, щоб запустити бот:
bot.infinity_polling()
Тепер наш телеграм-бот готовий! Запустимо файл Python та перейдемо до телеграму, щоб протестувати бота.
Знайдіть бота за іменем користувача, якщо не можете його знайти. Протестуйте його, надсилаючи команди /hello та /start , а також інші тексти.

Примітка: всі обробники повідомлень тестуються в тому порядку, в якому вони оголошені у вихідному файлі.
Щоб дізнатись більше про використання бібліотеки pyTelegramBotAPI, див. документацію.
Як програмувати бот з гороскопом
Зараз переключимося на створення бота з гороскопом. Ми використовуватимемо ланцюжкування повідомлень у боті. Спочатку бот запитуватиме ваш знак зодіаку та день, а потім відповідатиме гороскопом на певний день.
Позаочі бот взаємодіє із API, щоб отримати дані про гороскоп.
Ми використовуватимемо Horoscope API, який я побудував в іншому туторіалі. Якщо ви хочете навчитись його створювати, перегляньте цей туторіал. Перш ніж почати, дослідіть API тут.
Як отримати дані про гороскоп
Створимо функцію корисності, щоб отримувати дані гороскопу для певного дня.
import requests def get_daily_horoscope(sign: str, day: str) -> dict: """Get daily horoscope for a zodiac sign. Keyword arguments: sign:str - Zodiac sign day:str - Date in format (YYYY-MM-DD) OR TODAY OR TOMORROW OR YESTERDAY Return:dict - JSON data """ url = "https://horoscope-app-api.vercel.app/api/v1/get-horoscope/daily" params = response = requests.get(url, params) return response.json()
У наведеному вище коді Python ми створили функцію, яка приймає два рядкові аргументи — sign та day — і повертає дані JSON. Ми надіслали запит GET на URL API і передали sign та day як параметри запиту.
Якщо протестувати функцію, отримаєте щось схоже:
< "data":< "date": "Dec 15, 2022", "horoscope_data": "Lie low during the day and try not to get caught up in the frivolous verbiage that dominates the waking hours. After sundown, feel free to speak your mind. You may notice that there is a sober tone and restrictive sensation today that leaves you feeling like you will never be able to break free from your current situation. Don't get caught in this negative mindset." >, "status": 200, "success": true >
Примітка: ви можете дізнатись більше про бібліотеки requests у Python в цьому туторіалі.
Як додати обробник повідомлень
Тепер ми маємо функцію, яка повертає гороскоп. Зараз створимо обробник повідомлень, який запитує користувача про знак зодіаку.
@bot.message_handler(commands=['horoscope']) def sign_handler(message): text = "What's your zodiac sign?\nChoose one: *Aries*, *Taurus*, *Gemini*, *Cancer,* *Leo*, *Virgo*, *Libra*, *Scorpio*, *Sagittarius*, *Capricorn*, *Aquarius*, and *Pisces*." sent_msg = bot.send_message(message.chat.id, text, parse_mode="Markdown") bot.register_next_step_handler(sent_msg, day_handler)
Наведена вище функція дещо відрізняється від інших функцій, які ми визначили раніше. Гороскоп буде викликаний командою /horoscope . Ми надсилаємо текстове повідомлення користувачеві, але зауважте, що ми встановили parse_mode на Markdown під час надсилання повідомлення.
Оскільки ми використовуватимемо ланцюжкування повідомлень, ми використали метод register_next_step_handler() . Цей метод приймає два параметри: повідомлення, надіслане користувачем, та функцію зворотного виклику, яку потрібно викликати одразу після повідомлення. Тому ми передаємо змінну sent_msg та нову функцію day_handler , яку визначимо наступною.
Визначимо функцію day_handler() , яка приймає повідомлення.
def day_handler(message): sign = message.text text = "What day do you want to know?\nChoose one: *TODAY*, *TOMORROW*, *YESTERDAY*, or a date in format YYYY-MM-DD." sent_msg = bot.send_message( message.chat.id, text, parse_mode="Markdown") bot.register_next_step_handler( sent_msg, fetch_horoscope, sign.capitalize())
Ми отримуємо знак зодіаку з атрибута message.text . Він також запитує бажаний день гороскопу, як і попередня функція.
Вкінці ми використовуємо той самий метод register_next_step_handler() і передаємо sent_msg , функцію зворотного виклику fetch_horoscope та sign .
Зараз визначимо функцію fetch_horoscope() , яка приймає повідомлення та знак зодіаку.
def fetch_horoscope(message, sign): day = message.text horoscope = get_daily_horoscope(sign, day) data = horoscope["data"] horoscope_message = f'*Horoscope:* \\n*Sign:* \\n*Day:* ' bot.send_message(message.chat.id, "Here's your horoscope!") bot.send_message(message.chat.id, horoscope_message, parse_mode="Markdown")
Це остання функція, в якій ми отримуємо знак зодіаку з параметру функції та день з атрибуту message.text .
Потім ми отримуємо гороскоп, використовуючи функцію get_daily_horoscope() та створюємо наше повідомлення. Наприкінці ми надсилаємо повідомлення з гороскопом.
Демо-версія бота
Після запуску файлу Python ви можете перевірити функціональність. Ось демо-версія:
Рекомендовані наступні кроки
Наразі бот припиняє працювати, як тільки ми зупиняємо Python. Щоб він завжди працював, ви можете розгорнути бота на платформах типу Heroku, Render тощо.
Ви можете додати більше функціональностей до бота, дослідивши API телеграму.
Дякую, що прочитали! Можете підписатись на мене у твіттері.
Как сделать свой личный ChatGPT в Telegram за 5 минут


Бот ChatGPT продолжает стремительно набирать популярность во всём мире и становится наиполезнейшим инструментом для тех, кто ищет быстрый и удобный способ получить нужную информацию.
Однако официально бот доступен только на сайте компании OpenAI и не имеет собственного приложения, что далеко не всегда удобно, особенно для пользователей из России, где доступ к сайту ограничен.
Но выход есть, в начале этого месяца OpenAI выпустила своё API в публичный доступ и теперь ChatGPT можно вывести за пределы своего сайта. В Telegram появилась уже целая куча ботов ChatGPT, однако все они так или иначе требуют свою плату с пользователей.
Поэтому мы решили написать инструкцию о том, как создать своего личного бота ChatGPT в Telegram практически даром. Инструкция рассчитана на рядового пользователя, следуя ей, запустить своего бота сможет даже человек, не имеющий знаний в программировании.
Подготовка
- Для начала вам потребуется аккаунт на сайте OpenAI. Если у вас его до сих пор нет, то в самом конце этой статьи инструкция по его созданию. Для регистрации аккаунта потребуется виртуальный номер, минимальная стоимость которого на текущий момент составляет около 20 рублей.
- Далее включите VPN и перейдите в раздел для разработчиков здесь:

- Создайте API ключ, нажав на копку «Create new secret key». Запишите его, он понадобится позже.
- Затем создайте бота в Telegram. Для этого откройте BotFather и введите команду /newbot.

- Назовите его. Затем пропишите боту ссылку, которая обязательно заканчивается на bot. И сохраните API ключ от бота Telegram. Он также понадобится позже.
- Итого у вас должно быть 2 ключа: OpenAI и Telegram.
Установка
Далее установите Python на свой компьютер. В начале установки обязательно поставьте галочку «Add python.exe to PATH», иначе в консоли не будут работать команды.

- Скачайте готовый код бота на GitHub от пользователя n3d1117. Для этого нажмите на зелёную кнопку Code –> Download ZIP. Распакуйте папку из архива в любое удобное место, но желательно без кириллицы в пути.
- Откройте файл под названием .env.example через любой текстовый редактор (блокнот, notepad++, EmEditor).

- В поле OPENAI_API_KEY=»XXX» вместо XXX вставьте ваш ключ OpenAI
- В поле TELEGRAM_BOT_TOKEN=»XXX» вместо XXX вставьте ваш ключ Telegram-бота.
- В поле ALLOWED_TELEGRAM_USER_IDS=»USER_ID_1,USER_ID_2″ вместо USER_ID_1,USER_ID_2 вставьте символ * – тогда бот будет доступен для всех пользователей. Если вы желаете сделать его доступным только для себя, то введите свой Telegram ID. Узнать его можно здесь.
- После этого переименуйте «.env.example» в «.env».
- Далее кликните на путь папки сверху и введите в нём слово powershell и нажмите Enter. Откроется PowerShell сразу с учётом расположения папки вашего бота.
В открытой консоли пропишите следующие команды по порядку:
python -m pip install —upgrade pip
Установка и/или обновление pip
pip install python-telegram-bot
Установка библиотеки Telegram
pip install openai
Установка библиотеки OpenAI
pip install pydub
Установка аудиобиблиотеки
Также можете скачать FFmpeg для работы с аудио и видео, но это необязательно. Текстовый бот будет работать и без этого дополнения. (Из архива нужно вытащить ffmpeg.exe и поместить в корневую папку).
python -m venv venv
Подготовка к запуску виртуального окружения
venv\Scripts\activate
Запуск
pip install -r requirements.txt
Установка подходящих параметров
python bot/main.py
Запуск самого бота
После этого бот должен начать работать. И им уже можно пользоваться. Для отключения бота просто закройте консоль.
Пример успешной работы бота:


Бот будет работать пока запущена консоль. Соответственно, чтобы его выключить, достаточно её закрыть. Чтобы запустить бота повторно, все перечисленные выше команды снова вводить не нужно, достаточно лишь так же открыть PowerShell в папке и прописать всего две команды.
venv\Scripts\activate
python bot/main.py
Особенности и ограничения:
- API-версия генерирует текст гораздо быстрее своей бесплатной браузерной версии, примерно на уровне Plus версии.
- API-версия работает всегда, даже в период нагрузок, также вам не требуется VPN для её использования.
- Используйте /help, чтобы получить список доступных команд
- Подобно браузерному ChatGPT, API-версия запоминает информацию в диалоге.
- Чтобы стереть боту память о беседе, используйте команду /reset. Также после этой команды можно ввести уточнение для бота, чтобы направить его в нужное русло. Например, с помощью «/reset Говори только на русском» можно заставить использовать русский язык по умолчанию.
- С помощью команды /image можно генерировать картинки с помощью DALL-E по описанию.
- Через команду /stats можно проверить затраты на использование бота.
- Также вы можете добавить бота в беседу и общаться с ним вместе с друзьями. (для этого нужно разрешить добавление в беседу в настройках BotFather).
А теперь к ограничениям:
Увы, но API не бесплатное, у всех пользователей есть бесплатный пробный период в 3 месяца с момента регистрации. Он также ограничен количеством бонусных долларов, по исчерпанию которых API перестанет работать.

Количество бонусных долларов зависит от даты регистрации вашего аккаунта. На моём аккаунте, который был зарегистрирован в первые дни запуска ChatGPT, было предоставлено бонусов в размере $18. Это очень много, если вы используете бота в одиночку, то вам более чем хватит этого на месяц или два активного использования.
Однако в последнее время новым аккаунтам стали давать более скромный бонус – $5, которого хватит где-то на пару недель активного использования. Статистку использования вы можете отследить на сайте OpenAI или в самом боте по команде /stats.
Также следует отметить ещё пару важных фактов:
- Подключить версию GPT-4 на данный момент нельзя, даже если у вас есть Plus. API GPT-4 на текущий момент находится в закрытом доступе.
- Запущенная через API версия фактически незначительно отличается от браузерной ChatGPT. Браузерная версия была доработана, чтобы быть ассистентом, а также содержит больше уточняющей информации о себе, в то время как API-версия «более обезличенная» и даже не называет себя ChatGPT.
- В этом плане API версия сильно напоминает декабрьский ChatGPT, который даже не мог назвать актуальную дату. Однако всё же знания у ботов общие, поэтому беспокоиться за качество ответов не стоит.
- Для тех кому интересно, по умолчанию в боте используется модель gpt-3.5-turbo. Какие ещё существуют модели можете посмотреть здесь.
