Как самому сделать бота для телеграмм. Как самостоятельно создать бота в Телеграмм — пошаговая инструкция в картинках
Делаем простого бота для публикации новостей в канал и автоматические ответы на вопросы за 6 шагов.
В закладки
Материал подготовлен при поддержке
После бурных обсуждений в ИТ-прессе по поводу эффективности чат-ботов, они заняли свою нишу в экосистеме пользователей и компаний. Например, часто проекты внедряют ботов для оповещения о каких-либо событиях, а службы поддержки используют их для того, чтобы быстро отвечать на часто задаваемые вопросы клиентов.
В этой инструкции мы рассмотрим наиболее простой способ создать бота собственными руками и объясним, как он работает.
Начнем с разработки бота, который сможет автоматически отправлять в Telegram-канал новости компании, опубликованные на сайте или в Facebook.
Шаг 1. Создаём бота в Telegram
Бот в Telegram создается при помощи другого бота под названием BotFather . Отправляем ему команду /newbot, выбираем имя, которое будет отображаться в списке контактов, и адрес. Например, «Бот для DTF» с адресом «dtf_news_bot».
Если адрес не занят, а имя введено правильно, BotFather пришлет в ответ сообщение с токеном - «ключом» для доступа к созданному боту. Его нужно сохранить и никому не показывать.
Через BotFather также можно добавить аватарку для бота, описание и прочее.
Шаг 2. Создаём канал в Telegram
Теперь создаём канал с любым названием и адресом, и переходим в его настройки. Всё, что требуется - добавить в список администраторов созданного нами бота - именно он будет публиковать заметки в канал.
Для поиска бота можно использовать его адрес. Например, «dtf_news_bot».
Шаг 3. Создание условия
Следующий этап - научить бота отправлять новости с сайта в созданный канал. Для этого воспользуемся популярным сервисом для автоматизации IFTTT .
С его помощью можно создавать инструкции для работы бота. В нашем случае она выглядит так: каждый раз, когда в RSS-ленте сайта появляется новая запись, он должен отправлять сообщение в канал Telegram.
IFTTT расшифровывается как If This Then That
Переходим в раздел IFTTT "My Applets", нажимаем на кнопку "New Applet " и далее на ссылку "This". Находим в списке функций триггер Feed , New feed item и указываем URL-адрес нашей RSS-ленты. Например, у Wordpress-сайтов она обычно расположена по адресу example.com/feed/.
Вместо RSS-ленты можно отслеживать появление новых записей в Twitter или Facebook -аккаунте - для каждой функции в IFTTT предусмотрены отдельные модули.
Теперь переходим ко второму шагу - выбираем действие, которое будет выполняться при обнаружении новой записи в RSS. Нажимаем на "That" и ищем Maker Webhook , "Make a web request" - с помощью этого модуля можно отправлять запросы к любым сервисам. В нашем случае - к боту в Telegram.
В открывшейся форме в поле URL нужно указать ссылку https://api.telegram.org/botТОКЕН /sendMessage, подставив в неё токен, сгенерированный на первом шаге. Метод: POST, тип контента: application/json.
Body - поле для шаблона запроcа, который будет отправляться в Telegram. В нём указываем, в какой канал нужно отправить сообщение и что в нём должно быть написано:
{"chat_id":"@адрес_канала", "text":"{{EntryTitle}} {{FeedUrl}}"}
- chat_id - адрес канала, в который необходимо отправить сообщение. Таким образом одного бота можно подключить сразу к нескольким каналам. В качестве адресата можно указать и конкретного пользователя. В таком случае вместо адреса канала необходимо указать его ID (можно получить при помощи бота).
- text - содержание сообщения. Например, заголовок материала из RSS (EntryTitle), его содержание (EntryContent) и ссылка (FeedUrl). Список доступных опций можно посмотреть по кнопке Ingredient.
Если всё настроено верно, бот отправит сообщение из RSS-ленты в канал. У триггера в IFTTT есть задержка, поэтому сообщение, появившееся в RSS-ленте, отправится в Telegram не сразу, а спустя 30-60 минут.
В качестве условия для отправки сообщения можно выбрать любой другой сценарий, доступный на IFTTT. Например, Weather Underground умеет каждый день отправлять сообщение с прогнозом погоды на завтра. Триггер Stocks можно настроить на отправку стоимости акций при закрытии торгов.
Теперь решим более сложную задачу - научим созданного бота отвечать на сообщения пользователей. Например, присылать по команде прайс-лист, контакты или отвечать на часто задаваемые вопросы клиентов.
Шаг 4. Подключаем сервер
На этом этапе понадобится веб-хостинг и сертификат SSL, который можно получить бесплатно с помощью сервиса Let"s Encrypt.
Удобнее всего создать отдельный поддомен для бота - например, bot.example.com - и разместить на нём один файл index.php. Внутри файла размещаем код простейшего бота c сайта Telegram.
В код бота нужно внести всего два изменения:
- в строке define("BOT_TOKEN", "12345678:replace-me-with-real-token"); вместо 12345678:replace-me-with-real-token написать токен, полученный на первом шаге;
- в строке define("WEBHOOK_URL", "https://my-site.example.com/secret-path-for-webhooks/"); вместо https://my-site.example.com/secret-path-for-webhooks/ указать URL-адрес файла с кодом для бота: https://bot.example.com/index.php.
Шаг 5. Связываем Telegram-бота и сервер
Теперь необходимо связать Telegram и файл на сервере, чтобы запросы, отправленные боту в мессенджере, обрабатывал наш скрипт.
Для этого понадобится консоль. У разных хостинг-провайдеров она может находиться в разных разделах интерфейса управления сайтом. Кроме того, можно воспользоваться программой Terminal на macOS, введя через неё команду ssh имя_пользователя@адрес_домена .
После ввода пароля, печатаем для нашего поддомена простую команду:
php -f /var/www/bot.example.com/index.php
Nice to meet you - ответ бота на отправленное пользователем сообщением.
Ниже в коде добавляем дополнительные ответы. Например, чтобы в зависимости от отправленного слова, бот присылал необходимую информацию пользователю (как в
Мессенджеры стремительно набирают популярность среди пользователей интернета благодаря удобству быстроте работы и отсутствию лишней информации, как в социальных сетях.
Одним из наиболее популярных мессенджеров , так как он обеспечивает высокую степень конфиденциальности переписки.
Потому иногда у пользователя может возникнуть вопрос – как создать чат-бота в Телеграмм для наиболее активного продвижения своих товаров и услуг у потенциального потребителя.
Определение
Что же такое чат-бот? Чат-бот или просто бот – это компьютерный алгоритм, предназначенный для автоматического ведения переписки-диалога с реальным пользователем.
Работает такой алгоритм не по принципам искусственного интеллекта, а по определенной системе анализа входящего сообщения и подбора вариантов ответа на него из существующей базы.
Потому в редких случаях ответы бота бывают неуместны, но чаще всего, качественно разработанный бот способен не только поддерживать адекватный диалог, но и отвечать на вопросы пользователя, давать консультацию и т. п.
Чат-боты распространены на сайтах всех типов.
Они часто встречаются в социальных сетях, причем в самых разнообразных вариациях, например, Арт-бот, автоматически выполняющий эскиз по присланному фото, на сайтах фирм и компаний, на различных других ресурсах, в мессенджерах, группах и пабликах в социальных сетях.
Сфера применения
Для чего же может потребоваться бот в Телеграмме?
В большинстве случаев боты, особенно те, что используются в , требуются для продвижения товаров и услуг организации.
Они способны провести консультацию по товару и/или услуге, условиям работы организации и т. п.
Для какой же цели той или иной фирме может потребоваться такой бот:
- Для одновременной работы с большим количеством клиентов;
- Для консультирования потенциального потребителя по базовым вопросам и простым параметрам;
- Для уменьшения нагрузки на операторов горячей линии или службы клиентской поддержки;
- Для уменьшения затрат на оплату труда консультантов и сужение их штата;
- Для распределения обращений клиентов по операторам на начальной стадии работы;
- Для переадресации сложных вопросов клиента реальному консультанту.
К каким же положительным изменением способно привести использование чат-бота?
В первую очередь это уменьшение нагрузки на реальных операторов, а значит, уменьшение их штата и рабочего времени, что ведет к значительной экономии денежных средств.
Во-вторых , это позволяет одновременно работать с гораздо большим числом клиентов, чем раньше, что потенциально ведет к увеличению прибыли организации.
Совет! Важно помнить, что боты хороши и эффективны лишь при относительно простой тематике работы, когда консультирование имеет четкий алгоритм. И лишь на начальных стадиях работы с потенциальным или существующим клиентом.
Создание
Телеграмм позволяет создавать боты и даже имеет ряд встроенных алгоритмов для их разработки и активации.
Создание бота в этом мессенджере достаточно простое и быстрое, что также прибавляет популярности этому приложению и делает его основным для использования в большинстве организаций и компаний.
Хотя разработку бота саму по себе нельзя назвать очень простым и быстрым процессом – даже при наличии такой удобной встроенной платформы, как в Телеграмме, это все равно займет не мало времени.
Алгоритм создания
Удобнее всего боты создавать на компьютере, так как вам потребуется достаточно много дополнительных файлов.
Для этого можно скачать и установить Телеграмм на компьютер, а затем создать бот.
Но можно сделать это и с телефона.
1 После того, как процесс установки Телеграмма будет завершен, откройте приложение и в строке поиска, помеченной символом лупы, наберите Manybot ;
2 Нажмите кнопку Поиск в окне или кнопку Ввод на клавиатуре для выполнения поиска;
3 Как только появятся результаты поиска, нажмите кнопку Start , расположенную в нижней части окна программы справа;
4 Нажмите на кнопку Добавить нового бота ;
5 В ответ в окне сообщений появится служебное сообщение от Телеграмм , содержащее инструкцию для ваших дальнейших действий по созданию бота – необходимо следовать именно ей;
6 Согласно инструкции, перейдите в учетную запись @BotFather путем нажатия на синюю ссылку с названием аккаунта;
7 Теперь нажмите кнопку Send Message для того, чтобы начать переписку с данным «пользователем»;
8 Введите команду /start и в ответ на нее вы получите список команд, которые можно использовать при создании бота;
9 Отправьте команду /newboot ;
10 Дождитесь ответа ;
11 Отправьте придуманное вами оригинальное имя бота – именно оно будет отображаться при поиске;
12 Теперь дождитесь ответа и отправьте техническое имя бота – оно должно быть написано на английском языке и заканчиваться на «bot»;
13 На этом этапе желательно скопировать API-токен ;
14 Снова возвращаемся к @Manybot ;
15 Вставляйте туда скопированный на предыдущем этапе API-токен ;
16 Дождитесь ответа;
17 Теперь впечатайте цели вашего бота – то, для чего он нужен и как он будет работать;
18 Можно пропустить этот шаг – для этого введите /skip ;
19 Дождитесь ответа , уведомляющего о том, что создание бота завершено.
Теперь бот создан и готов к использованию. В ответном сообщении вам дается ссылка на бот для того, чтобы пригласить в него пользователей из своего списка контактов. Также в нем приводится список рекомендованных команд для постинга и автопостинга в социальных сетях.
Проверка функциональности
Теперь необходимо проверить, нормально ли работает ваш бот.
Для этого попытайтесь найти его через , вводя имя поиска, а не техническое.
Если вы все сделали правильно на предыдущем этапе, то бот должен обнаружиться в результатах поиска и нормально работать.
Создание команд
Если бот нормально функционирует, то можно начинать создавать в нем свои команды.
Команды необходимы для того, чтобы когда пользователь задавал боту вопрос, в ответ ему бот подбирал необходимую информацию, и создавать команды нужно абсолютно для всех ботов.
Для этого проделайте следующее:
1 Наберите /commands в поле ввода;
2 Наберите имя создаваемой команды ;
3 Наберите тот текст, который бот будет выдавать в ответ на данную команду – это может быть одно или несколько сообщений, которые могут включать картинки, музыку, видео;
Теперь вы можете свободно создавать и другие команды, соответствующие иным запросам, в неограниченном количестве.
Редактура уже созданной команды также допустима, для этого проделайте следующее:
1 Введите /commands , /имя_команды ;
2 Нажмите на кнопку Показать команду и появится ответ, который приходит пользователю на такую команду;
3 Соответственно, кнопка Редактировать ответы команды позволит вам отредактировать ответ, который выдает команда пользователю.
Twitter , или RSS.
Для настройки такой трансляции сделайте следующее:
1 Наберите в своем боте команду /autoposting ;
2 Теперь среди кнопок в нижней части окна выберите ту соцсеть, из которой хотите настроить автоматическую трансляцию и нажмите на нее;
3 Введите ссылку на ту страницу , с которой вы хотите транслировать новости в Телеграмм (это не обязательно должна быть авторизированная страница, то есть, можно настроить автопостинг и не со своей страницы или не будучи авторизованном на сайте).
Такой формат отлично подходит для распространения новостей среди большого количества подписчиков.
Однако он не подходит, например, для консультирования клиентов.
Telegram - популярный мессенджер, за разработку которого отвечает Павел Дуров. На данный момент его используют более сотни миллионов человек. Такая популярность связана с внушительными возможностями приложения. Помимо отправки сообщений живым людям, мессенджер предлагает ряд других функций. И в первую очередь - взаимодействие с ботами . Это специальные программы, запрограммированные на выполнение определенных действий, реализованные через чат Telegram.
Сейчас роботы в Телеграмм очень востребованы. Они имеются практически у любого популярного интернет-ресурса, добавляя пользователям комфорта. Поэтому владельцев крупных групп, сайтов, порталов или просто обычных посетителей интернета интересует то, как создать бота в Телеграмм.
Есть два варианта решения этой задачи. Первый является самым сложным, для его реализации требуются знания в области программирования. Бота можно создать посредством Telegram API . Второй - гораздо более простой. Можно воспользоваться специальным ресурсом, который составит программу бота по вашим указаниям. Сайтов, предлагающих такие возможности очень много. Также существуют специальные боты в Telegram, выполняющие данную задачу. Но в статье пойдет речь о ресурсе manybot.io, который является одним из самых популярных.
Процедура создания
Для создания бота достаточно выполнить 7 простых шагов:
- Вводим в окне поиска Manybot, открываем и кликаем на кнопку Start;
- В появившемся меню выбираем русский язык, далее - пункт «Добавить нового бота»;
- Вам предложат перейти на @BotFather, делаем это, начинаем с ним чат, отправляем сообщение /newbot;
- Поочередно вводим название аккаунта и техническое имя;
- Сохраняем отправленный API-токен;
- Переходим обратно к @Manibot, отправляем ему полученный API-токен;
- Вводим описание аккаунта.
На этом процедура завершена, созданного робота можно найти через поиск и начать его использование. Теперь пользователю нужно заняться наполнением аккаунта, включением новых команд, возможностей и настроек. С этим получится разобраться по ходу дела.
Это довольно простой способ того, как сделать бота в Telegram . Если же вы хорошо разбираетесь в программировании, то можно взяться за выполнение задачи собственными силами. На сайте code.telegram.org подробно расписана информация о Telegram API и программировании на нем. Все статьи представлены на английском языке.
Боты — специальные аккаунты в Telegram, созданные для того, чтобы автоматически обрабатывать и отправлять сообщения. Пользователи могут взаимодействовать с ботами при помощи сообщений, отправляемых через обычные или групповые чаты. Логика бота контролируется при помощи HTTPS запросов к нашему .
Общие сведения
1. Что могут делать роботы?
Вот несколько примеров использования ботов:
- Интеграция с другими сервисами . Например, бот может отправлять комментарии или управлять «умным домом». Или, например, отправлять вам уведомления при совершении каком-то действия или события (Примеры: GitHub Bot , Image Bot ).
- Утилиты и инструменты . Бот может отображать погоду, переводить тексты или предупреждать о предстоящих событиях по вашему запросу (Например: бот опросов ).
- Одно- и многопользовательские игры . Бот может поиграть с вами в шашки или шахматы, проводить викторины и так далее. (Пример: Trivia bot ).
- Социальные сервисы . Робот может находить вам собеседника, основываясь на ваших общих интересах и увлечениях. (Пример: HotOrBot ).
- Все, что вам захочется . Бота можно запрограммировать для чего угодно. Разве что посуду они помыть не смогут.
2. Как работают боты?
Как уже было сказано ранее, роботы — особые аккаунты, которые не требуют номера телефона при создании. По сути, эти аккаунты играют роль интерфейса к вашему сервису, который работает на удалённом сервере.
Самое интересное в роботах это то, что для их создания вам не нужно изучать низкоуровневые методы работы с MTProto и шифрованием — общение с роботом организовано при помощи обычного HTTPS интерфейса с упрощёнными методами Telegram API. Мы назвали его .
3. Как создать робота?
Для этого есть... Робот. Просто напишите пользователю @BotFather и следуйте его инструкциям. Как только вы создали бота и получили свой ключ (токен) авторизации, переходите в раздел , чтобы начать настраивать вашего робота.
4. Чем бот отличается от обычного аккаунта?
Суперспособности
У роботов Telegram есть много уникальных возможностей — например, , дополнительные интерфейсы для , и специальные для групп.
Встроенный режим
Пользователи могут общаться с вашим ботом напрямую из поля ввода сообщения — из любого чата или группы. Для этого нужно всего лишь набрать имя пользователя вашего бота и запрос для поиска.
Получив запрос, бот может возвратить какие-либо результаты. Как только пользователь нажмёт на один из них, он сразу же отправится в чат. Таким образом можно запрашивать контент от бота в чатах, группах или каналах.
Игры
С помощью ботов пользователи могут играть в HTML5-игры в группах или приватных чатах. Игровая платформа Telegram поможет составить таблицу рекордов и оповещать пользователей об изменении рейтинга.
Под капотом у игр — HTML5, поэтому вы можете создавать игры любой сложности. На данный момент командой Telegram созданы несколько демо-игр:
Клавиатуры
Одна из самых необычных возможностей Bot API — кастомизированные клавиатуры . При передаче сервером ответа есть возможность передать команду на отображение специальной клавиатуры с предустановленными вариантами ответа (см. ). Клиент Telegram, получив сообщение, отобразит пользователю вашу клавиатуру. Нажатие на клавишу сразу же отправит на сервер соответствующую команду. Таким образом можно значительно упростить взаимодействие робота с пользователем.
На данный момент для отображения на клавише могут использоваться эмодзи и текст. Вот несколько примеров таких клавиатур:
За более подробной информацией обращайтесь к описанию метода .
Команды
Команды представляют собой более гибкий способ общения с роботом. Рекомендуется следующий синтаксис:
/команда [необязательный] [аргумент]
Команда должна начинаться с символа косой черты «/» и не может быть длиннее 32 символов. Команды могут состоять из букв латинского алфавита, цифр и подчёркивания. Несколько примеров:
/get_messages_stats
/set_timer 10min Alarm!
/get_timezone London, UK
Сообщения, начинающиеся с косой черты, будут всегда доставляться боту (точно также, как и при ответе на его сообщения и на @упоминания бота в чате). Приложения Telegram будут:
Если в группе есть несколько ботов, вы можете дописать после команды имя бота, чтобы избежать коллизий в общих командах:
/start@TriviaBot /start@ApocalypseBot
Это происходит автоматически, если вы выбираете команду из списка доступных.
Глобальные команды
Чтобы пользователям было проще работать с ботами, мы просим всех разработчиков реализовывать поддержку нескольких простых команд. В интерфейсе приложений Telegram будут ярлыки (быстрые ссылки) для этих команд.
При попытке начать общение с роботом, пользователь увидит кнопку Старт . На странице профиля бота также будут доступны ссылки Помощь и Настройки .
Режим приватности
Ботов часто добавляют в группы, чтобы получать различную информацию — новости, уведомления и т.д. Однако, при добавлении бота вы наверняка спрашивали себя: «А что если этот маленький засранец пересылает всю групповую переписку куда-то „налево“?» Именно поэтому у роботов есть режимы приватности .
Робот с включенным режимом приватности не будет получать всех сообщений, а только сообщения, удовлетворяющие этим условиям:
Это хорошо со всех сторон: во первых, некоторые люди будут спать спокойно (в своих шапочках из фольги), не опасаясь, что их будут прослушивать. Во-вторых, режим приватности избавляет разработчиков от необходимости обрабатывать сотни ненужных сообщений из групповых чатов.
Режим приватности включен по умолчанию во всех ботах. Он может быть выключен - тогда бот начнёт получать все сообщения, как и обычный пользователь. Всем участникам конференции виден текущий статус режима приватности в списке участников группы.
Внешнее связывание
Создание токена
Если вы потеряли или утратили доступ к токену, отправьте команду /token , чтобы сгенерировать новый.
Настройки
- /setname — Изменить имя робота.
- /setdescription — Изменить описание робота, представляющее собой короткий текст с описанием бота. Пользователи увидят его в самом начале, под заголовком «Что умеет этот робот?».
- /setabouttext — Изменить информацию о боте, ещё более короткий текст, отображающийся в профиле бота. Ещё, если кто-то поделится вашим ботом, то вместе со ссылкой на него отправится этот текст.
- /setuserpic — Изменить аватарку бота. Картинки — всегда хорошо.
- /setcommands — Изменить список команд бота. Каждая команда состоит из собственно командного слова, начинающегося с символа косой черты («/„) и короткого описания. Пользователи увидят список команд при вводе символа “/».
- /setjoingroups — Определяет, можно ли добавлять вашего бота в группы.
- /setprivacy — Определяет, все ли сообщения видит ваш бот в группах. В выключенном состоянии роботу будут отправляться все сообщения.
- /deletebot — Удалить бота и его имя пользователя.
Пожалуйста, имейте в виду, что для применения настроек на сервере, возможно, потребуется некоторое время.
В последнее время Telegram у всех на слуху. Нужно отдать должное отделу маркетинга этого приложения, шумиху подняли на славу. Одной из основных "фишек" Telegram является его якобы защищённость - по словам Павла Дурова вся переписка между пользователями шифруется. Более того, ни одна спец.служба мира не будет иметь доступ к вашим сообщениям. Но в данной статье речь не об этом. Сегодня хотелось бы поговорить о не менее крутой фишке в Telegram, а именно о ботах. Помимо того, что в сети уже полно информации о различного рода Telegram ботах (github бот, например), мессенджер открыл своё API для разработчиков, и теперь каждый может создать своего собственного бота с блэкджеком и плюшками.
В статье я приведу пример написания онлайн бота с использованием Python и Django фреймворка. То есть мы "запилим" полноценное веб-приложение, которое будет крутиться на удалённом хосте и принимать команды от пользователей. Весь исходный текст доступен в моём github репозитории .
Документация, описывающая процесс взаимодействия с ботами Telegram находится . Чтобы не изобретать велосипед, я нашел неплохую Python библиотеку, реализующую все основные функции ботов - telepot . Как я уже упоминал ранее, для того, чтобы обслуживать пользователей нашего бота мы будет разрабатывать веб-приложение, используя Django фреймворк.
Как создать Telegram бота?
Для начала нам необходимо зарегистрировать в Telegram нашего будущего бота. Это делается следующим образом:
- Необходимо установить приложение Telegram на телефон или компьютер. Скачать приложение можно
- Добавляем к себе в контакт-лист бота с именем BotFather
- Запускаем процедуру "общения" с ботом нажатием кнопки Start . Далее перед нами предстанет список команд точно как на скриншоте.
- Для того, чтобы создать нового бота необходимо выполнить команду /newbot и следовать инструкциям. Обратите внимание, что username для бота должен всегда содержать в конце слово bot . Например, DjangoBot или Django_bot.
- Для нашего бота я выбрал имя PythonPlanetBot, так как его основная функция заключается в парсинге RSS feed сайта Python Planet и выдача информации о последних постах пользователю:)
После создания бота, обратите внимание на строку с текстом:
Use this token to access the HTTP API:
За которой следует т.н. token по которому мы будем манипулировать нашим ботом. Помимо функции создания telegram бота, BotFather также имеет ряд других возможностей:
- Присвоить боту описание
- Установить аватар
- Поменять token
Приступаем к кодированию
Как я ранее уже упоминал, мы будем писать веб-приложение на Django . Но стоит отметить, что это делать необязательно. Можно обойтись и обычным Python скриптом, правда в этом случае необходимо будет периодически опрашивать Telegram на предмет новых запросов от пользователей бота (используя метод getUpdates ) и увеличивая offset для получения самых последних данных без повторений. В Telegram существует два взаимоисключающих метода получения команд/сообщений для вашего бота.
- Использование вызова API метода getUpdates
- Установка Webhook
Установка Webhook заключается в передаче боту специального URL адреса на который будет поступать POST запрос каждый раз, когда кто-то начнёт посылать сообщения боту. Именно этот вариант мы и будем использовать для взаимодействия между ботом и его пользователем. Для того, чтобы задать URL, необходимо использовать API метод setWebhook . Отмечу, что URL должен начинаться с https, то есть иметь защищённое SSL соединение с валидным сертификатом. Telegram разрешает использовать самоподписанный сертификат, правда для этого необходимо в методе setWebhook передавать также публичный ключ в PEM формате (ASCII base64). Либо же можно получить от Let"s Encrypt.
Подробнее о getUpdates и setWebhook можно почитать соответственно и .
Итак, вернёмся к python библиотеке для работы с Telegram - telepot . На текущий момент самой последней её версий является 6.7. Устанавливаем её в виртуальное окружение python virtualenv:
Pip install telepot
Самый простой вариант взаимодействия с Telegram ботом на Python выглядит следующим образом:
Import telepot token = "123456" TelegramBot = telepot.Bot(token) print TelegramBot.getMe()
Переменной token присваиваем значение токена, полученного при создании бота через BotFather. В итоге после выполнения этих команд мы получим:
{u"username": u"PythonPlanetBot", u"first_name": u"Python Planet Bot", u"id": 199266571}
Поздравляю! Мы вызывали самый простой API запрос getMe, который возвращает информацию о боте: username, id, first_name.
Добавим нашего бота к себе в контакт-лист и пошлём ему первую стандартную команду /start
Выполняем код:
TelegramBot.getUpdates() [{u"message": {u"date": 1459927254, u"text": u"/start", u"from": {u"username": u"adilkhash", u"first_name": u"Adil", u"id": 31337}, u"message_id": 1, u"chat": {u"username": u"adilkhash", u"first_name": u"Adil", u"type": u"private", u"id": 7350}}, u"update_id": 649179764}]
Процесс общения с telegram ботом происходит по HTTPS; для передачи данных используется JSON. Метод getUpdates возвращает список/массив из объектов типа Update . Внутри Update находится объект Message . Для стандартного взаимодействия с ботом нас фактически интересует именно объект Message, у которого мы считываем атрибут text, хранящий в себе текст, переданный боту и объект chat, в котором лежит информация о пользователе, инициировавшем общение с нашим Telegram ботом. Также имеется параметр update_id, который служит в качестве offset параметра при вызове метода getUpdates. То есть update_id+1 вернёт все сообщения, поступившие после последнего update_id, при этом все предыдущие сообщения будут удалены.
TelegramBot.getUpdates(649179764+1) [{u"message": {u"date": 1459928527, u"text": u"hello bro", u"from": {u"username": u"adilkhash", u"first_name": u"Adil", u"id": 31337}, u"message_id": 13, u"chat": {u"username": u"adilkhash", u"first_name": u"Adil", u"type": u"private", u"id": 7350}}, u"update_id": 649179765}]
На этапе написания простейшего Telegram бота нам этих вызовов достаточно. Приступим к написанию Django приложения для обслуживания наших пользователей.
Простая функция парсинга RSS фида Planet Python выглядит вот так:
# -*- coding: utf8 -*- from xml.etree import cElementTree import requests def parse_planetpy_rss(): """Parses first 10 items from http://planetpython.org/rss20.xml """ response = requests.get("http://planetpython.org/rss20.xml") parsed_xml = cElementTree.fromstring(response.content) items = for node in parsed_xml.iter(): if node.tag == "item": item = {} for item_node in list(node): if item_node.tag == "title": item["title"] = item_node.text if item_node.tag == "link": item["link"] = item_node.text items.append(item) return items[:10]