- Личный сайт Новикова Максима Глебовича
- Последние записи
- Архив
- Друзья
- Профиль
Дневник злостного критика-рецидивиста — жуткого зануды
Слесарь, электрик, программист.
- Теги
- /QR-кодadobe premierecellulailereclipseiconbit nettab thorjavakotlinlinuxmccullochribbon xml editorribbonxmleditorscintillatable2htmltelegramwhatsappwi-fiЁлочкаАвтомобильАндроидАномалияАфераБелкаБилайнБрейвикВДНХВалежникВеснаВидеоурокиВиноградовВнуковоВоротаВыборыГазГайдпаркГрафеновая лампочкаГрунтДачаДельфиЖивотное колесоЗаборИнструкцииКалибриллаКолесникКолодецКультураКурскЛампыЛесЛинуксМАКС авиасалонНаукаО_компьютере_начинающимОбъективыОпросОцифровкаПенсияПланшетПодъездПолитехнический музейПолитикаПрограммированиеПустельгаПылесосРаботаРаритетыРеновацияРисункиРоссияСМИСарайСарай_catsloverСбербанкСканерыСклоны тоннеляСколковоТеле2ТерминологияТипографикаУточкиФобос-ГрунтФотоФотовыставкаХолодильникЧайкиЭкономикаЭлектричествобардакводосчётчикизвуккомпьютерыподсветка синтаксисареальностьрелигиясалютсмартфоныфейерверк
- Page Summary
- notglamour — Без темы [+2]
- (Анонимно) — Без темы [+1]
- (Анонимно) — Тоже не реагирует на команды [+1]
- (Анонимно) — специфика ВЕБХУКА [+1]
- (Анонимно) — класс [+1]
- livejournal — Делаем простейшего бота для мессенджера Telegram [+0]
- Stanislav Kotrutsa — Без темы [+2]
- (Анонимно) — Нашёл решение [+10]
- helene50 — Без темы [+18]
- Антон Утыльев — бот не реагирует на команды [+1]
- sublustris_ru — Подскажите пожалуйста. [+1]
- (Анонимно) — программер [+1]
- (Анонимно) — Полезность [+1]
- (Анонимно) — перевод в нижний регистр (RU) [+1]
- Ella Krivosheeva — Без темы [+1]
Делаем простейшего бота для мессенджера Telegram
Урок 2. Создание Telegram-бота. Обработка команды start
Посетите также мой сайт http://o92653jt.bget.ru/
Он посвящён написанию ботов для Telegram.
А теперь приступим к изучению того, как сделать нечто подобное.
Сегодня мы рассмотрим создание простейшего шаблонного бота, который на фразу «Привет» отвечает собственным приветствием. Скажу сразу, что помимо самого мессенджера Telegram нам понадобится любой хостер с поддержкой безопасного протокола передачи данных https для размещения внешнего кода бота. Чтобы не забивать голову поисками или созданиями сертификатов для https, предлагаю воспользоваться готовым бесплатным решением — облачным сервисом Cloud9, сайты на котором по умолчанию работают по протоколу https. Кроме того, он обладает всеми средствами, необходимыми для написания кода (облачная IDE).
Базовое наполнение бота
Подключение нашего внешнего файла с дополнительным кодом бота возможно двумя способами: Webhook для безопасного протокола https и long polling для обычного http. Второй способ более тормозной, потому что вместо прямого обращения бота к внешнему коду сразу после получения команды, в случае long polling внешний код сам через равные промежутки времени будет обращаться к чату и ждать ответа. Этот способ можно применять, если вы располагаете свой код на бесплатном хостинге без сертификата SSL.
Обработка команды /start в python telegram bot
Конечно, можно найти и установить себе на бесплатный сайт бесплатный SSL, можно даже использовать самоподписанный сертификат, но для Webhook есть более удобное и быстрое решение.
Регистрируемся на сайте Cloud9. Это облачная интегрированная среда разработки, в которой можно и написать, и опубликовать свой сайт. К сожалению, функционирование вашего сайта будет заморожено, если в течение недели над проектом никто не будет работать, и возобновлено в случае продолжения работ. Но для разработки и тестирования бота эта среда подходит нам как нельзя лучше.
Впоследствии бота можно будет развернуть уже на настоящем хостинге, таком, как, например, Heroku, однако на бесплатном тарифе там тоже есть свои особенности — он будет работать не более 18 часов в сутки. Пока запросов на сайт нет, он засыпает и экономит своё время. При обращении он просыпается, поэтому возможна некоторая задержка первого ответа от бота. Пока пользователей у бота немного, этот вариант вполне может обеспечить круглосуточную работу.
Возможно, вы найдёте другой бесплатный хостинг с поддержкой SSL, который бы функционировал круглосуточно и без ограничений, или создадите свой самоподписанный сертификат, но для разработки и отладки бота Cloud9 является наиболее удобной средой. Далее речь пойдёт о коде на PHP, но после регистрации на сайте Cloud9 вы можете выбрать для работы и другие языки.
Итак, регистрируемся, выбираем имя проекта (для порядка сделаем одинаковым с именем бота), можем выбрать приватность (в бесплатном случае для приватности доступен только один из ваших проектов). Далее можем указать Git или адрес живого сайта для клонирования, а можем оставить это поле пустым, и тогда среда создаст шаблонный проект сайта. Затем выбираем шаблон среды, в котором будет крутиться наш бот (я выбрал «PHP, Apache and MySQL preconfigured») и нажимаем кнопку «Create workspace».
В этом случае при прямом обращении из браузера по адресу вашего сайта будет предлагаться открыть контакт в Telegram. Это можно проверить, запустив проект на выполнение и нажав внизу на появившуюся ссылку с адресом вашего сайта. Не забудьте потом остановить проект. Пишем код бота Шаблонный код нашего бота будет такой:
- /**
* URL-адрес бота и его маркер.
*/ - $access_token = ‘ВАШ_МАРКЕР’ ;
- $api = ‘https://api.telegram.org/bot’ . $access_token ;
- /**
* Зададим основные переменные.
*/ - $output = json_decode(file_get_contents( ‘php://input’ ), TRUE); // Получим то, что передано скрипту бото м в POST-сообщении и распарсим
- $chat_id = $output [ ‘message’ ][ ‘chat’ ][ ‘id’ ]; // Выделим идентификатор чата
- $first_name = $output [ ‘message’ ][ ‘chat’ ][ ‘first_name’ ]; // Выделим имя собеседника
- $message = $output [ ‘message’ ][ ‘text’ ]; // Выделим сообщение собеседника
- /**
* Получим команды от пользователя.
* Переведём их для удобства в нижний рег истр
*/ - switch (strtolower_ru( $message )) <
- case ( ‘привет’ ):
- case ( ‘/hello’ ):
- sendMessage( $chat_id , ‘Привет, ‘ . $first_name . ‘! ‘ . $emoji [ ‘preload’ ] );
- break ;
- case ( ‘/start’ ):
- break ;
- default :
- sendMessage( $chat_id , ‘Неизвестная команда!’ );
- break ;
- >
- /**
* Функция отправки сообщения в чат sendM essage().
*/ - function sendMessage( $chat_id , $message ) <
- file_get_contents( $GLOBALS [ ‘api’ ] . ‘/sendMessage?chat_id=’ . $chat_id . ‘
- >
- /**
* Функция перевода символов в нижний рег истр, учитывающая кириллицу
*/ - function strtolower_ru( $text ) <
- $alfavitlover = array ( ‘ё’ , ‘й’ , ‘ц’ , ‘у’ , ‘к’ , ‘е’ , ‘н’ , ‘г’ , ‘ш’ , ‘щ’ , ‘з’ , ‘х’ , ‘ъ’ , ‘ф’ , ‘ы’ , ‘в’ , ‘а’ , ‘п’ , ‘р’ , ‘о’ , ‘л’ , ‘д’ , ‘ж’ , ‘э’ , ‘я’ , ‘ч’ , ‘с’ , ‘м’ , ‘и’ , ‘т’ , ‘ь’ , ‘б’ , ‘ю’ );
- $alfavitupper = array ( ‘Ё’ , ‘Й’ , ‘Ц’ , ‘У’ , ‘К’ , ‘Е’ , ‘Н’ , ‘Г’ , ‘Ш’ , ‘Щ’ , ‘З’ , ‘Х’ , ‘Ъ’ , ‘Ф’ , ‘Ы’ , ‘В’ , ‘А’ , ‘П’ , ‘Р’ , ‘О’ , ‘Л’ , ‘Д’ , ‘Ж’ , ‘Э’ , ‘Я’ , ‘Ч’ , ‘С’ , ‘М’ , ‘И’ , ‘Т’ , ‘Ь’ , ‘Б’ , ‘Ю’ );
- return str_replace( $alfavitupper , $alfavitlover ,strtolower( $text ));
- >
Подробно рассматривать работу кода я не буду — он прост и сопровождён комментариями. Для завершения написания кода вам надо будет просто вставить присланный ранее ботом BotFather маркер (token) вместо текста «ВАШ_МАРКЕР». Он будет участвовать в формировании адреса, по которому этот код будет находить вашего бота.
Нажимаем кнопку Run Project. Сайт становится видим в сети и его код готов быть вызванным из бота.
Привязка бота к коду
Чтобы бот вызывал написанный нами внешний код, нам надо сообщить ему адрес нашего php-файла. Для этого копируем в строку браузера следующую ссылку:
Текст ВАШ_МАРКЕР заменяем присланным ранее маркером, а текст URL_PHP_ ФАЙЛА заменяем на полный URL php-файла с нашим кодом. Имя сайта берём из строки, появившейся снизу на вкладке Apache https://novikovmaxim.livejournal.com/421130.html» target=»_blank»]novikovmaxim.livejournal.com[/mask_link]
Начало работы
Благодарим Вас за выбор нашего программного продукта и поздравляем с отличной покупкой! Мы надеемся, что работа в конфигурации для Вас будет удобной и приятной, а так же наше решение позволит сократить Ваше драгоценное время.
Обработка ботом сообщений группы
Для того чтобы можно было настроить данный механизм требуется чтобы были подключены следующие механизмы:
- Обработка ботом сообщений групп (Этот)
Редактор позволяет настроить бота таким образом, что он будет обрабатывать сообщения, оставленные участниками группы. Это может пригодиться для парсинга username-ов участников для последующей рассылки, или для парсинга сообщений и получения из них каких-либо данных. Более того, бот может реагировать на входящие сообщения и тоже писать в группу. Для того чтобы бот отвечал не на все сообщения и понимал какие для него, а какие — нет имеет смысл писать обработчик, чтобы бот отвечал только если сообщение начинается, например с его имени или со слов «бот», «Бот».. Это уже зависит от задач и навыком программиста.
Случаи когда бот не должен реагировать на сообщения участников обработать просто — достаточно возвращать вместо $return_mas[‘status’] = 1; ключ status равный нулю: $return_mas[‘status’] = 0;
Файлы примера внешнего скрипта можно скачать по ссылке
После создания группы необходимо добавить в нее бота (по его логину). После чего добавить бота в администраторы группы.
Добавление бота в администраторы группы:
Источник: ebot.one