Создание чат бота для телеграмм самому. Flibusta, Антон и прочие боты в telegram — обзор

Быстро приобрело популярность, несмотря на то, что появилось совсем недавно. Преимущественной особенностью мессенджера является надёжное шифрование данных по протоколу MTProto. Количество пользователей «Telegram» растёт с каждым днём, что даёт большие возможности для бизнеса. Команда разработчиков создала множество инструментов, позволяющих использовать приложение не только для развлечения, но и с целью организации и ведения рабочего процесса.

Группы, каналы и боты в «Телеграм» могут стать полезными помощниками, если вы решили заняться коммерческой деятельностью посредством ресурсов сети Интернет . Многие крупные компании успешно используют инструменты «Telegram» для работы с клиентами. Открыть своё сообщество , канал или запустить робота – дело несложное, а пользу принесёт большую. В боте могут применяться различные опции от информирования людей о предстоящих акциях, скидках и других новостях, онлайн-консультаций до совершения покупок. Для магазинов это дополнительная возможность повысить продажи.

Создавать ботов-продавцов может каждый, кто имеет хотя бы начальные навыки программирования. Такой инструмент освободит своего владельца от рутинной работы и поможет вести бизнес. Для людей, не владеющих языком программирования, лучше будет воспользоваться сервисом по созданию роботов.

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

Сделать бота собственными силами можно с помощью последовательных действий. Сначала необходимо создание стандартной заготовки. Затем её требуется оснастить нужными опциями, которые бы сделали из примитивного бота настоящего продавца, способного осуществлять продажи самостоятельно. Также имеется возможность привязки уже существующего на просторах интернета магазина.

Процесс создания начинается с обращения к боту BotFather, родителю роботов «Telegram». С его помощью и сделано большинство помощников для различных целей. Создаём собственного бота, используя отца семейства, для этого нужно:

Сервисы для создания ботов

Созданный при помощи BotFather робот нуждается в дальнейшей доработке. Некоторые сервисы дают возможность обучить его бесплатно.

  1. Конструктор позволит настроить бота без специальных знаний программиста. Для этого в «Telegram» необходимо найти и добавить робота @Chatfuel, после чего дать ему команду /addbot и ввести токен, который был получен от BotFather. Ваше новоиспечённое детище сохранится на сервисе Paquebot, откуда можно будет программировать его под любые свои нужды, в том числе настроить бот автопродаж «Телеграмм».
  2. Flow XO. Сервис, специализирующийся на бизнес-ботах. Некоторые опции платформы бесплатны, но основной функционал имеет различные тарифы.
  3. Сервис позволяет создать магазин в «Телеграмме», причём можно не привязывать его к уже существующему сайту. Воспользовавшись роботом @botoboto_bot, вы сможете обзавестись собственным ботом-продавцом. Botobot могут использовать бесплатно магазины, включающие до 20 товаров, свыше этой цифры сервисом предусмотрены тарифы.

Бот-продавец или другой инструмент для бизнеса может быть изготовлен по заказу профессионалами одного из сервисов. Так создавался и робот автопродаж Qiwi, позволяющий пользователю работать со своим киви-кошельком. Опытные специалисты помогут настроить оплату товаров и учтут все нюансы магазина. Можно обратиться за помощью к участникам специализированных сообществ в «Телеграмме».

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

Сейчас роботы в Телеграмм очень востребованы. Они имеются практически у любого популярного интернет-ресурса, добавляя пользователям комфорта. Поэтому владельцев крупных групп, сайтов, порталов или просто обычных посетителей интернета интересует то, как создать бота в Телеграмм.


Есть два варианта решения этой задачи. Первый является самым сложным, для его реализации требуются знания в области программирования. Бота можно создать посредством Telegram API . Второй - гораздо более простой. Можно воспользоваться специальным ресурсом, который составит программу бота по вашим указаниям. Сайтов, предлагающих такие возможности очень много. Также существуют специальные боты в Telegram, выполняющие данную задачу. Но в статье пойдет речь о ресурсе manybot.io, который является одним из самых популярных.

Процедура создания

Для создания бота достаточно выполнить 7 простых шагов:

  1. Вводим в окне поиска Manybot, открываем и кликаем на кнопку Start;
  2. В появившемся меню выбираем русский язык, далее - пункт «Добавить нового бота»;
  3. Вам предложат перейти на @BotFather, делаем это, начинаем с ним чат, отправляем сообщение /newbot;
  4. Поочередно вводим название аккаунта и техническое имя;
  5. Сохраняем отправленный API-токен;
  6. Переходим обратно к @Manibot, отправляем ему полученный API-токен;
  7. Вводим описание аккаунта.

На этом процедура завершена, созданного робота можно найти через поиск и начать его использование. Теперь пользователю нужно заняться наполнением аккаунта, включением новых команд, возможностей и настроек. С этим получится разобраться по ходу дела.

Это довольно простой способ того, как сделать бота в Telegram . Если же вы хорошо разбираетесь в программировании, то можно взяться за выполнение задачи собственными силами. На сайте code.telegram.org подробно расписана информация о Telegram API и программировании на нем. Все статьи представлены на английском языке.

Делаем простого бота для публикации новостей в канал и автоматические ответы на вопросы за 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 - ответ бота на отправленное пользователем сообщением.

Ниже в коде добавляем дополнительные ответы. Например, чтобы в зависимости от отправленного слова, бот присылал необходимую информацию пользователю (как в

Здравствуйте! Прикольные виртуальные машины, обладающие примитивным, но забавным искусственным интеллектом, являются своеобразной фишкой мессенджера. Боты в telegram оснащены удобным api и пишутся на php ― это позволяет создавать их вроде флибусты, качающий с сайта создателя книги и организующий удобный поиск. Сегодня мы остановимся на нем, а также расскажем об иных творениях талантливых пользователей мессенджера.

Что такое боты в телеграмм, список и каталог ботов

Для начала давайте разберемся с тем, что вообще такое чат боты. Фактически, это своеобразные программы, взаимодействующие с пользователем при помощи отправки сообщений. То есть, человек пишет какую-то команду, а робот делает цепочку действий, с ней связанную. Чтобы стало понятнее, перейдите в наш каталог, располагающийся ниже самой статьи, и посмотрите на ботов своими глазами.

Найти их можно в специализированном магазине (Bot store, storebot.me). Правда, учтите, что в их каталогах можно купить рекламу и таким образом выйти в «Популярные».

Теперь давайте разберем эту тему подробнее.

Как работают боты в telegram и как ими пользоваться

Алгоритмы большинства программ для пользователя ужасно просты. Почему-то многие думают, что им нужно что-то скачать, потом установить, только после всего этого начать работу. Но это не так.

Алгоритм у большинства следующий:

  • Найти его в мессенджере (об этом ниже).
  • Дать в чат команду, например, «get image», или воспользоваться графическим меню с удобными кнопками.
  • Получить результат.

Как видите, ничего сверхъестественного.

Как найти бота в телеграмм

Если же вы просмотрели какой-то ТОП и нашли удобного помощника для, к примеру, автопродаж, вам остается только отыскать его в системе. На самом деле ничего сложного в этом тоже нет.

Искать роботов следует по их имени. Вбейте его в поисковую строку чуть выше списка чатов. Если он существующий, не скрыт ― вы сразу же выйдете на него.

Найти искусственный интеллект можно по специальной ссылке, которую вам даст его владелец.

Как добавить (подключить) бота в telegram

Не всегда списки вроде «лучшие роботы тысячелетия» могут удовлетворить вас. Тогда-то и приходит осознание: «Да я же могу сделать своего! Еще и на рекламе денег получу». Чуть ниже вас даже ждет инструкция по этому поводу, но учтите ― настройка и программирование займут у вас множество времени и сил.

Как добавить своего лчного, вы узнаете немного ниже.

Если речь идет о «добавить в список чатов» ― просто кликните на его имя в строке результатов поиска, а после нажмите на «Начать» внизу.

Как сделать экспорт и импорт списка ботов в telegram

Но такой возможности пока нет даже в планах.

Как можно удалить бота в телеграмм

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

Чтобы избавиться от подписки, следуйте такому алгоритму:

  • Зайдите в чат с роботом.
  • Нажмите на его иконку вверху.
  • Найдите кнопку «Остановить и заблокировать».
  • Нажмите правой клавишей на чат.
  • Выберите «Очистить историю» и «Удалить диалог».

Как настроить бота в телеграмм - параметры команд

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

Для создания в первую очередь необходимы команды вроде «sendmessage». А отправлять их надо к … отцу всея ботов.

Сделайте следующее:

  • Найдите @BotFather.
  • Напишите ему /start.
  • Наберите /newbot , затем имя будущей программы.

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

Почему бот не соединяется с сервером telegram

Но даже если вам удалось создать своего робота, запрограммировать его ― не то при помощи готовых примеров, не то самостоятельно ― тут может ожидать засада. Сервер мессенджера попросту не отвечает.

В голову уже лезут различные параноидальные мысли: а вдруг вы дали себя обмануть? А если вас как-то заблокировали и лишили права создавать? Все же list bot висит на видном месте, там целые группы запущенных программ, а у вас ничего не выходит…

Но не переживайте ― это просто временная неполадка. Попробуйте позднее, у вас все получится.

За что может быть заблокирован telegram bot

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

Удалению подвергаются пропагандистские боты исламского государства, экстремизм, иногда ― нарушение авторских прав. Правда, последнее чаще всего приводит не к всеобщей, а к региональной блокировке.

Почему в телеграмм bot не отвечает

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

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

Также бот может быть попросту заблокирован.

Что такое telegram bot api

Загадочный «api curl file id» ― это набор определенных команд, так сказать, платформа для написания искусственного интеллекта. Без нее написать робота вроде «Antonca» было бы невозможным.

Фактически, записывать команды в робота вы можете по ссылке, а в программе использовать встроенные методы ввода и вывода информации. Если бы APi не было, вы бы прописывали эти команды на машинном коде из нулей и единиц.

Можно ли взломать бота в телеграмм

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

Но это попросту невозможно ― если только вам не дадут уникальную ссылку на робота, конечно. Так что не стоит заниматься такими нехорошими делами. Берите в руки учебник, идите на «Хабру», учите программирование. Иначе никак!

Как разработать и создать бота в telegram - пишем сами или в конструкторе

Создание такой программы ― это довольно сложный, запутанный процесс. Мы не будем описывать его полностью, поскольку это сугубо профессиональная информация. Для начала почитайте на официальном сайте про API, изучите xml и парочку языков программирования, только потом создавайте «yourerobot».

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

Как самому легко написать бота для telegram

Заранее хотим предупредить: легко не будет. Никогда. Для начала расскажем основные принципы создания. Вот как это все выглядит: вам дается ссылка на робота. Вы пишете определенную часть программы, при помощи специального метода просто отправляя ее по этой ссылке.

Учтите: простой человек так сделать не сможет, поэтому создать портфолио лучше другим образом.

Все еще заинтересованы? Тогда идите в библиотеку и на форумы для чайников ― получать знания.

Пишем бота для telegram на языке python - примеры

Итак, для начала попробуем написать простенького робота на питоне. Такой разносторонний и довольно гибкий язык легко может помочь создать робота типа Belg, но для этого нужно хорошо его знать.

Если хотите потренироваться, делайте бота приватным. Разместить вы его сможете только после того, как изучите python platform. Следующий пример кода на картинке.

Данное творение просто копирует сообщение пользователя и пересылает его обратно.

Пишем бота в телеграмм на php - готовые примеры

Этот язык выбирают чаще всего, поэтому большинство bots написано на нем. Функционал довольно широкий, фактически, при помощи php можно подключить что угодно к чему угодно.

Но изучить его довольно трудно: он серверный, требуется выделенный хостинг. Поэтому готовьтесь к довольно непростому и тернистому пути. Основные принципы "возни" с ботами изложены на картинке.

Данный скрипт подходит для отправки любых сообщений с текстом по команде.

Пишем бота для telegram на c# - примеры

Наконец, перейдем к программированию на самом популярном языке. Тут вам и понадобятся команды рода create и method. Вообще, если вы действительно решите сделать робота, к изучению рекомендую именно этот язык.

Он довольно простой и понятный, а в интернете есть достаточно методической литературы по теме. И при этом его возможности просто огромны.

Пример взаимодействия с роботом вы сможете увидеть тут - github.com/MrRoundRobin/telegram.bot. Это полноценный бот с кучей файлов и открытым кодом. Рекомендуется к изучению.

Пишем бота для телеграмм на java

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

Но что-то простое для начала ― вполне. Для вас мы даже вновь отыскали пример неплохого робота с открытым исходным кодом (github.com/rubenlagus/TelegramBots).

Flibusta bot в telegram - обзор

Робот под названием «me flibustamirrorbot» был прекрасным книжным другом. С ним было проще простого: задавай команду, назначай сортировку по авторам и качай понравившиеся произведения.

Данная программа существовала на основе довольно популярного хранилища «Флибуста».

Почему не работает flibusta bot в телеграмм

Почему написано в прошлом времени? Да потому что за столь ярое нарушение авторских прав ее попросту забанили на просторах СНГ. Конечно, вы все еще сможете найти его в списке. Даже можете написать ему ― никто вам этого не запретит.

Вот только ответа вы больше никогда не дождетесь: он ответит вам только холодным молчанием.

Робот антон в телеграмм - обзор

Ну, уж про этого робота знают точно все. Его главная функция ― русифицировать программу. Впрочем, это не единственное, что Антошка умеет. Так же он может узнавать погоду и отправлять саркастические новости с сайта «Лента.ру».

Запретные боты в telegram - обзор

И сейчас мы вам поведаем о… Да ни о чем мы вам не поведаем. Запрещенные боты они на то и запрещенные, что рассказывать о них нельзя. Никакого порно, никаких экстремистских лозунгов.

В конце концов, все это можете найти и вы сами. Только вот за последствия мы не ручаемся.

Музыкальный бот в telegram - обзор

Многие слушают музыку, особенно если для этого можно не выходить из не менее любимого мессенджера. В исполнении такой мечты вам поможет бот под именем @Get Music Bot.

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

Vk bot для телеграмм - обзор

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

Впрочем, окончательно закончен он будет еще очень нескоро.

Полезные, популярные и самые интересные боты для telegram

Ну и в конце мы предоставим вам свой личный набор роботов. Они довольно сложные, используют не только простую команду «sendmessage» или перенос строки, а еще и массу сложных алгоритмов. Такие роботы ― это полноценный виртуальный интеллект, написанный на «delphi», «wordpress», «perl» или иных языках. И для их написания не использовался встроенный конструктор nodejs.

Такой бот может постить для канала по rss, качать torrent, как, например, ru tracker или быть помощником и ежедневником. Некоторые могут даже взаимодействовать с raspberry. Часто такие роботы используют webhook ― удобную систему уведомлений, а иные часто пользуются asp net.

Часть этих ботов даже арендуют hosting вроде heroku. Потому самостоятельно создать их довольно сложно даже в финансовом плане. Конечно, podbot для игры ― полноценного игрока ― тут не сделаешь, но некоторые роботы превзошли все ожидания.

Вот наш топ (при поиске удаляйте все пробелы и добавляйте в начале @):

  • ImageSearchBot ― бот от yandex. Он может искать gif или фото по запросу. А у google, кстати, такого нет. И зря: gmail бы очень пригодился.
  • ru_tracker_bot ― торрент, который запустил рутрекер. Это, кстати, еще один плюс в копилку сайта: у torent rutor такого нет.
  • FreeBooksBot ― позволяет искать книги на всеми известной Флибусте. Правда, там нет аудиокниг.
  • transnow_bot ― переводчик, способный выдавать сразу несколько вариантов слов на английском и русском языке.
  • Weatherman _bot ― показывает погоду по регионам на ближайшие пять дней.
  • stickers ― поможет найти массу интересных стикеров. Фактически, это inline ― то есть, встроенный создателем ― бот.
  • telerobot ― это тот самый Антон, о котором мы уже говорили.
  • uzb_telegram_bot ― это так называемый uzbek botlar робот с актуальными новостными сводками.
  • GitHub Bot ― робот ресурса, чем-то похожего на программистский форум с интересными кусками кода, написанный на ruby.
  • Superhrbot ― предназначен для удобного поиска вакансий в разных городах и странах.
  • Nnmclub _bot ― еще один торрент-трекер, сайт которого не так давно закрыли.
  • Qiwi _bot ― киви, помогающий проверить баланс счета или перевести средства на иной кошелек.
  • Weatherbot ― еще один довольно удобный бот с прогнозом погоды на ближайшие несколько суток.
  • Botfather ― нет, ну а что? Популярнее его не найти.
  • Planetside 2_bot ― различные новости о популярной игре.
  • Economika _bot ― делится всяческими сведениями из мира экономики.
  • Pikabu bestbot ― присылает лучшие посты с известного ресурса.
  • Newlovebot ― фактически моделирует раздел «Знакомства».
  • kinomanbot ― выберет фильм или сериал, найдет, где его транслируют, и закажет билеты.
  • strictmother_bot ― строгая мама на все ответит отказом, но зато признается тебе в любви. Еще бы в таком стиле дядю Федора сделали…
  • pushkin_bot ― по запросу находит массу нежных стихов классиков.
  • russianpdd_bot ― pddbot, позволяющий подготовиться к экзамену в ГИБДД.

"Нехороших" с porno и прочими непотребностями мы вам показывать не будем ― не мечтайте.

Выводы

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

Плюсы и минусы ботов

  • Они позволяют сделать что-то, не закрывая телеграмм.
  • Они зачастую удобнее обычных поисковиков или сайтов.
  • Они оснащены богатым функционалом.
  • Их можно создавать самостоятельно.
  • Они позволяют автоматизировать множество действий.
  • Их рассылка бывает навязчива.
  • Создавать таких довольно сложно.

Видеообзор

Пишем ему /start и получаем список всех его команд.
Первая и главная - /newbot - отправляем ему и бот просит придумать имя нашему новому боту. Единственное ограничение на имя - в конце оно должно оканчиваться на «bot». В случае успеха BotFather возвращает токен бота и ссылку для быстрого добавления бота в контакты, иначе придется поломать голову над именем.

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

Не забудьте проверить полученный токен с помощью ссылки api.telegram.org/bot/getMe , говорят, не всегда работает с первого раза.

2. Программирование

Создавать бота буду на Python3, однако благодаря адекватности этого языка алгоритмы легко переносятся на любой другой.

Telegram позволяет не делать выгрузку сообщений вручную, а поставить webHook, и тогда они сами будут присылать каждое сообщение. Для Python, чтобы не заморачиваться с cgi и потоками, удобно использовать какой-нибудь реактор, поэтому я для реализации выбрал tornado.web. (для GAE удобно использовать связку Python2+Flask)

Каркас бота:

URL = "https://api.telegram.org/bot%s/" % BOT_TOKEN MyURL = "https://example.com/hook" api = requests.Session() application = tornado.web.Application([ (r"/", Handler), ]) if __name__ == "__main__": signal.signal(signal.SIGTERM, signal_term_handler) try: set_hook = api.get(URL + "setWebhook?url=%s" % MyURL) if set_hook.status_code != 200: logging.error("Can"t set hook: %s. Quit." % set_hook.text) exit(1) application.listen(8888) tornado.ioloop.IOLoop.current().start() except KeyboardInterrupt: signal_term_handler(signal.SIGTERM, None)
Здесь мы при запуске бота устанавливаем вебхук на наш адрес и отлавливаем сигнал выхода, чтобы вернуть поведение с ручной выгрузкой событий.

Приложение торнадо для обработки запросов принимает класс tornado.web.RequestHandler, в котором и будет логика бота.

Class Handler(tornado.web.RequestHandler): def post(self): try: logging.debug("Got request: %s" % self.request.body) update = tornado.escape.json_decode(self.request.body) message = update["message"] text = message.get("text") if text: logging.info("MESSAGE\t%s\t%s" % (message["chat"]["id"], text)) if text == "/": command, *arguments = text.split(" ", 1) response = CMD.get(command, not_found)(arguments, message) logging.info("REPLY\t%s\t%s" % (message["chat"]["id"], response)) send_reply(response) except Exception as e: logging.warning(str(e))
Здесь CMD - словарь доступных команд, а send_reply - функция отправки ответа, которая на вход принимает уже сформированный объект Message .

Собственно, её код довольно прост:

Def send_reply(response): if "text" in response: api.post(URL + "sendMessage", data=response)

Теперь, когда вся логика бота описана можно начать придумывать ему команды.

3. Команды

Перво-наперво, необходимо соблюсти соглашение Telegram и научить бота двум командам: /start и /help:

Def help_message(arguments, message): response = {"chat_id": message["chat"]["id"]} result = ["Hey, %s!" % message["from"].get("first_name"), "\rI can accept only these commands:"] for command in CMD: result.append(command) response["text"] = "\n\t".join(result) return response

Структура message["from"] - это объект типа User , она предоставляет боту информацию как id пользователя, так и его имя. Для ответов же полезнее использовать message["chat"]["id"] - в случае личного общения там будет User, а в случае чата - id чата. В противном случае можно получить ситуацию, когда пользователь пишет в чат, а бот отвечает в личку.

Команда /start без параметров предназначена для вывода информации о боте, а с параметрами - для идентификации. Полезно её использовать для действий, требующих авторизации.

После этого можно добавить какую-нибудь свою команду, например, /base64:

Def base64_decode(arguments, message): response = {"chat_id": message["chat"]["id"]} try: response["text"] = b64decode(" ".join(arguments).encode("utf8")) except: response["text"] = "Can"t decode it" finally: return response

Для пользователей мобильного Telegram, будет полезно сказать @BotFather, какие команды принимает наш бот:
I: /setcommands
BotFather: Choose a bot to change the list of commands.
I: @******_bot
BotFather: OK. Send me a list of commands for your bot. Please use this format:

Command1 - Description
command2 - Another description
I:
whoisyourdaddy - Information about author
base64 - Base64 decode
BotFather: Success! Command list updated. /help

C таким описанием, если пользователь наберет /, Telegram услужливо покажет список всех доступных команд.

4. Свобода

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

UPD: Как верно подсказали, такое пройдет только при личном общении. В чатах боту доставляются только сообщения, начинающиеся с команды (/) (https://core.telegram.org/bots#privacy-mode)

Чтобы бот получал все сообщения в группах пишем @BotFather команду /setprivacy и выключаем приватность.

Для начала в Handler добавляем обработчик:

If text == "/": ... else: response = CMD[""](message) logging.info("REPLY\t%s\t%s" % (message["chat"]["id"], response)) send_reply(response)
А потом в список команд добавляем псевдо-речь:

RESPONSES = { "Hello": ["Hi there!", "Hi!", "Welcome!", "Hello, {name}!"], "Hi there": ["Hello!", "Hello, {name}!", "Hi!", "Welcome!"], "Hi!": ["Hi there!", "Hello, {name}!", "Welcome!", "Hello!"], "Welcome": ["Hi there!", "Hi!", "Hello!", "Hello, {name}!",], } def human_response(message): leven = fuzzywuzzy.process.extract(message.get("text", ""), RESPONSES.keys(), limit=1) response = {"chat_id": message["chat"]["id"]} if leven < 75: response["text"] = "I can not understand you" else: response["text"] = random.choice(RESPONSES.get(leven)).format_map({"name": message["from"].get("first_name", "")}) return response
Здесь эмпирическая константа 75 относительно неплохо отражает вероятность того, что пользователь всё-таки хотел сказать. А format_map - удобна для одинакового описания строк как требующих подстановки, так и без нее. Теперь бот будет отвечать на приветствия и иногда даже обращаться по имени.

5. Не текст.

Боты, как и любой нормальный пользователь Telegram, могут не только писать сообщения, но и делиться картинками, музыкой, стикерами.

Для примера расширим словарь RESPONSES:

RESPONSES["What time is it?"] = ["", "{date} UTC"]
И будем отлавливать текст :

If response["text"] == "": response["sticker"] = "BQADAgADeAcAAlOx9wOjY2jpAAHq9DUC" del response["text"]
Видно, что теперь структура Message уже не содержит текст, поэтому необходимо модифицировать send_reply:

Def send_reply(response): if "sticker" in response: api.post(URL + "sendSticker", data=response) elif "text" in response: api.post(URL + "sendMessage", data=response)
И все, теперь бот будет время от времени присылать стикер вместо времени:

6. Возможности

Благодаря удобству API и быстрому старту боты Telegram могут стать хорошей платформой для автоматизации своих действий, настройки уведомлений, создания викторин и task-based соревнований (CTF, DozoR и прочие).

Вспоминая , могу сказать, что теперь извращений меньше, а работа прозрачнее.

7. Ограничения

К сожалению, на данный момент существует ограничение на использование webHook - он работает только по https и только с валидным сертификатом, что, например для меня пока критично за счет отсутствия поддержки сертифицирующими центрами динамических днс.

К счастью, Telegram также умеет работать и по ручному обновлению, поэтому не меняя кода можно создать еще одну службу Puller, которая будет выкачивать их и слать на локальный адрес:

While True: r = requests.get(URL + "?offset=%s" % (last + 1)) if r.status_code == 200: for message in r.json()["result"]: last = int(message["update_id"]) requests.post("http://localhost:8888/", data=json.dumps(message), headers={"Content-type": "application/json", "Accept": "text/plain"}) else: logging.warning("FAIL " + r.text) time.sleep(3)

P.S. По пункту 7 нашел удобное решение - размещение бота не у себя, а на heroku, благо все имена вида *.herokuapp.com защищены их собственным сертификатом.

UPD: Telegram улучшили Бот Апи, из-за чего, теперь не обязательно иметь отдельную функцию для отправки сообщений при установленном вебхуке, а в ответ на POST запрос можно отвечать тем же сформированным JSON с ответным сообщением, где одно из полей устанавливается как ч "method": "sendMessage" (или любой другой метод, используемый ботом).

Теги:

  • telegram
  • введение
  • python3
Добавить метки