Как подписаться на бота в телеграмме – Боты и роботы в Телеграмм

Содержание

Боты и роботы в Телеграмм

Telegram Messenger самый совершенный и технологически продвинутый месеенджер для телефонов и планшетов, который набирает все большую популярность среди пользователей Рунета. В чем секрет успеха этого приложения спросите вы — отличная и стабильная работа, разнообразные фишки которых нет у конкурирующих мессенджеров. Одной из таких опция являются Боты в Телеграмм. Это по сути программа которая отвечает вам на нужные запросы.

Вам достаточно знать список фраз, на которые роботы в Telegram реагируют и дают ответы.  Самые популярные боты это — Робот Антон — @telerobot, который может вам подсказать погоду, курс валюты, русифицировать ваш Телеграмм, также он в курсе всех новостей в мире, спорте, культуре, науке и многое другое. Тажке вы сможете узнать какие события или мероприятия планируются в вашем городе.

Зачем нужны Боты Телеграмм и как ими пользоваться ?

Telegram Bots — это функция присущая только мессенджеру Телеграмм. Давайте рассмотрим какие еще боты есть в телеграмме и как их добавить в свой список контактов.

  • @quizbot Робот, устраивающий викторины. Для старта наберите бот старт
  • @BenderBot Робот с расширенным набором плагинов. Для помощи наберите !help
  • @clippy Робот, созадающий стикеры из изображений. Для помощи наберите help
  • @cbr_bot Робот который показывает курс валюты

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

  1. Заходим в TM (Telegram Messenger) и открываем поиск, вводим имя нужного бота
  2. Теперь пишем команду нашему боту:

Робот Антон — @telerobot может отвечать на следующие команды :

  • Telegram Bot 0.13.0
  • locale [ios|android|windows|wp|osx] [ru|ua|be|uz|az|tr|tt] — Отправляет файл локализации
  • погода [город] — Погода в указанном городе
  • курс [валюта] — Текущие курсы валют и сырья по ЦБ РФ
  • пикабу — Случайный пост из горячего пикабу
  • гадай — Посмотреть в хрустальный шар
  • новость [категория] — Случайная новость. Чтобы просмотреть список категорий, наберите новости список
  • хаха — Рассказать несмешной анекдот
  • баш — Случайная цитата с bash.im

Как создавать своего бота в Telegram Messenger?

Не для кого не является секретом что Telegram Открыл платформу для свободного создания ботов. По сути это приложение которое функционирует на ваше стороне, и осуществляет запросы к Telegram API. Причем API довольное простое — бот обращается на определенный URL с параметрами, а Telegram отвечает JSON объектом. более подробная инструкция по созданию ботов описана на Хабре. Вы можете ознакомиться с инструкцией по ссылке.

telegram-free.org

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

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

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

Добавление

Для начала необходимо понять, что называется ботом в приложении Телеграмм. Это специальные роботы, запрограммированные на определенные действия, с которыми пользователь взаимодействует посредством чата. В зависимости от назначения различаются их функции и возможности. У каждого имеются собственные команды, на которые он реагирует. В Telegram Messenger огромное количество таких программ. Многие ресурсы предлагают их для удобства пользователей.

Добавить аккаунт в мессенджере довольно просто. Необходимо знать его аккаунт, начинающийся с символа @. Имя вводится в поиске приложения, из предложенных вариантов нужно выбрать подходящий. Откроется окно взаимодействия с ботом, в нем присутствует кнопка Start или «Начать», если у вас установлена русская локализация. Необходимо ее нажать, тогда активируется режим диалога. У множества аккаунтов присутствует возможность управления кнопками снизу экрана, а не только посредством команд.

      

Прикрепление бота в группу

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

  • Найти необходимого аккаунта в поиске;
  • Послать ему свои контактные данные;
  • Пригласить его в группу.

Важный нюанс — не во всех группах присутствует возможность добавления чат-бота. Этот параметр задает создатель. Сам процесс довольно простой, занимает буквально несколько минут на ознакомление. Предназначается он для более быстрого наполнения чата контентом и пользователями.

xn--80affa3aj0al.xn--d1ababe6aj1ada0j.xn--p1acf

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

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

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

Как искать и подключить ботов в Telegram

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

Можно выделить 2 самых простых и доступных способа поиска ботов в Телеграмме:

  1. Через специального робота @StoreBot
  2. Использовать каталог на любом из ресурсов в сети интернет

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

Еще более простой способ, это найти нужно робота в интернете:

  • Для этого переходим в наш каталог ботов и выбираем нужного;
  • После этого достаточно просто вбить его имя в строку поиска в приложении и запустить робота.

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

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

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

telegramzy.ru

Как создать и подключить бота к каналу Telegram для оформления постов!

В мессенджере Telegram, если размещать на своём канале посты стандартным способом, не заморачиваясь с подключением каких-либо ботов, вы не сможете эти посты никак оформить. Максимум — текст и ссылку приложить. И то ссылку эту даже спрятать не получится в какое-нибудь слово или фразу, можно только в обычном виде отправить 🙂 А это, как говорится, не камельфо, некрасиво… Ну и другие возможности оформления также будут закрыты: возможность оформить пост разными шрифтами, прикрепить картинку, добавить смайликов и прочего.

Сейчас речь идёт именно о посте (т.е. о сообщении) на канал, а не о статье в Telegra.ph!

Но вы же хотите канал вести нормально, а не как попало? 🙂 А нормально — это значит не только годный контент выдавать подписчикам, но и оформлять на уровне!

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

Система этих ботов в Телеграме на самом деле маленько запутанная 🙂 Я не сразу въехал что к чему и почему, например, одного бота нужно создавать через другого бота 🙂 Но я помогу в этом разобраться и после того как начнете потихоньку работать с ботами, пазл в голове полностью сложится!

Боты ControllerBot, BotFather и собственный наш бот. Что к чему!

Для начала внесу немного ясности, чтобы сразу хоть немного прояснить ситуацию с этими ботами 🙂

  • ControllerBot — это, проще говоря, основной управляющий бот в Телеграме. Через него вы можете управлять своими каналами (подключать к каналам собственных ботов и отключать), перейти к публикации поста в канале.

    С этого бота мы начнём работу по созданию своего бота и подключению его к каналу.

  • BotFather — служит непосредственно для управления вашими ботами. Через него можно создать и редактировать своих ботов.

  • Наш собственный бот, которого мы создадим и назовём как душе угодно, уже будет нам нужен именно для создания и оформления постов на наш канал.

Создаём собственного бота через ControllerBot и BotFather

Для добавления бота, в строке поиска Telegram наберите «ControllerBot» [1], затем откройте найденного бота с таким же названием [2] и в окне бота нажмите «Запустить» [3] внизу.


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


Бот предлагает нам список возможных действий. Сейчас нам необходимо подключить свой канал. Кликаем по предложенной ссылке «/addchannel» (добавить канал).


Получаем инструкцию по подключению бота. Кликаем по имени бота «@BotFather», указанного в пункте 1.


Вы перейдёте сразу в окно бота BotFather, через которого уже будем создавать своего бота. Нажмите «Запустить» внизу.


Бот ответит нам, после чего кликните по команде «/newbot»:


Теперь нужно указать имя создаваемого бота и отправить сообщение. Можно указывать любое, например, часть имени фамилии или часть названия канала, как удобно. Пример:

Теперь необходимо указать ник для создаваемого бота. Здесь можно указать тоже самое, но обязательно на конце должно стоять «bot» либо через знак нижнего подчёркивания «_bot». Пример:

Если вы вдруг получили сообщение «Sorry, this username is already taken. Please try something different.», то значит такой ник уже занят и нужно указать другой.

Если всё верно сделали, получите сообщение об успешном создании бота и специальный длинный ключ (токен):


Его нужно скопировать в ControllerBot, с которым мы сразу начинали работу.

Вставив ключ в окно чата ControllerBot, он в ответ выдаст инструкцию по добавлению канала к нему. Выполняем её…

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


Затем открываем созданный нами канал для работы, переходим в его меню и выбираем «Управление каналом».


Открываем раздел «Администраторы».


Внизу нажимаем «Добавить администратора».


В строке поиска вверху [1] вставьте имя скопированного бота и после, когда он появится в результатах поиска, кликните по нему [2].


Нажимаем «ОК» в окне с вопросом о назначении бота администратором.

Ничего не изменяя в настройках, нажмите «Сохранить» в следующем окне.


Всё, бот в качестве администратора канала добавлен и теперь окно можно закрыть:


Теперь, выполняя пункт 2, нам нужно переслать в чат «Controller Bot» любое сообщение с вашего канала или его адрес. Проще взять адрес, поскольку канал новый и в нём может ещё не быть никаких сообщений.

Открываем снова меню канала и выбираем «Описание канала».


Копируем ссылку, которая является адресом вашего канала (кликните по ней правой кнопкой мыши и выберите «Копировать ссылку»).


Отправляем эту ссылку боту «Controller Bot».


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


Далее бот уточняет, верно ли он выбрал город. Нажмите «Верно», если всё так или введите другой ближайший к вам город.


На этом всё. Канал к боту «Controller Bot» был подключен, основные настройки выполнены, о чём свидетельствует очередной ответ бота:



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

Заключение

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

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

Буду рад адекватным комментариям и готов подискутировать по теме статьи 🙂

serfery.ru

Как добавить бота в Telegram — инструкция 2019

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

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

Рекомендуем нашу статью о самостоятельном создании Телеграм-ботов.

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

Свои собственные боты есть у «Сбербанка», «Почты России», «OneTwoTrip», «Связного», «Медузы» и многих других.

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

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

Специально для жителей РФ: рекомендуем бота TeleBot, который раздает надежные, быстрые и бесплатные MTProxy для обхода блокировки Telegram.

Содержание:

Как начать работу с ботом

Для обычных пользователей роботы работают через диалоги прямо в Телеграм. Нужного можно найти через строку поиска. Лучше всего использовать для этого имя, оно всегда начинается с «@» и заканчивается на «…bot», например, @PollBot — помощник для создания голосований.

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

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

Чтобы активировать помощника, нужно начать с ним диалог нажатием кнопки «Start». В дальнейшем большинство функций будут доступны именно через окно беседы. Но есть, например, @gif (для поиска гифок) или @vkmusic_bot (для поиска музыки) — их можно вызывать в диалоге с вашим собеседником, для чего нужно напечатать символ «@».

Больше музыкальных ботов вы найдете в специальном разделе нашего Каталога.

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

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

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

  • /start — начало работы с ботом;
  • /help — помощь по функциям и работе бота;
  • /settings — настройки, если они предусмотрены.

Что делать, если бот не работает

Бот — это программный продукт, который использует облачные сервера Телеграм для работы. Поэтому их работоспособность может влиять на скорость реакции на команды. Чаще всего, если робот долго не отвечает на команды, то проблема именно в этом. Единственное, что можно сделать в этом случае — немного подождать, пока работа не возобновится.

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

Как ещё можно использовать ботов

Это хороший инструмент для администраторов каналов и групп.

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

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

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

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

Узнайте о том, как добавить админа в Телеграм-канал.

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

Добавить бота в Телеграм — как его найти и начать работу

5 (100%) 1 vote[s]

tgrm.su

Как в Телеграмме найти бота и подключить его в чат лист Telegram

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

Где искать?

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

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

Второй вариант поиска — использование рубрикаторов. Их также можно найти в поисковой системе. Это не полноценный ресурс, скорее, частный обзор.
Один из самых удобных ресурсов — @storebot.

Можно воспользоваться и сайтом Storebot.me

Он объединяет в себе строку поиска, новинки, рубрикатор, топ чарт. Расскажем подробнее, как искать ботов в Телеграмм (Telegram) с помощью этого сервиса.

Чтобы найти и вызвать бота, сделайте следующее:

  • Войдите в мессенджер и в строке поиска наберите @storebot. В результатах щелкните по его названию.

  • Нажмите «Start» или «Начать».

  • Откроется окно чата и вы сможете воспользоваться меню:
    1. Топ.
    2. Лучшие новинки.
    3. Недавно добавленные.
    4. По категориям.
    5. Вывод поисковой формы.

  • Также искать помогает команда /search.
  • Сервис выдает результаты небольшими списками, поэтому не забывайте нажимать «Показать больше».
  • Подключиться к боту можно простым нажатием на его названии.

Топ лучших каталогов Telegram – поиск ботов

  1. Ru.telegram-store
    https://ru.telegram-store.com/catalog/product-category/bots/
    Русскоязычный сайт самого известного каталога роботов. Здесь можно найти все.
  2. Catalog-Telegram
    https://catalog-telegram.com/
    Все сервисы разбиты на категории. Также есть строка поиска, и новинки.
  3. Telegram-ru
    http://telegram-ru.com/directory_bots.html
    Имеет только рубрикатор, в котором размещены обзоры.
  4. Telegram.org.ru
    http://telegram.org.ru/telegram-bots/
    Простой перечень известных ресурсов. Пользователи голосуют за каждый, поэтому можно увидеть их рейтинг.

В любом из них можно найти много интересного. А как подключить бота в Телеграмм? Очень просто – просто щелкните по нему, если же его необходимо добавить в групп, то зайдите в меню группы и в поиске участников введите имя бота и нажмите « Пригласить». Откроется страница программы. Если вы ищете с ПК, то можете нажать «Open in Web» и робот добавится в список вашего аккаунта. Если вы ищете с мобильного устройства, то прежде чем установить бот, скачайте мобильное приложение Telegram. Это можно сделать в Google Play или AppStore. Кстати, если вы не знаете, как найти и добавить бота в телеграмме на Iphone, то ответ прост – точно также. Программа не зависит от платформы, на которой установлен Телеграмм.

Нужные боты в Телеграмме

  1. @MStickersBot
    Автоматический подбор изображения к контексту. Введите сообщение, а программа подберет стикер.
  2. @Weatherman
    Оперативная сводка погоды. Позволяет задать время получения актуальной информации. Также предлагается краткий или подробный прогноз на выбор.
  3. @kino_bot
    Информация о новинках кино. Просто подпишитесь и получайте каждый час данные о новых фильмах.
  4. @sberometerbot
    Предоставляет информацию о курсах валют, драгметаллов и топлива. Достаточно набрать название интересующей валюты и будет прислано сообщение об официальном и биржевом курсах на текущий момент.
  5. @yandexmapsbot
    Разработка от Яндекс.Карт. Позволяет построить маршрут, найти местоположение по адресу, получить информацию о пробках.
  6. @mirabellabot
    Аналог календаря. Сохраняет закладки. Можно делать текстовые заметки.
  7. @IceCalcBot
    Заменяет калькулятор. Имеет подробную подсказку.
  8. @VestniqBot
    Формирует подборку из указанных каналов.
  9. @transnow_bot
    Русско-английский переводчик. Определяет язык сообщения и выдает подробный перевод.

telegramzy.ru

Как создавать ботов в Telegram / Habr

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

Прежде всего, бот для Telegram — это по-прежнему приложение, запущенное на вашей стороне и осуществляющее запросы к Telegram Bot API. Причем API довольное простое — бот обращается на определенный URL с параметрами, а Telegram отвечает JSON объектом.

Рассмотрим API на примере создания тривиального бота:

1. Регистрация

Прежде чем начинать разработку, бота необходимо зарегистрировать и получить его уникальный id, являющийся одновременно и токеном. Для этого в Telegram существует специальный бот — @BotFather.

Пишем ему /start и получаем список всех его команд.

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

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

Не забудьте проверить полученный токен с помощью ссылки api.telegram.org/bot<TOKEN>/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[0] == '/':
                        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: Как верно подсказали, такое пройдет только при личном общении. В чатах боту доставляются только сообщения, начинающиеся с команды (/<command>) (https://core.telegram.org/bots#privacy-mode)

  • All messages that start with a slash ‘/’ (see Commands above)
  • Messages that mention the bot by username
  • Replies to the bot’s own messages
  • Service messages (people added or removed from the group, etc.)

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

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

if text[0] == '/':
    ...
else:
    response = CMD["<speech>"](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)[0]
    response = {'chat_id': message['chat']['id']}
    if leven[1] < 75:
        response['text'] = "I can not understand you"
    else:
        response['text'] = random.choice(RESPONSES.get(leven[0])).format_map(
            {'name': message["from"].get("first_name", "")}
        )
    return response

Здесь эмпирическая константа 75 относительно неплохо отражает вероятность того, что пользователь всё-таки хотел сказать. А format_map — удобна для одинакового описания строк как требующих подстановки, так и без нее. Теперь бот будет отвечать на приветствия и иногда даже обращаться по имени.

5. Не текст.

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

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

RESPONSES["What time is it?"] = ["<at_sticker>", "{date} UTC"]


И будем отлавливать текст :

if response['text'] == "<at_sticker>":
        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’ (или любой другой метод, используемый ботом).

habr.com

Отправить ответ

avatar
  Подписаться  
Уведомление о