Боты повсюду. Кажется, что еще вчера мы даже не подозревали об их существовании, а сейчас уже с трудом можем представить свою жизнь без них. Они стали широко популярны среди многочисленных активных пользователей мессенджеров, поскольку имеют различные сферы применения – от развлекательного контента, включая пошаговые игры и сбор бонусных баллов в ресторанах, до ведения личного плана питания, отслеживания доставки и даже осуществления платежей за различные услуги.
Почему они так популярны? В чем их секрет? Я думаю, что более правильно будет спросить, почему они удобнее, чем приложение. И на это есть несколько причин.
Чем Telegram Bot лучше приложения?
(Этот раздел можно пропустить, если вы и так знаете, почему вам нужен именно бот).
1. Минималистичный и простой дизайн
По сравнению с многочисленными приложениями с различным дизайном, когда приходится запоминать, где и что нажимать, боты более универсальны и просты. Telegram Bot предлагает простое взаимодействие посредством текстов и кнопок.
Telegram магазин на Python #2. Оформление заказа, удаление сообщений
Вообще, никто не требовал от ботов красочного дизайна. Однако с весны 2022 года Telegram предоставил разработчикам ботов инструменты для создания бесконечно гибких интерфейсов с помощью JavaScript. Теперь, если у вас есть опыт создания ботов для Telegram, знание Python и мотивация, вы можете создать полноценную замену обычному сайту.
2. Минимум рекламы и фокус на потребностях пользователей
Вам не придется устанавливать сотни приложений для каждого сервиса, если всю необходимую помощь вам окажет Telegram Bot. Это особенно полезно для ресторанов и магазинов.
Клиенты редко горят желанием устанавливать приложения из кучи мест, которые они посетили. Из-за этого владельцы бизнеса упускают отзывы клиентов и теряют с ними связь. Если бы у каждого из этих мест был свой бот, доступный в разных мессенджерах, это было бы удобнее и дружелюбнее для пользователей.
Никто не любит заполнять память своего телефона ненужными приложениями, которые будут использоваться один или два раза. Однако клиентам необходимо взаимодействовать с владельцами услуг, и они будут рады сделать это через свой любимый мессенджер.
3. Отсутствие необходимости в регистрации, авторизации и постоянных перелогинах
При настройке Telegram Bot можно использовать Python и его библиотеки для автоматизации авторизации. Это позволяет пользователю пройти авторизацию только один раз при добавлении бота в чат. Клиент может использовать бота столько, сколько нужно, а когда в нем больше нет необходимости, пользователь просто блокирует бота. Вот и все, легко! Больше никаких сбросов пароля.
Не нужно запоминать пароли или используемые логины. Добавление бота на сайт или в приложение увеличивает количество пользовательской аудитории, так как делает общение с клиентами и оказание им помощи намного проще и удобнее.
Кроме того, популярность мессенджера также играет свою роль. А если говорить о ботах в Telegram, то летом 2022 года Telegram объявил, что число ежемесячных активных пользователей превысит 700 миллионов.
Итак, мы описали основные преимущества ботов, и теперь у вас должно появиться желание создать своего собственного бота. Давайте перейдем к практике. Но сначала мы рассмотрим вопросы, которые необходимо решить на этапе проектирования.
Нюансы разработки Telegram Bot
Выше мы определили причины создания бота. В этой части мы планируем рассказать о том, как создать приложение и какие инструменты разработки использовать. Далее мы покажем, как создать Telegram-бота на Python и научим его разворачивать.
Поскольку это статья по Telegram Bot для начинающих, примеры кода не должны быть сложными. Мы запустим сервер с одним эндпоинтом, который будет получать наши сообщения в Telegram и отправлять ответ.
Для этого мы будем использовать следующие инструменты:
- bottle – для нашего сервера; простой и легкий микро-веб-фреймворк WSGI
- requests – для отправки запросов в telegram. Библиотека request не нуждается в чрезмерном представлении. Она повсеместно используется во всем мире в самых разных проектах.
Примечание: вам необходимо установить эти инструменты на свой компьютер. Они понадобятся нам позже. Для этого давайте создадим виртуальное окружение в директории проекта и установим необходимые инструменты через pip. Если вы не знакомы с тем, что такое окружение, просто установите необходимые библиотеки, выполнив pip install bottle requests .
python3 -m venv venv . ./venv/bin/activate pip install bottle requests
- ngrok – это приложение, которое предоставляет нам публичные URL-адреса для взаимодействия с Telegram WebHook на этапе разработки (см. информацию о WebHook ниже). Это полезно, так как Telegram не сможет установить соединение с нашим локальным сервером, потому что мы не можем указать наш локальный адрес в конфигурации Telegram API. Необходимо скачать ngrok с официального сайта и поместить установленное приложение в папку с проектом.
Как насчет того, чтобы создать своего первого бота?
В этой части вы найдете подробное руководство по созданию Telegram Bot. Также мы рассмотрим полезные инструменты для его разработки на Python.
Прежде всего, чтобы создать Telegram-бота, вам нужно зарегистрироваться в Telegram (очевидно). Для тестирования основных концепций я рекомендую использовать веб-клиент Telegram.
- свой собственный TOKEN
- URL telegram api – api.telegram.org/
- ссылка на документацию
Вот, собственно, и все. На данный момент бот на 100% пассивен.
Вам нужно инициализировать диалог с ботом. Откройте поиск и введите имя вашего бота. Начните диалог, нажав на кнопку /start . Введите что-то вроде “Привет”. Это сообщение очень важно, так как это первое обновление, которое получит ваш бот.
Если это ваш первый опыт создания API, вы можете легко понять идею с помощью веб-браузера. Откройте новую вкладку в браузере и используйте URL Telegram api: api.telegram. org/bot/getUpdates .
Когда вы открываете этот URL в браузере, вы делаете запрос на сервер Telegram, который отвечает JSON. Ответ напоминает словарь Python. Вы должны увидеть что-то вроде этого:
<«ok»:true,»result»:[<«update_id»:523349956, «message»:<«message_id»:51,»from»:<«id»:303262877,»first_name»:»YourName»>,»chat»:,»date»:1486829360,»text»:»Hello»>>]>
Примечание редакции: кратко о формате JSON можно почитать в статье “Кодирование JSON на Python”.
Если вы откроете документацию бота и посмотрите раздел метода /sendMessage, то заметите, что этот метод требует 2 дополнительных параметра: chat_id и text . В строке поиска браузера вы можете соединить параметры цепочкой, используя ? для первого и text=test
Попробуйте получить ответ от вашего бота, заменив chat_id на тот, который вы получили, вызвав /getUpdates . В моем случае это 303262877. Текстовый параметр выбирайте сами. Запрос должен выглядеть следующим образом:
api.telegram. org/ bot/sendMessage?chat_id= простое уведомление о событии через HTTP POST.
Объясню немного подробнее: иногда взаимодействие между приложениями в сети требует немедленной реакции на событие, в то время как решения для постоянных и непрерывных соединений в большинстве случаев громоздки, требовательны и трудно поддерживаются. В этом случае лучшим и самым простым решением является немедленная отправка колбэка через HTTP (чаще всего POST).
Другими словами, это решение обеспечивает реакцию на любое событие внутри одного приложения путем отправки HTTP POST запроса другому подключенному приложению, чтобы проинформировать его или заставить его ответить.
Такая концепция называется WebHook. Она широко используется для:
- получения данных в режиме реального времени
- получения данных и их передачи
- обработки данных и предоставления чего-то взамен
Кажется, что это лучшее решение для взаимодействия клиента Telegram (приложения Telegram) с нашим проектом.
Написание кода Telegram Bot
Наконец, мы приступаем к самой практической части, где вы сможете написать Telegram-бота.
Основная задача – научить нашего бота отвечать на полученные сообщения.
Во-первых, создайте папку для нашего проекта бота. Во-вторых, создайте в этой папке файл bot.py для сервера бота.
1. Давайте попробуем запустить наш сервер. Для этого откройте bash в папке bot.
python bot.py
В результате вы должны увидеть что-то вроде этого:
2. Затем откройте новую вкладку. В ней мы запустим ngrok ( ./ngrok http ):
./ngrok http 8080
В результате вы увидите что-то вроде этого:
3. Теперь давайте установим WebHook.
Сейчас мы сообщим Телеграму, куда ему отправлять сообщения о событиях в боте. Для этого откройте браузер и перейдите по ссылке
https://api.telegram.org/bot/setWebHook?url=https://.ngrok.io/
- Примечание: чтобы найти ngrok URL, необходимо запустить ngrok. Затем на экране, подобном приведенному ниже, вы найдете URL (он выделен на нашем скриншоте). Этот URL вы используете в ссылке для установки WebHook.
Ответ на переход по ссылке должен иметь следующий вид:
Давайте проверим, удалось ли вам настроить WebHook. Перейдите по этой ссылке, используя ваш токен:
https://api.telegram.org/bot/getWebhookInfo
Если все правильно, вы увидите перед ключом URL то же значение адреса ngrok, которое вы указали при настройке.
Поздравляем, it’s alive!
Теперь нам нужно реализовать механизм запроса/ответа на сообщение.
По сути, наш эндпоинт получает данные в формате JSON. Поэтому, как правило, вы должны увидеть сообщение с данными.
from bottle import run, post, request as bottle_request #
Вы должны увидеть что-то вроде этого на вкладке консоли, где запущен сервер.
, ‘message’: , ‘from’: , ‘is_bot’: False, ‘first_name’: », ‘last_name’: », ‘username’: », ‘language_code’: ‘en-En’>, ‘chat’: , ‘first_name’: », ‘last_name’: », ‘username’: », ‘type’: ‘private’>, ‘date’: 1535022558, ‘text’: ‘1’>>
Более подробную информацию о параметрах вы можете найти в официальной документации Telegram.
Теперь нам нужно извлечь chat_id и text , чтобы отправить наше сообщение пользователю.
Итак, мы уже подготовили ответ. Давайте отправим его Telegram-боту.
После всех настроек и написания, если все работает, давайте попробуем пообщаться с нашим ботом.
Теперь давайте сделаем наш код более читабельным и реализуем структуру ООП.
import requests from bottle import Bottle, response, request as bottle_request class BotHandlerMixin: BOT_URL = None def get_chat_id(self, data): «»» Method to extract chat id from telegram request. «»» chat_id = data[‘message’][‘chat’][‘id’] return chat_id def get_message(self, data): «»» Method to extract message id from telegram request. «»» message_text = data[‘message’][‘text’] return message_text def send_message(self, prepared_data): «»» Prepared data should be json which includes at least `chat_id` and `text` «»» message_url = self.BOT_URL + ‘sendMessage’ requests.post(message_url, json=prepared_data) class TelegramBot(BotHandlerMixin, Bottle): BOT_URL = ‘https://api.telegram.org/bot000000000:aaaaaaaaaaaaaaaaaaaaaaaaaa/’ def __init__(self, *args, **kwargs): super(TelegramBot, self).__init__() self.route(‘/’, callback=self.post_handler, method=»POST») def change_text_message(self, text): return text[::-1] def prepare_data_for_answer(self, data): message = self.get_message(data) answer = self.change_text_message(message) chat_id = self.get_chat_id(data) json_data = < «chat_id»: chat_id, «text»: answer, >return json_data def post_handler(self): data = bottle_request.json answer_data = self.prepare_data_for_answer(data) self.send_message(answer_data) return response if __name__ == ‘__main__’: app = TelegramBot() app.run(host=’localhost’, port=8080)
Вот, собственно, и все. Теперь вы создали работающего бота для Telegram, на базе Python и даже умеющего писать фразу “racecar” задом наперед. Поздравляем!
1 комментарий к “Создание Telegram Bot с помощью Python”
- Пингбэк: Простой Telegram бот для логирования
Источник: pythonturbo.ru
Одобрение заявки в закрытую группу ботом, удаление спама, временная блокировка участников, реализация команд для управления группой на Python
В этой статье мы рассмотрим создание Telegram-бота на Python, который будет автоматически одобрять заявки на вступление в закрытую группу. Мы будем использовать библиотеку Aiogram для работы с Telegram API.
Необходимые библиотеки и инструменты
- Python 3.7+
- Aiogram ( pip install aiogram )
- Asyncio ( pip install asyncio )
Создание бота и получение токена
Код бота
Запуск бота
Замените ‘your_bot_token’ на полученный токен вашего бота и YOUR_CHAT_ID на ID закрытой группы. Запустите скрипт, и бот начнет автоматически одобрять заявки на вступление в закрытую группу.
Обратите внимание: Для работы бота в закрытой группе, добавьте его туда в качестве администратора с необходимыми правами для управления участниками.
Теперь у вас есть бот, который автоматически одобряет заявки на вступление в закрытую группу. Вы можете дополнительно настроить бота для выполнения других задач, таких как удаление спама или реализация дополнительных команд для управления группой.
Расширение функционала бота
Вы можете добавить дополнительные функции в своего бота для управления закрытой группой, например:
Удаление спама
Удаление спама: Бот может удалять сообщения, содержащие определенные ключевые слова или ссылки. Для удаления сообщений, содержащих определенные ключевые слова или ссылки, вы можете использовать обработчик сообщений.
Временная блокировка участников
Временная блокировка участников: Бот может блокировать участников на определенный период времени, если они нарушают правила группы. Для временной блокировки участников, нарушающих правила, вы можете использовать следующий пример кода:
Реализация команд для управления группой
Реализация команд для управления группой: Вы можете добавить команды для администраторов группы, которые позволят управлять участниками группы прямо из чата.
Вы можете реализовать команды для администраторов, которые позволяют управлять участниками группы прямо из чата.
Здесь мы создали две команды /promote и /demote , которые используются для повышения или понижения участников группы.
Заключение
В этой статье мы рассмотрели создание Telegram-бота на Python для автоматического одобрения заявок на вступление в закрытую группу, удаление спама, а также реализовали временную блокировку участников и сделали несколько команд для управления группой. Это полезный инструмент для управления группами и обеспечения контроля над доступом к группе. Вы можете дополнительно настроить и расширить функционал бота, чтобы он выполнял другие задачи по управлению группой и обеспечивал лучший опыт для участников группы.
Источник: devprac.ru
Три простых шага для отправки сообщения в Telegram используя Python
Отправлять сообщение в телеграмм может оказаться полезным при запуске ресурсоемких операций. Например скрипт который отработал один час, должен отправить вам сообщение о статусе завершившейся операций. Вам вероятно, понадобится простой скрипт, чтобы отправить сообщение, когда ваша операция завершит работу. Для этого мы можем легко написать функцию Python, которая отправляет вам сообщение Telegram всякий раз, когда вы ее вызываете.
Создание Telegram-бота с помощью BotFather
- Откройте приложение Telegram и найдите BotFather. (Встроенный бот Telegram, который помогает пользователям создавать собственных ботов Telegram)
- Введите /newbot, чтобы создать нового бота.
- Дайте вашему боту название.
- Скопируйте токен Telegram для вашего нового бота.
Примечание: не загружайте свой токен онлайн, так как любой, у кого есть ваш токен, получит полный контроль над вашим ботом Telegram.
Получение идентификатора chat ID
В Telegram у каждого чата есть идентификатор чата. Нам нужен этот идентификатор для отправки сообщений в Telegram с использованием Python.
- Отправьте своему боту в Telegram сообщение (любое)
- Запустите этот скрипт Python, чтобы найти свой chat ID
import requests TOKEN = «YOUR TELEGRAM BOT TOKEN» url = f»https://api.telegram.org/bot/getUpdates» print(requests.get(url).json())
Этот скрипт вызывает функцию getUpdates, которая проверяет наличие новых сообщений в чатах. Мы можем найти наш chat ID из возвращенного JSON (тот, что выделен красным)
Note: Если вы не отправите сообщение своему боту в Telegram, ваши результаты могут быть пустыми.
- Скопируйте и вставьте идентификатор чата в следующий шаг.
Отправка сообщения Telegram с помощью Python
Скопируйте и вставьте 1) ваш токен бота Telegram и 2) ваш chat ID из предыдущих 2 шагов в следующий скрипт Python. (И также настройте свое сообщение)
import requests TOKEN = «YOUR TELEGRAM BOT TOKEN» chat_id = «YOUR CHAT ID» message = «hello from your telegram bot» url = f»https://api.telegram.org/bot/sendMessage?chat_id= print(requests.get(url).json()) # this sends the message
Запустите скрипт и проверьте свой Telegram!
Источник: simpleitrunner.ru