Как сделать треды в телеграм
24 июня разработчики Telegram открыли платформу для создания ботов. Новость кого-то обошла стороной Хабр, однако многие уже начали разрабатывать викторины. При этом мало где указаны хоть какие-то примеры работающих ботов.
Прежде всего, бот для Telegram — это по-прежнему приложение, запущенное на вашей стороне и осуществляющее запросы к Telegram Bot API. Причем API довольное простое — бот обращается на определенный URL с параметрами, а Telegram отвечает JSON объектом.
Рассмотрим API на примере создания тривиального бота:
Прежде чем начинать разработку, бота необходимо зарегистрировать и получить его уникальный id, являющийся одновременно и токеном. Для этого в Telegram существует специальный бот — @BotFather.
Пишем ему /start и получаем список всех его команд.
Первая и главная — /newbot — отправляем ему и бот просит придумать имя нашему новому боту. Единственное ограничение на имя — оно должно оканчиваться на «bot». В случае успеха BotFather возвращает токен бота и ссылку для быстрого добавления бота в контакты, иначе придется поломать голову над именем.
2. Программирование
Создавать бота буду на Python3, однако благодаря адекватности этого языка алгоритмы легко переносятся на любой другой.
Здесь мы при запуске бота устанавливаем вебхук на наш адрес и отлавливаем сигнал выхода, чтобы вернуть поведение с ручной выгрузкой событий.
Приложение торнадо для обработки запросов принимает класс tornado.web.RequestHandler, в котором и будет логика бота.
Здесь CMD — словарь доступных команд, а send_reply — функция отправки ответа, которая на вход принимает уже сформированный объект Message.
Собственно, её код довольно прост:
Теперь, когда вся логика бота описана можно начать придумывать ему команды.
3. Команды
Перво-наперво, необходимо соблюсти соглашение Telegram и научить бота двум командам: /start и /help:
Команда /start без параметров предназначена для вывода информации о боте, а с параметрами — для идентификации. Полезно её использовать для действий, требующих авторизации.
После этого можно добавить какую-нибудь свою команду, например, /base64:
Для пользователей мобильного 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. Свобода
- 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.)
Для начала в Handler добавляем обработчик:
А потом в список команд добавляем псевдо-речь:
Здесь эмпирическая константа 75 относительно неплохо отражает вероятность того, что пользователь всё-таки хотел сказать. А format_map — удобна для одинакового описания строк как требующих подстановки, так и без нее. Теперь бот будет отвечать на приветствия и иногда даже обращаться по имени.
5. Не текст.
Для примера расширим словарь RESPONSES:
И будем отлавливать текст <at_sticker>:
Видно, что теперь структура Message уже не содержит текст, поэтому необходимо модифицировать send_reply:
И все, теперь бот будет время от времени присылать стикер вместо времени:
6. Возможности
Благодаря удобству API и быстрому старту боты Telegram могут стать хорошей платформой для автоматизации своих действий, настройки уведомлений, создания викторин и task-based соревнований (CTF, DozoR и прочие).
Вспоминая статью про умный дом, могу сказать, что теперь извращений меньше, а работа прозрачнее.
7. Ограничения
К счастью, Telegram также умеет работать и по ручному обновлению, поэтому не меняя кода можно создать еще одну службу Puller, которая будет выкачивать их и слать на локальный адрес:
24 июня разработчики Telegram открыли платформу для создания ботов. Новость кого-то обошла стороной Хабр, однако многие уже начали разрабатывать викторины. При этом мало где указаны хоть какие-то примеры работающих ботов.
Прежде всего, бот для Telegram — это по-прежнему приложение, запущенное на вашей стороне и осуществляющее запросы к Telegram Bot API. Причем API довольное простое — бот обращается на определенный URL с параметрами, а Telegram отвечает JSON объектом.
Рассмотрим API на примере создания тривиального бота:
Прежде чем начинать разработку, бота необходимо зарегистрировать и получить его уникальный id, являющийся одновременно и токеном. Для этого в Telegram существует специальный бот — @BotFather.
Пишем ему /start и получаем список всех его команд.
Первая и главная — /newbot — отправляем ему и бот просит придумать имя нашему новому боту. Единственное ограничение на имя — оно должно оканчиваться на «bot». В случае успеха BotFather возвращает токен бота и ссылку для быстрого добавления бота в контакты, иначе придется поломать голову над именем.
2. Программирование
Создавать бота буду на Python3, однако благодаря адекватности этого языка алгоритмы легко переносятся на любой другой.
Здесь мы при запуске бота устанавливаем вебхук на наш адрес и отлавливаем сигнал выхода, чтобы вернуть поведение с ручной выгрузкой событий.
Приложение торнадо для обработки запросов принимает класс tornado.web.RequestHandler, в котором и будет логика бота.
Здесь CMD — словарь доступных команд, а send_reply — функция отправки ответа, которая на вход принимает уже сформированный объект Message.
Собственно, её код довольно прост:
Теперь, когда вся логика бота описана можно начать придумывать ему команды.
3. Команды
Перво-наперво, необходимо соблюсти соглашение Telegram и научить бота двум командам: /start и /help:
Команда /start без параметров предназначена для вывода информации о боте, а с параметрами — для идентификации. Полезно её использовать для действий, требующих авторизации.
После этого можно добавить какую-нибудь свою команду, например, /base64:
Для пользователей мобильного 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. Свобода
- 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.)
Для начала в Handler добавляем обработчик:
А потом в список команд добавляем псевдо-речь:
Здесь эмпирическая константа 75 относительно неплохо отражает вероятность того, что пользователь всё-таки хотел сказать. А format_map — удобна для одинакового описания строк как требующих подстановки, так и без нее. Теперь бот будет отвечать на приветствия и иногда даже обращаться по имени.
5. Не текст.
Для примера расширим словарь RESPONSES:
И будем отлавливать текст <at_sticker>:
Видно, что теперь структура Message уже не содержит текст, поэтому необходимо модифицировать send_reply:
И все, теперь бот будет время от времени присылать стикер вместо времени:
6. Возможности
Благодаря удобству API и быстрому старту боты Telegram могут стать хорошей платформой для автоматизации своих действий, настройки уведомлений, создания викторин и task-based соревнований (CTF, DozoR и прочие).
Вспоминая статью про умный дом, могу сказать, что теперь извращений меньше, а работа прозрачнее.
7. Ограничения
К счастью, Telegram также умеет работать и по ручному обновлению, поэтому не меняя кода можно создать еще одну службу Puller, которая будет выкачивать их и слать на локальный адрес:
Простая инструкция от Амплифера, которая поможет повысить вовлечение аудитории.
Реакции к постам помогают понять мнение читателей о вашем контенте. Рассказываем, как добавить их ко всем публикациям ↓
Включить реакции можно с помощью @ReactBot — найдите его в Телеграме и включите через команду /start:
Добавьте бота в администраторы канала, в который хотите публиковать посты с реакциями. Сделать это может только владелец. Теперь потребуется переслать боту один из постов с вашего канала — так он поймёт, где активировать реакции.
Подключите Амплифер, чтобы публиковать посты в Телеграм. Можно публиковать фото, видео, ссылки, работать с разметкой Маркдаун и собирать статистику. Бесплатный пробный период
Все готово! Теперь ко всем постам в канале будут добавляться реакции. Это будет работать и при публикации через Амплифер:
Если захотите изменить или отключить реакции, то это можно сделать в самом боте. Для изменения отправьте ему новые реакции, а для отключения нажмите на кнопку «Disable Reaction».
Экономьте время на постинге в Телеграм с Амплифером
«Тихая» публикация, Маркдаун, поддержка фото и картинок. Наглядный календарь и удобная аналитика. Бесплатный пробный период 7 дней
2. Создавайте напоминания
- Где это работает: в мобильных приложениях.
3. Отправляйте видео и гифки, не покидая Telegram
Где это работает: в веб‑версии, а также в мобильных и настольных приложениях.
Вы можете искать анимации в каталоге GIPHY и ролики на YouTube прямо в окне чата и тут же отправлять найденные файлы собеседникам.
Чтобы найти гифку, наберите @gif и после пробела введите поисковый запрос. Например, @gif smile — для поиска кадров с улыбкой. Желательно вводить запросы на английском. Когда найдёте нужную анимацию, нажмите на неё для отправки.
- Где это работает: в мобильных приложениях.
5. Создайте свою тему оформления
- Где это работает: в мобильных и настольных приложениях.
Telegram предлагает массу вариантов для кастомизации. Вы можете не только выбирать между готовыми темами оформления, но и создать свою, настроив внешний вид каждого элемента интерфейса.
Чтобы открыть редактор тем в Telegram для iOS, перейдите в раздел «Настройки» → «Оформление», нажмите на плюс в верхнем правом углу и выберите «Создать новую тему».
Чтобы открыть редактор тем в Telegram для Android или в десктопных версиях мессенджера, перейдите в раздел «Настройки» → «Настройки чатов», нажмите на три точки в верхнем правом углу и выберите «Создать новую тему».
6. Отправляйте самоуничтожающиеся файлы, которые нельзя пересылать
- Где это работает: в мобильных приложениях.
7. Управляйте своей видимостью в Сети
- Где это работает: в мобильных и настольных приложениях.
Telegram разрешает каждому пользователю выбирать, кто видит его сетевой статус и время последней активности. Вы можете настроить мессенджер так, чтобы никто не знал, когда вы онлайн, или сделать эту информацию доступной только некоторым контактам.
Перейдите в раздел «Настройки» → «Конфиденциальность» → «Последняя активность» и выберите подходящие параметры. Учтите, что вы не сможете видеть активность людей, от которых скроете свой сетевой статус.
8. Просматривайте видео поверх других окон
- Где это работает: в приложении для iOS.
Вы можете смотреть отправленные или полученные YouTube‑видео и параллельно переписываться в чатах. При этом ролик будет отображаться в небольшом плавающем окне.
Чтобы запустить видео в таком режиме, нажмите на превью‑картинку, которая отображается рядом со ссылкой. Когда откроется плеер, нажмите на специальную кнопку в верхнем правом углу. После этого вы сможете перемещать окно с роликом по всему экрану.
9. Защитите чаты паролем
- Где это работает: в мобильных приложениях.
Эта функция позволяет защитить переписку от посторонних, если те получат доступ к устройству. Она может пригодиться, если вы случайно оставите где‑нибудь незаблокированный смартфон. Или если вы доверяете аппарат близким, но не хотите, чтобы те просматривали вашу переписку. При всём желании без кода подтверждения открыть список чатов будет невозможно.
Функция называется «Код‑пароль» и доступна в разделе «Настройки» → «Конфиденциальность». Создайте здесь защитный код и выберите время для автоблокировки. Каждый раз по его истечении Telegram будет закрывать доступ к чатам и отображать их только после ввода пароля. На устройствах с дактилоскопическим сканером вместо кода можно использовать отпечаток пальца.
10. Выбирайте, с какого момента будет начинаться отправленное видео
- Где это работает: в мобильных приложениях.
Этот материал впервые был опубликован в июле 2018 года. В мае 2020-го мы обновили текст.
Читайте также: