Как добавить бота с файлами в Телеграм

Боты повсюду. Кажется, что еще вчера мы даже не подозревали об их существовании, а сейчас уже с трудом можем представить свою жизнь без них. Они стали широко популярны среди многочисленных активных пользователей мессенджеров, поскольку имеют различные сферы применения – от развлекательного контента, включая пошаговые игры и сбор бонусных баллов в ресторанах, до ведения личного плана питания, отслеживания доставки и даже осуществления платежей за различные услуги.

Почему они так популярны? В чем их секрет? Я думаю, что более правильно будет спросить, почему они удобнее, чем приложение. И на это есть несколько причин.

Чем Telegram Bot лучше приложения?

(Этот раздел можно пропустить, если вы и так знаете, почему вам нужен именно бот).

1. Минималистичный и простой дизайн

По сравнению с многочисленными приложениями с различным дизайном, когда приходится запоминать, где и что нажимать, боты более универсальны и просты. Telegram Bot предлагает простое взаимодействие посредством текстов и кнопок.

ПРОВЕРКА ТГ БОТА НА ЧЕСТНОСТЬ 😎!

Вообще, никто не требовал от ботов красочного дизайна. Однако с весны 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) с нашим проектом.

Схематическая иллюстрация концепции WebHook

Написание кода 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”

  1. Пингбэк: Простой Telegram бот для логирования

Источник: pythonturbo.ru

Архитектура бота для Telegram

В статье пойдет речь о запуске платформы на базе Telegram бота, предназначенной для взаимодействия с самыми разными сервисами, например с GitHub и Яндекс.Метрикой.

Платформа позволяет создавать плагины для работы с каждым из них. Вы сможете в один клик настроить оповещения о коммитах, pull-реквестах, закрытии issues из каждого репозитория в нужный чат и установить внешний вид этих оповещений. Вы даже можете попросить бота присылать вам свежую статистику из Яндекс.Метрики в удобное для вас время. Мы в команде CodeX используем данное решение уже несколько месяцев и не представляем себе, как можно было работать без этого.

Для взаимодействия с ботом вы можете воспользоваться нашим облачным решением или установить бота самостоятельно на своем сервере.

Облачное решение

Запуск бота на своем сервере

Для запуска CodeX.bot вам потребуется выполнить следующие действия:

  • установить дополнительные библиотеки для языка Python
  • клонировать наш репозиторий с кодом бота
  • зарегистрировать нового бота в Telegram
  • отредактировать файл конфигурации

Установка дополнительных библиотек

CodeX.bot написан на языке Python с использованием некоторых дополнительных библиотек. Вам нужно установить их, прежде чем начать работу:

Клонирование репозитория с кодом

Клонировать репозиторий CodeX.bot можно выполнив команду:

git clone [email protected]:codex-team/codex.bot.git

Для работы системы вам понадобится создать Telegram бота. Просто следуйте инструкции из статьи или официального руководства.

Конфигурация

Теперь вам необходимо настроить конфигурацию системы. Для этого переименуйте директорию local.sample в local и отредактируйте содержимое файла config.py в соответствии с вашими предпочтениями:

SERVER_HOST — адрес вашего сервера. Если вы пользуетесь прокси ngrok, он будет выглядеть приблизительно так: ‘http://9b812f5d.ngrok.io’. LOCAL_SERVER_PORT — порт, на котором будет запущен ваш локальный сервер. LOGS_FILENAME — адрес файла для логов. По умолчанию равен ‘logs/logs.log’. SSL_CERTIFICATE — содержимое SSL сертификата сервера. По уполчанию равен None. API_TOKEN — токен вашего Telegram бота через которого будет работать система. TELEGRAM_CALLBACK_URL — адрес, по которому CodeX.bot будет обрабатывать все сообщения от Telegram. Например: ‘https://9b812f5d.ngrok.io/telegramcallback’.

Установка Telegram Webhook

Telegram позволяет установить webhook для ботов. Это нужно для того, чтобы при каждом сообщении, отправленном в чат с ботом, Telegram устанавливал соединение с вашим сервером и передавал ему JSON с текстом и сервисной информацией. Поскольку Telegram работает только по протоколу HTTPS, вам понадобится SSL сертификат. Если у вас есть доверенный сертификат, то ничего дополнительно настраивать не придется, в случае использования самоподписанного сертификата, его нужно будет отправить при установке вебхука.

Еще по теме:  Изменение профиля группы Telegram что это

Сгенерировать сертификат можно следующей командой:

openssl req -new -x509 -nodes -newkey rsa:1024 -keyout server.key -out server.crt

Далее, openssl предложит вам заполнить несколько полей информации, важно указать поле FQDN равное адресу хоста-callback’а.

Для установки вебхука можно воспользоваться пакетом python-telegram-bot для Python.

import telegram TOKEN = » HOST = » # Параметр FQDN сертификата должен совпадать с данным адресом PORT = 8443 CERT = ‘path/to/ssl/server.crt’ bot = telegram.Bot(TOKEN) bot.setWebhook(webhook_url=’https://%s:%s/%s’ % (HOST, PORT, TOKEN), certificate=open(CERT, ‘rb’))

К счастью, CodeX.bot сделает установку вебхука за вас, если в настройках ему передать соответствующий параметр. Например:

SSL_CERTIFICATE = open(«/path/to/ssl/server.crt», ‘rb’)

Структура файловой системы

В файле local/db.py содержатся настройки базы данных, где CodeX.bot хранит всю необходимую информацию. По умолчанию у вас будет использоваться SQLite.

В файле components/core.py вы можете найти несколько глобальных функций, которые используются всеми компонентами системы:

  • send_to_chat — отправка сообщений в Telegram чат.
  • generate_hash — генерация уникальных идентификаторов для пользователей и чатов.
  • bgcolors — для вывода отладочной информации в консоль.

В файле main.py содержится код запуска системы. Запуск выполняется в следующем порядке:

  • Подключение файла вывода логов.
  • Установка вашего сервера в качестве webhook для Telegram бота.
  • Загрузка плагинов, описанных в глобальной конфигурации.
  • Запуск веб-сервера, получающего оповещения от Telegram бота.

В файле modules/core/server.py находится код веб-сервера, который обрабатывает сообщения от Telegram и передает их нужным плагинам, вызывая у них метод telegram_command:

Разработчик плагина сам устанавливает какие команды обрабатывать. Например, модуль ответственный за Github оповещения принимает команду /github_start примерно так:

def telegram_command(self, message): if ‘/github_start’ in message.text: .

Плагин может самостоятельно принимать оповещения от сторонних сервисов в специальном методе set_rules:

def __init__(self): self.module_name = ‘github’ self.uri_prefix = ‘/github’ def set_rules(self, app): app.add_url_rule(‘%s/test’ % self.uri_prefix, ‘%s_test’ % self.module_name, test) app.add_url_rule(‘%s/’ % self.uri_prefix, ‘%s_callback’ % self.module_name, callback, methods=[«POST»])

Подробнее работу основных плагинов рассмотрим в следующей статье.

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.

Источник: codex.so

Пишем бота для Telegram на php

Сегодня telegram является активно развивающейся платформой, а потому актуально будет осветить для широкой аудитории тему создания собственных ботов для этого мессенджера. Хотя-бы поверхностно. Для полноценного освящения этой темы я планирую написать две статьи, первая для php вторая для c#. Почему две? Дело в том, что правила телеграма(защищенность) задают для ботов очень жесткие правила размещения. В частности бот должен находиться на https домене. Сегодня мы будем рассматривать именно такой вариант бота, как наиболее очевидный. К сожалению, разрабатывать бота вам придется прямиком на сервере, то есть я предполагаю что у читателя уже есть свой домен и собственно уже налажен ftp доступ к этому домену. На дэнвере php боты работать не будут. Ну ладно не буду врать — можно сделать чтобы оно и на дэнвере работало, но давайте не будем писать такие велосипеды в этой статье и подождем до следующей, в которой я как раз опишу данный способ на примере с c#(а нахрена нам php с дэнвером когда есть такой замечательный инструмент). В этой статье мы общаемся с telegram api через webhook, это для особо прошаренных. Читающий статью человек должен уметь пользоваться: ftp, ssh(консоль сервера).

Шаг первый. Домен и https

Начнем пожалуй с домена, на котором будет размещаться наш будущий бот. Я беру свой старый домен — вебача. Как вы видите там нет https и я не покупал для этого домена https сертификат. Но тем не менее сертификат нужен иначе бота там не разместить. К счастью, есть cloudflare, который, в числе прочих преимуществ, дает нам возможность использовать эмулированный https. Переносим наш домен туда, это делается очень быстро бесплатно и автоматически. Зарегистрируйтесь, нажмите addsite поменяйте ns адреса у домена и все будет установлено. Если этого краткого описания вам не достаточно — можете нагуглить в сети мануал по подключению cloudflare, моя статья этому не посвящена.

И так мы подключили домен. Теперь надо перейти на панель своего сайта:

После чего выбрать вкладку Crypto и пункт SSL установить в flexible.

Что делает этот пункт? Он эмулирует безопасное соединение до вашего сайта.
Проверяем — https://2webach.ru/

Как вы видите — все работает. У вас должно быть абсолютно так-же, без этого, бота вы запустить не сможете! Будет выдаваться ошибка «HTTP Version Not Supported», так что если вы пришли на эту страницу в поисках решения — перечитайте данный пункт внимательно и повторите все то я описал.

Шаг второй. Знакомство с Botfather.

Botfather — это такой бот, через которого регистрируют все остальные боты. Без него нам никак не обойтись, поэтому давайте откроем telegram и перейдем по ссылке — BotFather

Там все крайне просто, вбиваем /help и смотрим на список доступных команд:

собственно сейчас нас интересует команда /newbot, пишем ее и создаем бота указывая его название. В данном случае я назову своего бота — Рев.ком.стих и будет он у нас выдавать стихи о Маяковского и Есенина (когда я его доделаю, однако весь процесс в эту статью я включать не буду).

Нам выдадут токен, на скриншоте он замазан в целях…, ну вы сами понимаете. Этот токен нам и нужен, сохраните его куда-нибудь в текстовый файл, он нам еще пригодится.

Далее можно задать оформление для бота. Например картинку — логотип. Для этого используем команду /setuserpic после чего загружаем картинку. Так-же задаются описание бота и прочие вещи до которых вы допрете и без моего участия.

Ну и чтобы проверить установилась картинка или нет переходим на бота вбивая его имя через собачку в поиск

Теперь надо сделать боту доступ к сообщениям пользователей, то есть выключить нахер приватный режим. Если мы планируем добавлять бота в группы или конфы, назовите как хотите, в любом случае приватность нам нахер не нужна. Чтобы ее выключить вбиваем команду /setprivacy после чего выбираем пункт — disabled. Обязательно выполните этот шаг, если вы хотите сделать действительно интерактивного бота.

Теперь самое время заняться backend частью, а именно написанием кода для команд нашего бота, но сначала настроим среду разработки.

Шаг третий. Среда для разработки.

Собственно в качестве библиотеки для обращения к API я буду использовать данный проект — TelegramBotApi у которого нифига нет документации, зато код довольно просто читается. В любом случае в этой статье я постараюсь описать максимально подробно все варианты работы с этой библиотекой, так что документация вам не понадобится вообще.

Но сначала давайте ее установим. Для этого будем использовать composer. Короче говоря будем делать все по «правилам», если этот термин вообще применим к php. Хороший язык, гибкий, не вгоняет в рамки, я знаете ли люблю его за эту вот гибкость. Но любителям «сапога в жопе» конечно всегда больше подходят ruby или какой-нибудь go в котором даже нормально библиотеку в своей папке не разместить, только в gopath. Однако так уж вышло, что данную библиотеку руками ставить будет геморойнее, чем через composer, я тут непричем, просто экономия времени. Для начала нам понадобится ssh соединение с вашим сервером. Для таких дел я предпочитаю ZOC terminal т.к. работаю из под windows. Скачать этот продукт можно на торрентах, сами найдете короче. Далее запускаем ваш терминал и заходим на сервер, после чего переходим к директории нашего домена(команда cd).

Еще по теме:  Не получается сделать скриншот в Телеграмме

Я не хочу размешать наш проект в корне директории, потому что там может быть например… форум. А вот в подпапке — запросто. Так что давайте эту самую подпапку и создадим через команду mkdir

В данном случае подпапка называется ‘revcom_bot’.

Теперь в эту папку надо засунуть composer, собственно делается это тремя командами:

php -r «copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);» php composer-setup.php php -r «unlink(‘composer-setup.php’);»

Просто вставляете их в ssh консоль по очереди и все.

Отлично, если вы справились с этой задачей, то далее нам следует установить компонент telegram-bot/api, для этого просто пишем в консоли:

php composer.phar require telegram-bot/api

После чего проверяем создались ли новые файлы в нашей директории. Вклчаем FTP менеджер, у меня это WinScp (бесплатное приложение, советую вам использовать его вместо глючной файлзиллы), переходим в папку проекта и смотрим что там есть:

Отлично. Вот теперь можно начинать писать код.

Шаг четвертый. Кодинг

Минимальная версия PHP

Для использования кода, который я демонстрирую, у вас должен стоять минимум php-5.6

Собственно создаем в директории файл index.php в котором мы и будем писать код нашего проекта. Внимание: кодировка файла — utf-8 без bom! Вообще описание кода по шагам это не моя сильная сторона, поэтому я просто буду вставлять код с комментариями в статью, а вы читайте и повторяйте.

header(‘Content-Type: text/html; charset=utf-8’); // подрубаем API require_once(«vendor/autoload.php»); // создаем переменную бота $token = «ваш токен, мы его выше сохраняли в текстовый файл»; $bot = new TelegramBotApiClient($token);

После того как переменная бота создана мы можем обращаться к api, но сначала нам надо зарегистрировать webhook.
Что такое webhook? Это такой механизм по которому выполняется связка бота с telegram’ом. Когда пользователь в телеграме вводит команду ее надо как-то передать в на сервер и получить ответ. Webhook как раз это и делает — указывает телеграму куда передавать команду пользователя. Но так как изначально телеграм НЕ ЗНАЕТ где мы разместили нашего бота, то надо ему об этом обязательно сообщить.
Для этого у нас есть команда: $bot->setWebhook

// если бот еще не зарегистрирован — регистрируем if(!file_exists(«registered.trigger»))< /** * файл registered.trigger будет создаваться после регистрации бота. * если этого файла нет значит бот не зарегистрирован */ // URl текущей страницы $page_url = «https://».$_SERVER[«SERVER_NAME»].$_SERVER[«REQUEST_URI»]; $result = $bot->setWebhook($page_url); if($result) < file_put_contents(«registered.trigger»,time()); // создаем файл дабы прекратить повторные регистрации >>

Отлично, можно запустить наш бот и проверить, перейдя к нему из браузера. Если в папке бота создался файл registered.trigger значит телеграм теперь знает о том, где находится наш бот.

Приготовления пройдены, самое время зарегистрировать первые команды для бота. В спецификации телеграма сказано, что каждый бот должен отвечать на две обязательные команды. Первая команда — /start и вторая — /help, создадим их.

// обязательное. Запуск бота $bot->command(‘start’, function ($message) use ($bot) < $answer = ‘Добро пожаловать!’; $bot->sendMessage($message->getChat()->getId(), $answer); >); // помощ $bot->command(‘help’, function ($message) use ($bot) < $answer = ‘Команды: /help — помощ’; $bot->sendMessage($message->getChat()->getId(), $answer); >); // запускаем обработку $bot->run();

Отлично! А теперь давайте разберемся немного с API нашей библиотеки.

Команды задаются блоком:

$bot->command(‘start’, function ($message) use ($bot) < >);

Где $message — объект Message, все его поля можно посмотреть тут — Types/Message.php

Отправка сообщения выполняется командой:

$bot->sendMessage(ид пользователя которому отправляем, текст сообщения);

Отправка картинок

Отправка картинок пользователю выполняется через передачу телеграму ссылки на эту картинку. Телеграм САМ скачивает изображение и отдает пользователю, нам ничего качать не надо! В качестве демонстрации я загружу сейчас на свой блог изображение и отошлю его пользователю на команду /getpic.

// передаем картинку $bot->command(‘getpic’, function ($message) use ($bot) < $pic = «http://aftamat4ik.ru/wp-content/uploads/2017/03/photo_2016-12-13_23-21-07.jpg»; $bot->sendPhoto($message->getChat()->getId(), $pic); >);

Как вы видите — все работает.

Отправка документа

Документы, в отличие от картинок, на сервер телеграма надо оправлять в POST формате, но не пугайтесь, библиотека сделает все за вас.
Для начала файл документа нам надо загрузить в папку с ботом:

После чего добавить такую команду:

// передаем документ $bot->command(‘getdoc’, function ($message) use ($bot) < $document = new CURLFile(‘shtirner.txt’); $bot->sendDocument($message->getChat()->getId(), $document); >);

Получение сообщений из чата

Теперь осталось только добавить чуточку интерактивности, например заставить бота в чате постить что-нибудь с определенным шансом.

Дабы сделать это у API есть очень годная команда .on() ее мы и будем использовать в самой простой из форм.

// говорильник $bot->on(function($Update) use ($bot)< $message = $Update->getMessage(); $mtext = $message->getText(); $cid = $message->getChat()->getId(); if(mb_stripos($mtext,»власть советам») !== false)< $bot->sendMessage($message->getChat()->getId(), «Смерть богатым!»); > >, function($message) use ($name)< return true; // когда тут true — команда проходит >);

Этот метод так-же позволит вам прикрутить к телеграму, например, нейросеть для анализа сообщений или алгоритм Маркова, чтобы развлекать публику генерацией случайного бреда.

Задаем список команд

Теперь команды работают а значит настало время сообщить о том что они у нас есть в Botfather’а. Идем туда и вбиваем /setcommands

И к стати если вы где-то опечатались можете заново вбить /setcommands и переопределить команды.

Смотрим добавились команды на страницу бота или нет:

Думаю этого будет достаточно. Статья получилась полной, я разве что не осветил методы отправки аудио файлов, но думаю вы и сами сможете на них посмотреть без моего в этом участия — тут, я ведь разобрался, хоть и не нашел ни документации нормальной ни освещения данных вопросов в интернете. Зато теперь в этой статье я рассказал вам все что сам знаю о создании ботов к telegram на php. Однако, как я говорил выше эта статья всего лишь часть всех возможностей. Советую вам прочитать вторую статью уже про C# и работу с telegram api БЕЗ webhook, https и прочих геморроев. Проще говоря хостинг не понадобится.

Надеюсь, дорогой читатель, что я не зря писал эту статью. Ах да.

Скачать исходники

Думаю оставлять вас без исходников к этому проекту будет глупо, чтож, держите.

исходники бота telegram на php

Источник: pozi.pro

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