Telegram-бот на Python за полчаса с aiogram
Напишем простой Telegram-бот на Python с использованием aiogram, Docker и AWS, предварительно ознакомившись с нужными инструментами.
Напишем простой диалоговый Telegram-бот на Python, который в дальнейшем можно дополнить различными функциями, и задеплоим его.
Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.
Настройка
Откройте Telegram, найдите @BotFather и начните беседу. Отправьте команду /newbot и следуйте инструкциям. Вы получите:
- свой токен;
- адрес Telegram API (https://api.telegram.org/bot);
- ссылку на документацию.
Обязательно сохраните токен, так как это ключ для взаимодействия с ботом.
Примечание Хранение токена должно быть локальным: ни в коем случае не выгружайте его в общий доступ, например в GitHub-репозиторий .
Далее начните беседу. Введите в поисковой строке имя бота и нажмите /start . Отправьте любое сообщение: оно станет первым обновлением, которое получит Телеграм бот.
Установка Python
Для написания Telegram-бота на Python, нужно установить сам язык. Если вы пользуетесь Windows, скачать Python можно с официального сайта. Версия важна. Нам подойдет Python не ниже версии 3.7. Если же у вас Linux или macOS, то, скорее всего, у вас стоит Python 3.6. Как обновиться, можете почитать здесь.
Тем, кто только начал изучение этого языка, будет также полезна дорожная карта Python-разработчика.
Установка pip
Это менеджер пакетов. В версиях выше Python 2.7.9 и Python 3.4, а также на macOS/Linux он уже есть. Проверить это можно командой pip —version в терминале. Если же по каким-то причинам он отсутствует, установить его можно при помощи команды:
$ sudo apt-get install python-pip
Установка aiogram
Установить данный фреймворк для Telegram Bot API с помощью pip:
pip install aiogram
Hello, bot!
Давайте напишем простенькую программу приветствия. Для начала следует импортировать библиотеки и создать экземпляры Телеграм бота и диспетчера:
from aiogram import Bot, types from aiogram.dispatcher import Dispatcher from aiogram.utils import executor TOKEN = "ваш токен от бота здесь" bot = Bot(token=TOKEN) dp = Dispatcher(bot)
Теперь напишем обработчик текстовых сообщений, который будет обрабатывать входящие команды /start и /help :
@dp.message_handler(commands=['start', 'help']) async def send_welcome(msg: types.Message): await msg.reply_to_message(f‘Я бот. Приятно познакомиться, ’)
Добавим ещё один обработчик для получения текстовых сообщений. Если бот получит «Привет», он также поздоровается. Все остальные сообщения будут определены, как нераспознанные:
@dp.message_handler(content_types=['text']) async def get_text_messages(msg: types.Message): if msg.text.lower() == 'привет': await msg.answer('Привет!') else: await msg.answer('Не понимаю, что это значит.')
Запускаем Telegram бота, написанного на Python, следующим образом:
if __name__ == '__main__': executor.start_polling(dp)
Примечание Так мы задаём боту непрерывное отслеживание новых сообщений. Если бот упадёт, а сообщения продолжат поступать, они будут накапливаться в течение 24 часов на серверах Telegram, и в случае восстановления бота прилетят ему все сразу.
Ну вот и всё, простенький бот в Телеграмме на языке Python готов.
Docker
Сейчас мало кто не слышал про Docker, но если вдруг не слышали — вот хорошая статья. Для нашего проекта потребуется самый простой Dockerfile:
FROM python:3.8 # set work directory WORKDIR /usr/src/app/ # copy project COPY . /usr/src/app/ # install dependencies RUN pip install --user aiogram # run app CMD ["python", "bot.py"]
Каталог проекта должны при этом содержать следующие файлы:
Для локальных тестов достаточно установить Docker (linux, mac, windows), после чего в папке проекта собрать и запустить контейнер с помощью команд:
docker build -t my_app docker run -d my_app
my_app — это просто название нашего контейнера, вместо которого можно использовать другое имя.
-d — специальный флаг, который запускает контейнер в фоне и позволяет дальше работать в терминале. Это называется detached mode.
Деплой на AWS
Прежде всего нам понадобится аккаунт на Docker Hub. Это аналог GitHub, только не с исходниками кода, а с уже созданными контейнерами. Работа с Docker Hub выглядит достаточно просто:
- Локально или с помощью пайплайнов собрали контейнер.
- Загрузили его на докер хаб.
- В любом удобном месте скачали его. Это может быть локальная машина, VPS сервер или облачный провайдер по типу AWS.
- Запустили.
Пройдёмся по этим шагам. Везде, где указано , надо вставлять свой юзернейм, использованный при регистрации на докерхабе. Если это ваша первая публикация на докерхаб, для начала потребуется залогиниться с помощью docker login.
docker build -t /my_app
Загружаем его на докерхаб:
docker push /my_app
Для проверки успешности загрузки можете запустить контейнер из Docker Hub с помощью команды:
docker run -d /my_app
Далее загрузим наш контейнер в AWS Elastic Beanstalk. Для этого потребуется аккаунт на AWS. Если его нет, необходимо зарегистрироваться. Вас попросят ввести данные карты для верификации, но переживать не стоит, ведь мы воспользуемся бесплатным годовым триалом. Чтобы поиграться, этого более чем достаточно, а вот если вы захотите вывести проект в продакшен, следует перейти на VPS — это даст больше контроля и гибкости.
- Переходим в Elastic Beanstalk, на вкладку Applications, и создаём новое приложение:
- Называем приложение, теги оставляем пустыми:
- Создаём для приложения environment:
- Выбираем Worker environment:
- В качестве платформы выбираем Docker:
- В пункте Application code нужно загрузить JSON-файл с конфигурацией Docker-образа. Сам файл:
Dockerrun.aws.json < "AWSEBDockerrunVersion": "1", "Image": < "Name": "/my_app", "Update": "true" >, "Ports": [ < "ContainerPort": 5000, "HostPort": 8000 >] >
- Создаём окружение:
- AWS начинает создавать окружение, просто ждём завершения процесса:
- Если всё прошло успешно, вы увидите индикатор успешного запуска приложения:
Проверяем работу нашего Telegram bot:
Заключение
Поздравляем! Теперь вы знаете, как писать роботов для Telegram на Python.
Бота можно дополнять другими функциями, например, добавить отправку файлов, опрос или клавиатуру.
Кстати, в телеграмме есть аж целых два типа клавиатур:
- Классическая RelpyKeyboardMarkup, у которой кнопки располагаются под полем ввода сообщения:
- Более современная InlineKeyboardMarkup, которая привязывается к конкретному сообщению:
Но и это полностью рабочий Телеграм-бот на Python: дополните словарём, и получите полноценную беседу. Также можете опробовать функциональность нашего Telegram-бота.
В «настоящих проектах» не обойтись без базы данных. Тут на помощь приходит docker-compose, который позволяет объединить несколько контейнеров в один сервис. Таким образом, например, можно создать приложение и положить его в контейнер, а базу данных, как отдельный сервис, поместить в другой контейнер, и с помощью docker-compose наладить между ними связь.
Также для более серьёзной разработки лучше использовать выделенный виртуальный сервер (VPS): он даёт гораздо больше гибкости и свободы, чем тот же AWS. А самое главное, он более приближён к «боевой» разработке. Схема работы тут будет даже проще, чем с AWS: вам просто нужно установить Docker, спуллить образ с Docker Hub и запустить его.
Как сделать бота в Телеграм: пошаговая инструкция
Вы можете самостоятельно создать бота в Telegram без программирования. Повторите действия по инструкции и бесплатно запустите своего первого чат-бота уже через 15 минут.
60 показов
247K открытий
Создадим бота, который будет приветствовать, задавать вопрос с вариантами ответов и реагировать на нажатие на кнопок.
Шаг 1. Создайте аккаунт разработчика
1. Зарегистрируйтесь на botmother.com с помощью электронной почты (на нее придет письмо с подтверждением) или войдите через Google.
2. Нажмите кнопку «Создать нового бота» (справа внизу).
3. Выберите «Пустой бот».
Перед вами откроется конструктор— это место, где можно разрабатывать бота и добавлять функции.
Слева находится меню с разделами конструктора. Справа — вкладка с компонентами и экранами. По центру — рабочая зона для разработки. В левом нижнем углу — виджет обратной связи. Если возникнут трудности, пишите в поддержку.
Логика бота создается с помощью экранов— это сообщения бота (шаги, этапы), внутри которых могут быть различные функции. Автоматически создается «Стартовый экран» — первое сообщение от бота.
На каждый экран можно добавлять компоненты— это функции и действия бота (например, отправление текста, картинок, кнопок и т.д.).
Все компоненты расположены на вкладке справа.
Шаг 2. Создайте приветствие
1. На вкладке «Компоненты» нажмите на компонент «Сообщение» и перетяните его на экран.
2. Напишите любой текст. Например, «Привет! Это мой первый бот».
3. Нажмите зеленую кнопку «Сохранить» (справа внизу).
Шаг 3. Подключите бота к мессенджеру
В Telegram чат-боты создаются с помощью специального бота @BotFather. Через него можно управлять данными бота, добавить описание, аватар и т.д.
Создадим бота и придумаем ему название:
1. Откройте в Telegram бота @BotFather.
2. Напишите ему /newbot.
3. Придумайте и напишите название бота. Оно будет отображаться в контактах и чатах. Например, «Hello, bot».
4. Придумайте и напишите юзернейм. Он используется для упоминания бота и в ссылках. Юзернейм должен быть на латинице и обязательно заканчиваться на «bot». Например, «botmother_hello_bot».
Теперь нужно подключить бота в Telegram к вашему аккаунту разработчика:
2. Скопируйте токен бота.
3. Вернитесь в конструктор, найдите и откройте в меню слева раздел «Настройки».
4. Переключателем включите платформу Telegram.
5. Нажмите кнопку «Изменить».
6. Вставьте ранее скопированный токен бота.
7. Сохраните изменения.
Теперь бот подключен к конструктору, а значит, он может отвечать всем пользователям. Протестируем?
1. Найдите в поиске Telegram своего бота по юзернейму.
2. Нажмите «Начать» (или «Start»). Бот должен отправить приветственное сообщение.
Отлично! Ваш бот умеет отправлять сообщение.
Шаг 4. Добавьте дополнительные функции
Усложним бота. Пусть он задает вопрос с вариантами ответов и присылает разные сообщения в зависимости от выбора пользователя.
Текст: Как дела?
Первая кнопка: Хорошо
Вторая кнопка: Плохо
Для этого добавим еще два экрана, кнопки и изображение:
1. Откройте конструктор.
2. Добавьте два новых экрана. Для этого нажмите кнопку «Добавить экран» дважды.
3. Сохраните изменения.
Можно изменить названия добавленных экранов двойным кликом:
1. Два раза кликните на названия экранов.
2. Отредактируй тексты. Например, «Экран Хорошо» и «Экран Плохо».
Добавим кнопки, на которые пользователи смогут нажимать:
1. Переместите компонент «Кнопки» на «Стартовый экран».
2. Напишите текст. Например, «Как дела?».
3. Добавьте две кнопки.
4. Напишите тексты на кнопках. Например, «Экран Хорошо» и «Экран Плохо».
Каждая кнопка должна вести на определенный экран, который указывается в настройках кнопки:
1. Нажмите на первую кнопку.
2. В поле «Переход на экран» выберите экран «Экран Хорошо».
3. Нажмите на вторую кнопку.
4. Выберите другой экран — «Экран Плохо».
5. Сохраните изменения.
Итак, на «Стартовом экране» пользователь нажимает на кнопки и попадает на разные экраны. Нужно заполнить их контентом:
1. Переместите компонент «Изображение» на экран «Экран Хорошо».
2. Загрузите любую картинку или вставьте ссылку на изображение.
3. Сохраните изменения.
Теперь заполним следующий экран:
1. Переместите компонент «Сообщение» на экран «Экран Плохо».
2. Напишите текст. Например, «Не унывай, все будет хорошо!». Можно добавить эмодзи.
3. Сохраните изменения.
Шаг 5. Протестируйте бота
У нас получился такой сценарий: бот приветствует пользователя и задает вопрос с вариантами ответов; пользователь нажимает кнопку, и бот присылает определенное сообщение. Давайте протестируем!
1. Откройте своего бота.
2. Напишите команду /start.
3. Понажимайте на кнопки.
Вы создали своего бота и можете поделиться им с друзьями. Как видите, создавать ботов легко и просто. В конструкторе богатый функционал, позволяющий создавать самых разных ботов: для автоматизации, маркетинга, продаж, развлечений и много других.
Можете поэкспериментировать с ботом: изменить тексты, добавить новые экраны и компоненты или изменить сценарий. Дополнительную информацию можно найти в базе знаний, а вопросы пишите через виджет обратной связи.
39 комментариев
Написать комментарий.
Начните статью с того, что тариф на использование сервиса стоит 2899₽ месяц или 19999 ₽ в год.
Развернуть ветку
Бота для своих личных нужд или обучения можно создать и использовать бесплатно, есть ограничение по количеству пользователей. Если бот работает в вашем бизнесе, приносит пользу, и 2899 ₽ кажутся большой ценой, то вы можете просто выбрать другой ервис.
Развернуть ветку
Для личных нужд можно скачать практически любой открытый проект на GitHub и запустить на своём компе. Работать будет для всех, пока комп в сети.
Развернуть ветку
Подскажите, где где скачать ботика?
Развернуть ветку
Боты все абсолютно с разным функционалом. Исходные скрипты в большом количестве лежат на разных сайтах. В большом количество на GitHub.
Развернуть ветку
Я в первые этим сталкиваюсь, хочется попробовать из готового бота сделать бота приветствующего, и чтоб он мне в личку отправлял а я через него клиенту, реально ли это?
Развернуть ветку
реально всё.
1. Необходимо как минимум начать изучать Python или JavaScript
смотря что по душе.
Поставить самому себе задачу и написать нужного бота.
2. Либо попросить кого-то сделать это за какое либо вознаграждение.
Даже если найдётся исходник такого бото, его в любом случае необходимо разворачивать через свой аккаунт в телеге и на своём сервере.
Без знаний от слова «вообще» точно не выйдет «просто где то взять готового бота и он заработает так как надо»
Развернуть ветку
Чтобы определить что подуше надо изучать и то и это:))) и да, где синтаксис попроще? Что вам по душе, и о чем вы пишете свои программы эти?)
Развернуть ветку
Мне больше по душе JavaScript, потому как я больше по фронтэнду. Но и бота можно написать на нём.
Синтаксис наверное проще в Python.
Посмотрите обзоры выберите для себя что лучше.
Развернуть ветку
Развернуть ветку
Сейчас бы токен от бота вносить в левые сервисы, которые потом могут у тебя этого же бота увести.
Развернуть ветку
Это не левый сервис. Это довольно популярный конструктор ботов, погуглите
Развернуть ветку
В Телеграм нельзя «увести» бота по токену. Создатель бота может сам передать права на бота другому человеку.
Развернуть ветку
Смотря что понимать под увести, пока у злоумышленника есть верный токен, он может принимать весь входящий трафик и отвечать, от имени бота так, как ему нужно.
Понятное дело, что никто не будет офишировать свой токен где попало, если бот имеет пользователей. Тут мне кажется стоит вопрос можно ли доверять данному сервису и лично мне кажется да, похоже ребята просто стараются продать свой продукт и не в их интересах как-то его скамить, но я не узнавал и точно не знаю :^)
Развернуть ветку
Мало того, зная токен, можно переслать себе предыдущие сообщения от бота другим людям.
Развернуть ветку
бесплатно запустите своего первого чат-бота уже через 15 минут.
Практический смысл от таких конструкторов, кроме каких-то простых инфо-ботов вообще есть?
Развернуть ветку
Ну боты имеют огромный функционал. Можно сделать интернет-магазин, автоматизировать что-то, служба поддержки через бота и вообще любые сервисы и функции.
Развернуть ветку
Боты да, я написал одного бота на python-telegram-bot, поэтому и не могу понять как бы я нужную мне логику реализовал бы на таком конструкторе. Скорее всего — никак.
Развернуть ветку
Тут только пробовать. На конструкторе быстрее запустить, чем программировать, и дешевле.
Какую логику вы хотели делать?
Развернуть ветку
Та для внутреннего пользования на заводе. При создании issue в redmine что б слал сообщение с кнопками открыть/закрыть/добавить фото в каналы отделов. Авторизация юзеров опять же для кнопок, что бы в сообщение еще media лейаута (плана завода с меткой откуда вызов на нем) аттачил.
Как написать Telegram-бота на Python: делаем ремайндер
Создаём простого бота-ремайндера в Telegram на языке Python, единственная задача которого — напоминать пользователю о важных делах.
В этой иструкции разберем процесс создания простого бота-ремайндера, единственная задача которого — напоминать пользователю о важных делах. Это базовая конструкция, которую можно усложнять и менять под свои потребности.
Инструкция подойдет для новичков, которые знают Python на базовом уровне, пробовали писать код и установили на компьютер редактор кода.
Первый этап: подготовка проекта и развертывание окружения
Найдем в поиске Telegram BotFather — официального бота мессенджера, который создает другие боты и управляет ими. В интерфейсе выбираем /start, затем — /newbot, и следом задаем имя и адрес. В этой иструкции это будут Elbrus Reminder и elbrus_reminder_bot соответственно.
После этого BotFather пришлет сообщение с токеном и ссылкой на бот:
Токен нужно хранить в безопасном месте — он дает контроль над ботом. и, как следствие, позволяет получить доступ к данным пользователей.
На время закроем Telegram и создадим на компьютере папку с именем проекта: например, reminder_bot. Откроем папку в среде разработки и создадим рабочий файл с понятным названием — bot.py.
Откроем терминал редактора кода и создадим для проекта новое окружение. В среде разработки с помощью команды python -m venv .venv создадим папку с окружением .venv .
Если окружение не активировалось автоматически, можно сделать это вручную, прописав путь к файлу активации в формате source .venv/bin/activate , где source — команда языка программирования Bash. Другой вариант — перезапустить среду разработки. Он работает для Visual Studio Code, но нужно предварительно принять предложение редактора привязать среду к папке проекта сразу после создания окружения.
Практика создания нового окружения под каждый проект позволяет повыстить безопасности и стабильность проекта — в окружении вы можете использовать только те библиотеки и их версии, которые требуются в проекте. Если в проекте появятся дополнительные функции, все изменения будут храниться в этом окружении. При этом оно будет изолировано от других окружений и проектов — это повысит безопасность проекта.
Второй этап: подключаем библиотеки
Проект создан и окружение готово: пора переходить к написанию кода. По правилам хорошего тона в первую очередь через import добавляем несколько предустановленных библиотек Python. При создании бота нам пригодятся logging и time , которые отвечают за определение времени и логирование сообщений.
import time import logging
Затем добавим асинхронную библиотеку aiogram, на основе которой будет работать бот. Она, например, определяет, какое сообщение пришло, как его нужно обработать и какие порты нужны. Сначала устанавливаем ее через терминал командой pip install aiogram , а в редакторе кода пишем следующее:
from aiogram import Bot, Dispatcher, executor, types
Из этой библиотеки нам нужны только отдельные модули и классы — все ее возможности для создания базовой версии бота не пригодятся. Поэтому вместо одиночного import использована команда from <> import <> .
Когда библиотеки импортированы, создадим переменные с токеном бота и сообщением, которое он будет отправлять пользователю. Вы можете заменить это сообщение на любое другое, которое вам необходимо. Это статические переменные, поэтому их имена написаны капслоком:
TOKEN = "здесьбудетваштокенот от BotFather" MSG = "Программировал ли ты сегодня, <>?"
Токены, ключи и прочие данные для настройки проекта лучше загружать более безопасным способом (например, создавать переменные окружения или файлы конфигурации). Но в данном случае сделаем все в одном файле для наглядности, а примеры более безопасной работы с такими переменными разберем в следующих постах.
Теперь создадим экземпляр класса Bot , передав ему в качестве аргумента наш токен, и экземпляр класса Dispatcher (dp), который в качестве аргумента получит bot . В результате получаем связку объекта класса bot с ключем, который привязан к боту, и диспетчера, который привязан к этому боту:
bot = Bot(token=TOKEN) dp = Dispatcher(bot=bot)
Следующим шагом добавим конструкцию под названием декоратор ( massage_handler ) — она помогает получить из диспетчера нужный функционал. В качестве аргумента прописываем команды, которые обрабатывает декоратор — в данном случае это команда /start , которая запускает бот.
@dp.message_handler(commands=['start'])
Под декоратором прописываем функцию, которая будет обрабатывать команду /start и определяет логику, в соответствии с которой будет работать бот. Поскольку мы работаем с асинхронной библиотекой, функция тоже должна быть асинхронной. Для этого перед указанием def добавим ключевое слово async :
async def start_handler(message: types.Message):
Функция приветствует пользователя и обрабатывает сообщение, которое он отправляет в ответ. Из сообщения можно получить информацию о пользователе, который его прислал, время отправки и его ID.
Создаем переменную и сохраняем в ней user id :
user_id = message.from_user.id
Затем получаем из сообщения короткое и полное имя пользователя:
user_name = message.from_user.first_name user_full_name = message.from_user.full_name
Для того, чтобы в логах отображалась информация о пользователе, передаем в виде текста ID и полное имя, а также используем возможности библиотеки time , чтобы определить время, когда писал пользователь:
logging.info(f' ')
Здесь отойдем в сторону и проверим корректность работы модуля time . Сделать это можно в терминале: для этого напишем import time , а затем — time.asctime
Вернемся к коду. Поскольку функция, которую мы используем, асинхронна, вместо обычного для функций return используем await :
await message.reply(f"Привет, !")
Ответить пользователю в боте можно несколькими способами — в данном случае используем reply. Выше в переменной MSG мы задали стандартное сообщение: «Программировал ли ты сегодня, <>?». Зададим частоту напоминаний: семь раз каждые семь суток (60х60х24 — количество секунд в одних сутках) с момента отправки команды /start боту от пользователя:
for i in range(7): await asyncio.sleep(60*60*24)
Затем настроим отправку сообщения с указанием имени пользователя в этом же цикле:
await bot.send_message(user_id, MSG.format(user_name))
Третий этап: финал
Переходим к финальной части: в конце скрипта напишем несколько строк. Они могут показаться странными для новичка, но это общепринятая практика, к которой многие программисты прибегают при разработке. В этой строке мы проверяем, равна ли переменная __name__ строке «__main__» . Это условие всегда будет True, если мы запускаем этот файл как python-скрипт через терминал:
if __name__ == '__main__':
Теперь делаем нашего бота доступным в сети:
executor.start_polling(dp)
Сохраняем файл. Запускаем бота в терминале, открытом в папке проекта, с помощью команды python bot.py .
Вернемся в BotFather и перейдем по ссылке, которую получили вместе с токеном. Нажимаем «Начать» — готово, бот, написанный меньше, чем в 30 строк, работает.
Так выглядит его код целиком:
import time import logging import asyncio from aiogram import Bot, Dispatcher, executor, types TOKEN = "здесьбудетваштокенот@BotFather" MSG = "Программировал ли ты сегодня, <>?" logging.basicConfig(level=logging.INFO) bot = Bot(token=TOKEN) dp = Dispatcher(bot=bot) @dp.message_handler(commands=["start"]) async def start_handler(message: types.Message): user_id = message.from_user.id user_name = message.from_user.first_name user_full_name = message.from_user.full_name logging.info(f' ') await message.reply(f"Привет, !") for i in range(7): await asyncio.sleep(60*60*24) await bot.send_message(user_id, MSG.format(user_name)) if __name__ == "__main__": executor.start_polling(dp)
В следующий раз подробно расскажем, как написать подобный бот на языке программирования JavaScript. Подписывайтесь, чтобы не пропустить инструкцию.
Пишем Телеграм бота на Python c использованием API ChatGPT

Данная статья является вольным переводом статьи на medium.com, плюсом от себя реализация API ChatGPT в Телеграм боте.
Тема как написать телеграм бота уже довольно тривиальная, статей в интернете полно, поэтому тут я затронул это дело не так глубоко, ниже выложу ссылки на исходный код, разобраться будет не сложно. Основным мотивом написания статьи послужил тот факт, что ChatGPT не доступен в ряде стран, в том числе в России, и хотелось сделать его по настоящему общедоступным.
Готовый/работающий телеграм бот ChatGPT доступен тут.
На вопрос «Кто ты?» сама нейросеть отвечает примерно следующее «Я — ChatGPT, крупнейшая языковая модель, созданная OpenAI. Я разработана для обработки естественного языка и могу помочь вам ответить на вопросы, обсудить темы или предоставить информацию на различные темы».
Другими словами, по моему субъективному мнению нейросеть затачивается в первую очередь для поддержки разговора, в идеале показать, что там сидит живой человек, а не обученная AI модель. Поэтому когда будете играть с чатом не забывайте об этом, не следует ожидать от чата достоверных и точных данных, или глубокого смысла, сейчас она не об этом, пока еще не об этом.
Итак, как получить доступ к сервису ChatGPT из запрещенных стран написано в статье на хабре, хочу обратить ваше внимание, что будет необходимо сперва создать gmail почту с подтверждением по СМС на иностранный номер телефона, затем при регистрации на сайте ChatGPT также подтвердить номер телефона по СМС, и эти два номера телефона совсем не обязательно должны быть одинаковыми, поэтому сервисы по продаже номеров мобильных телефонов на одну смс вполне годятся.
Установка пакета
Сперва устанавливаем необходимый пакет в python:
# Install openai pip install openai # Import Library import openai
Подробнее об API OpenAI можно прочитать в документации:
Получаем API ключ
Сгенерировать API ключ можно после регистрации на сайте по адресу:
# Предоставляем ключ API openai.api_key = "Your_Key"
Выбираем обученную модель
Выбираем обученную модель, а именно “text-davinci-003”, она является самой мощной моделью GPT-3 и обучалась на данных до июня 2021 года. Узнать больше о различных моделях Вы можете здесь:
# Выбираем обученную модель engine="text-davinci-003"
Проверяем модель
Протестируем модель! Начнем с того, что попросим ChatGPT назвать лучшую Python библиотеку по машинному обучению:
# Запрос prompt = "Назови лучшую Python библиотеку по машинному обучению" # Модель completion = openai.Completion.create(engine=engine, prompt=prompt, temperature=0.5, max_tokens=1000)
Код выше указывает использовать модель “text-davinci-003”, с температурой 0,5. Температура представляет собой число от 0 до 1. Меньшее число означает более четко определенный ответ, в то время как большее число позволяет модели брать на себя больший риск. Ответ будет выглядеть примерно так:
# Выводим ответ print(completion)

Выводим только текст ответа:
# Печатаем только текст ответа print( completion.choices[0]['text'] ) У меня был такой ответ: Scikit-learn.
Идем дальше! Как насчет того, чтобы прописывать вопрос в терминале и там же получать ответ:
prompt = str(input()) completion = openai.Completion.create(engine=engine, prompt=prompt, temperature=0.5, max_tokens=1000) print('\nОтвет:') print( completion.choices[0]['text'] )
Собственно в коде выше после запуска, скрипт ждет ввода данных из-за функции input(). Ответ будет получен только после ввода запроса.
Оборачиваем код в функцию
Для удобства, обернем полученный код Python в простую функцию:
# Функция для ChatGPT def ask(prompt): completion = openai.Completion.create(engine="text-davinci-003", prompt=prompt, temperature=0.5, max_tokens=1000) print( 'Вопрос:', prompt ) print( '\nОтвет:' ) print( completion.choices[0]['text'] )
Теперь все, что Вам нужно сделать, это написать свой вопрос в функции «ask()».
ask('самая красивая женщина на земле') # Ответ # На земле нет одной самой красивой женщины. Красота и прелесть относятся к индивидуальным вкусам и предпочтениям.
Как видим API ChatGPT прост в использовании, но имейте в виду, что ответы, которые он дает, не всегда на 100% верны.
Прикручиваем API ChatGPT к телеграм боту
Исходники телеграм бота выложил в гитхаб репозиторий.
Для создания телеграм бота нам понадобится токен, который мы можем получить у BotFather. Там же можно задать название бота, изображение и описание.
git clone git@github.com:ViktorAllayarov/ChatGPT_telegram_bot.git # переходим в папку с проектом cd ChatGPT_telegram_bot
Далее создаем локальное виртуальное окружение:
python3 -m venv env # или py -3.10 -m venv env
Переходим в виртуальное окружение и обновляем пакетный менеджер pip:
# для Linux/macOS source env/bin/activate для Windows source env/scripts/activate далее обновляем pip python -m pip install --upgrade pip устанавливаем все зависимости pip install -r requirements.txt
В файле main.py есть кусок кода, который тянет переменные среды окружения, с помощью библиотеки dotenv :
env = < **dotenv_values(".env.prod"), **dotenv_values(".env.dev"), # override >openai.api_key = env["API_KEY_CHATGPT"] bot = telebot.TeleBot(env["TG_BOT_TOKEN"]) db_link = env["DB_LINK"]
поэтому нам необходимо создать файл .env.prod или .env.dev (или оба файла) и задать там необходимые переменные
# файл .env.prod API ключ CHATGPT API_KEY_CHATGPT= # токен телеграм бота TG_BOT_TOKEN= # ссылка на БД SQLite3, # файл базы создастся в корне проекта # при первом запросе в боте # база записывает всех пользователей, которые пользуются ботом DB_LINK=db.db
Теперь можно запустить проект:
python main.py
Надеюсь, что эта статья была интересной и полезной, спасибо, что посетили ее на этом сайте.
