Телеграм бот для рассылки сообщений python

Данная статья написана по видео-ролику «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«, выберите необходимый модуль и замените фрагмент кода:

Еще по теме:  Узнать адрес фамилию в Телеграмме по id

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 численно-буквенный код и попадаем на страницу регистрации нового приложения. Заполняем форму, достаточно первых двух граф:

Парсинг телеграм-чатов отдельным приложением (часть 1), изображение №2

Если все введено верно вы увидите следующие сведения.

Парсинг телеграм-чатов отдельным приложением (часть 1), изображение №3

Сразу оговорюсь, данных будет немного больше, но нам важны параметры App api_id и App api_hash.

Поздравляю! Вы зарегистрировали ваше приложение в API Telegram. Закрывать страничку пока не стоит. Мы будем брать оттуда значения App api_id, App api_hash, Short_name для нашего приложения.

Переходим в PyCharm

Хорошим тоном будет не хранить в коде наш хэш и app_id, поэтому давайте сделаем красиво =) Используем библиотеку configparser для создания файла настроек. Создайте в корне проекта файл с расширением .ini (пример config.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.

Внутри объекта вы можете увидеть данные о вашем аккаунте.

Парсинг телеграм-чатов отдельным приложением (часть 1), изображение №7

Для того, что бы посмотреть отдельные сведения давайте сделаем вот такой код

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

Рейтинг
( Пока оценок нет )
Загрузка ...