Данная статья написана по видео-ролику «ChatGPT OpenAI в Telegram на Python / Пишем Telegram-бота ChatGPT на Питоне» c небольшим дополнением — добавил в код проверку по id в телеграме.
Как ограничить доступ к боту телеграм (aiogram) — об этом читайте в конце данной статьи.
Если вы не сталкивались с питоном, то необходимо установить его. О том, как это сделать, подробно описано здесь.
Теперь приступим к созданию бота ChatGPT в Telegram.
Установка библиотек для телеграм-бота:
Первое, что нам нужно сделать — это установить библиотеки aiogram и OpenAI:
- Чтобы установить aiogram, введите в терминале:
pip install aiogram
- Чтобы установить OpenAI, введите в терминале:
pip install openai
Регистрация в OpenAI:
Чтобы добавить функционал ChatGPT в Telegram, для начала, необходимо зарегистрироваться здесь — https://platform.openai.com, о том как зарегистрировать аккаунт в ChatGPT на территории РФ, снято уже очень много видео.
Telegram бот на Python | Рассылка
Далее переходим в раздел API Keys и нажимаем кнопку «Create new secret key», копируем получившийся ключ.
Как создать бота в телеграм:
- Переходим по ссылке выше и запускаем бота, нажимаем кнопку «Меню»
- Вводим любое имя для нашего бота, отправляем сообщение
- Вводим логин нашего бота, по которому мы сможем его найти. Важно: login должен оканчиваться на bot (Пример правильного логина: illarion_bot), а так же логин должен быть уникальным
- Копируем токен API нашего бота (начинается после слов — «Use this token to access the HTTP API:»)
Пишем код телеграм-бота на Python:
Создаем любой файл с расширением .py , а в сам файл вставляем следующий код:
Замените токены Телеграм и OpenAI в коде на те, что мы получили выше.
Прописываются они здесь (строки кода номер 7 и 8):
token = ‘TELEGRAM_BOT_TOKEN’ openai.api_key = ‘OPENAI_KEY’
В данном коде используется языковая модель text-davinci-003, т.е. — Чат. Чтобы использовать другие модули — перейдите в раздел «Examples«, выберите необходимый модуль и замените фрагмент кода:
response = openai.Completion.create( model=»text-davinci-003″, prompt=message.text, temperature=0.9, max_tokens=4000, top_p=1.0, frequency_penalty=0.0, presence_penalty=0.6, stop=[» Human:», » AI:»] )
Замените данный фрагмент на аналогичный код из описания нужного модуля (начинается с «response =» и заканчивается «)»
Все это было пересказом видео одного программиста, бот мы создали и теперь то, зачем я пишу данную статью и то, что может помочь многим начинающим разработчикам на python.
Если вы запускаете код на GNU/Linux дистрибутивах, то на вторую строчку, после фрагмента import openai вставьте следующую строку:
import os
Как ограничить доступ к боту телеграм (aiogram)?
Находим строку 12, (пустая строка после dp = Dispatcher(bot), и в пустой строке вставляем следующий код:
users = — в фигурных скобках, через запятую, перечисляется id пользователей телеграма (вводить только числа), которые допущены к данному боту.
Как написать рассылку для телеграм бота на python
Узнать свой id в телеграме можно тут. Подставляем свои id, заменяем текст в скобках после message.answer (если это необходимо, так же не забывайте обернуть свой текст в кавычки «»)
Как сделать проверку по количеству введенных символов пользователя в aiogram?
Если количество введенных символов превышает 2000 — выводится ошибка с пояснением. Код следующий:
Если вы не делали проверку по id телеграм, то код вставляем на строку номер 12, (пустая строка после dp = Dispatcher(bot), и в пустой строке вставляем данный код.
Если вы сделали проверку по id, то вставляем после через строку после кода ограничения
Число 2000 в проверке — приблизительное. Читать подробнее об ограничениях OpenAI API >
Готово! ChatGPT в Telegram работает. Смотрите так же другие статьи, правда они в основном касаются веб-разработки.
Дата создания статьи: 09.02.2023
Понравилась статья? Поддержи
В этой серии статей мы с Вами рассмотрим как написать свой отдельный клиент Telegram, который будет собирать данные из интересных нам чатов, а также посмотрим, как сохранять эти сведения в свою базу данных.
Для создания отдельного клиента хорошо подойдет асинхронная библиотека «Telethon» (Вот репозиторий библиотеки). Сама библиотека может использоваться как для создания телеграм-ботов, так и для создания отдельных приложений работающих с API Telegram. Главным преимуществом является понятная документация в которой можно найти ответы на все вопросы (необходимо знание английского языка).
Создание нашего проекта начнем с регистрации аккаунта разработчика здесь
Вводим пришедший в Telegram численно-буквенный код и попадаем на страницу регистрации нового приложения. Заполняем форму, достаточно первых двух граф:
Если все введено верно вы увидите следующие сведения.
Сразу оговорюсь, данных будет немного больше, но нам важны параметры App api_id и App api_hash.
Поздравляю! Вы зарегистрировали ваше приложение в API Telegram. Закрывать страничку пока не стоит. Мы будем брать оттуда значения App api_id, App api_hash, Short_name для нашего приложения.
Переходим в PyCharm
Хорошим тоном будет не хранить в коде наш хэш и app_id, поэтому давайте сделаем красиво =) Используем библиотеку configparser для создания файла настроек. Создайте в корне проекта файл с расширением .ini (пример config.ini) и давайте поместим туда наши данные из аккаунта разработчика который мы зарегистрировали.
И да, я знаю про venv и переменные окружения. Вы можете использовать удобный вам метод.
Далее нас ждет самое интересное. Давайте установим в наш проект саму библиотеку Telethon командой «pip install telethon» и импортируем в проект класс TelegramClient из нашей установленной библиотеки.
import configparser from telethon import TelegramClient
Далее давайте настроим передачу наших данных в подключение из файла настроек
config = configparser.ConfigParser() config.read(«config.ini») # Присваиваем значения внутренним переменным api_id: str = config[‘Telegram’][‘api_id’] api_hash = config[‘Telegram’][‘api_hash’] username = config[‘Telegram’][‘username’] client = TelegramClient(username, api_id, api_hash) client.start()
Обратите внимание что в файле «config.ini» первой строкой мы указали [Telegram]. С помощью этих тэгов мы просто не будем путаться в переменных настроек и разделять их в одном файле.
Создадим нашу главную функцию и запросим у сервера телеграм сведения о нас.
async def main(): about_me = await client.get_entity(‘me’) print(about_me)
Наша библиотека Telethon асинхронная а значит функции и методы мы будем использовать с добавлением ключевых слов async и await (кстати можно и без них но не рекомендую)
Для того, что бы наш клиент не закрывался после запуска мы добавим в конце нашего файла такую запись
with client: client.loop.run_until_complete(main())
Первый запуск
При первом запуске в консоли PyCharm вас попросит ввести ваш номер телефона или токен бота
Это нужно, что бы создать файл сессии он будет хранится в корне проекта с расширением .session ( удалять их не стоит о них поговорим позднее)
Вводите ваш номер телефона в международном формате без «+»
Вам снова пришел код в аккаунт телеграмм только теперь из 5 цифр. Введите их.
Поздравляю вы запустили ваш клиент Телеграм.
Так что же вернула нам наша функция main
about_me = await client.get_entity(‘me’)
наша переменная about_me теперь содержит объект User с специфическим типом данных библиотеки telethon.
Внутри объекта вы можете увидеть данные о вашем аккаунте.
Для того, что бы посмотреть отдельные сведения давайте сделаем вот такой код
async def main(): about_me = await client.get_entity(‘me’) print(‘Имя:’, about_me.first_name) print(‘Ник:’, about_me.username) print(‘Id’, about_me.id) print(‘Телефон’, about_me.phone)
Ну в вашем случае звездочек не будет.
Только что сервер Телеграм рассказал вам о вас чуть больше чем вы видите в своем аккаунте. В следующей статье мы немного обнаглеем и соберем с серверов Телеграм сведения об участниках какого-нибудь чата.
Утечка данных из Telegram — проблема Telegram.
прим. автора
Все сведения которые мы будем получать являются общедоступными. И эти же сведения мы можем увидеть и через официальное приложение. Но я все-таки призываю Вас не использовать полученные знания в плохих целях. Вся изложенная информация подается с целью образования и популяризации языка программирования, его библиотек и возможностей.
Полный код парсера Телеграм
import configparser from telethon import TelegramClient config = configparser.ConfigParser() config.read(«config.ini») # Присваиваем значения внутренним переменным api_id: str = config[‘Telegram’][‘api_id’] api_hash = config[‘Telegram’][‘api_hash’] username = config[‘Telegram’][‘username’] client = TelegramClient(username, api_id, api_hash) client.start() async def main(): about_me = await client.get_entity(‘me’) print(‘Имя:’, about_me.first_name) print(‘Ник:’, about_me.username) print(‘Id’, about_me.id) print(‘Телефон’, about_me.phone) with client: client.loop.run_until_complete(main())
Подпишитесь на рассылку
Источник: happypython.ru