Инструкция: Как создавать ботов в Telegram

Боты — это модно. Нина Белая специально для Нетологии выбрала 45 полезных ботов для Telegram.

Эти телеграм-боты помогут решать задачи быстро и с пользой.

Хранить и обмениваться файлами

@topdf_bot — Конвертирует в PDF документы и файлы. Поддерживает DOC, DOCX, ODT, TXT и JPG.

@instasave_bot — Скачивает фото и видео из Instagram. Отправляете ссылку — получаете медиафайл.

@driveitbot — Сохраняет на «Google Диск» файлы весом до 20 МБ.

@filesbot — Умеет хранить документы и делиться ими с другими пользователями.

@transferRobot — Еще один помощник для работы с файлами: загружает в облачное хранилище и даёт постоянные ссылки на них.

Найти и скачать

@ru_tracker_bot — Скачивает торрент-файлы с заблокированного в России Rutracker без перехода на сайт.

@freebooksbot, @mybookbot — Ищут книги по запросу, предлагают выбрать формат и сохраняют файл в Dropbox.

@tap2bot — Ищет все: одежду, книги, фильмы, авиабилеты, отели, самые дешевые такси. Работает с Флибустой, РуТрекером, ВКонтакте и другими ресурсами.

курс

Интернет-маркетолог

Узнать больше

  • Освойте одну из самых востребованных digital-профессий
  • Познакомьтесь с основными инструментами интернет-маркетинга
  • Изучите теорию и отработайте практические навыки на реальных проектах

Почта

@findoBot — Поисковый ассистент для почты, облачных хранилищ, контактов. Работает с Gmail, Evernote, Dropbox, OneDrive.

@temp_mail_bot — Создает временный ящик и показывает его содержимое. Сам удаляет все это через 10 минут.

Языки

@ytranslatebot — Бот-переводчик от Яндекса.

@andyrobot — Помогает практиковать английский. Можно выбрать изучение отдельных слов, грамматики или построить диалог. Предлагает аудио с правильным произношением.

@slangbot — Еще один помощник в изучении английского. Можно запросить толкование слова или получить объяснение рандомного выражения из словаря этого бота.

@pronunciationbot — Присылает аудиофайл с произношением слова или фразы. Работает в групповых чатах.

Текст

@grammarnazibot — Проверяет грамотность текста. Если добавить этого бота в общий чат, он укажет на ошибки каждого участника обсуждения.

@swp_bot — Исправляет текст с ошибкой раскладки — русскую на английскую или наоборот.

@voiceru_bot — Синтезирует текст в речь и наоборот.

Для работы в Telegram

@yetanotherbot — Создает анонимный чат с заменой настоящего ника пользователя на вымышленный.

@pollbot — Организовывает голосование в чате с заданными вариантами ответа и считает статистику.

@hellouserbot — Бот-привратник для общего чата: приветствует новых участников, прощается с уходящими. Текст его реплик можно задать самому.

@msg_stats_bot — Считает статистику сообщений в чате, составляет топ-15 пользователей.

@controllerbot — Работает с каналами: может отправлять форматированные сообщения и создавать отложенные посты.

@metricsBot — Показывает данные из Google Analytics.

Читать также

4814.jpg

10 каналов для копирайтеров, журналистов и редакторов в Telegram

В городе и в мире

@onetwotrip_bot — Ищет авиабилеты: предлагает самый быстрый и самый дешевый варианты. Доступны настройки желаемого времени вылета или авиакомпании.

@aviasalesofficialbot — Бот от Aviasales ищет авиабилеты и гостиницы.

@yandexmapsbot — Работает с картами Яндекса — находит и показывает объекты, сообщает уровень пробок в городе.

@caffe_bot — Находит кафе и рестораны в радиусе километра от вас. Показывает расположение, ценник, контакты, фотографии места и отзывы о нем. Работает в мобильном клиенте.

@barmap_bot — Показывает пять открытых баров в радиусе километра от вас.

@flysafebot — Бот для тех, кто боится полетов. Он расскажет, какой рейс безопаснее для вашего маршрута, можно ли спокойно сесть в тот или иной самолет.

@osmbot — OpenStreetMap-бот умеет искать места по всему миру, присылает изображения в нескольких форматах на выбор, дает контакты магазинов в городах и поселках из базы сервиса. Говорит на английском.

@cargolinkbenzinbot — Покажет заправки в радиусе пяти километров от вас. Работает по всему СНГ.

Спорт

@fitmebot — Помогает купить или продать абонемент в тренажерный зал. Работает по всей России.

@crossfitwodbot — Присылает программу кроссфит-тренировок на день, записывает результат и сравнивает с достижениями других спортсменов.

Читать также

4353.jpg

11 чатов в Telegram для маркетологов

Прочие

@shtrafyBot — Проверяет, есть ли штрафы ГИБДД, сохраняет реквизиты автомобиля, сообщает о новых штрафах. Оплатить штраф с его помощью нельзя, но бот дает ссылку на оплату вне Telegram.

@russianpdd_bot — Экзамен на знание ПДД в виде бота. В базе 40 билетов по 20 вопросов, актуальных на 2016 год.

@mnp_bot — Определяет по номеру телефона регион и мобильного оператора.

@wmarkbot — Ставит водяные знаки на фотографии и видео. Можно настроить знак в виде текста или картинки.

@easystrongpasswordbot — Генератор паролей — и сложные, и простые составляет так, что их легко запомнить.

@radiusbot — Находит собеседников вокруг вашей локации. Минимальный радиус поиска — 10 метров, максимальная аудитория — весь мир. Бот можно использовать, например, на конференциях или лекциях, если хочется узнать мнение коллег. Для знакомства в барах сервис тоже вполне подойдет.

@RubleRobot — Подбрасывает для вас монетку — бот на случай принятия важных решений.

Хотите написать колонку для Нетологии? Читайте наши условия публикации. Чтобы быть в курсе всех новостей и читать новые статьи, присоединяйтесь к Телеграм-каналу Нетологии.

Читать также

15 каналов Telegram, полезных SMM-менеджеру

Premium

Чуи – Кинобот | Фильмы | Сериалы | Мультфильмы

Меня зовут Чуи и я помогу вам найти интересный фильм, сериал или мультфильм. ?В моей коллекции содержится более 800000Premium

DreamPower – Раздень Девушку

DreamPower бот поможет тебе раздеть любую девушку по фотографии и увидеть все её прелести ? Как снять ограничение 18+Premium

WorkBro

Самый популярный бот по поиску несложных проектов на фриланс. • Мониторит все популярные биржи по фрилансу • ПрисылаетPremium

MUSIC BOT / Музыка бот

Привет ? Я найду для тебя музыку по запросу. Отправь мне название исполнителя или трека.Premium

Накрутка подписчиков

Телеграм бот по накрутке подписчиков в социальные сети: – Instagram – YouTube – TikTok – ВКонтакте – Telegram – TwitterPremium

FindMusic

? FindMusic – лучший бот для поиска и скачивания музыки ?

CinemaKing

Бот для просмотра фильмов и сериалов в Telegram

Sound2Bot – Поиск музыки

Бот умеет: – Искать треки; – Создавать плейлисты; – Делиться плейлистами – Выгружать треки из Shazam; – Создавать

❂Lightmusic

Самый простой и удобный бот для поиска музыки.

Audiograbber

▱ Бот умеет: Искать треки ▱ Загружать музыку с профиля VK; Выгружать треки из Shazam; Создавать плейлисты;

AFILMBOT – онлайн кинотеатр

Простой и удобный бот для поиска фильмов и сериалов. Без переходов в браузер! Смотри фильмы, не покидая мессенджер.

AUDIO STORM BOT

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

Freelance Агрегатор

Актуальные проекты собранные с крупных фриланс площадок и социальных сетей по вашему фильтру ключевых и минус слов.

VK Music BOX

Погрузись в мир музыки БЕЗ ОГРАНИЧЕНИЙ! 1 Ищи любимые треки 2 Создавай собственные плейлисты 3 Загружай аудиозаписи из

Account Check

Бот поможет защитить вашу цифровую личность. Проверьте аккаунт на утечки пароля по почте, логину или номеру телефона.Содержание стать

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

Виды ботов в телеграме

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

  • контролер – дает возможность форматировать текст и отслеживать статистику канала с возможностью удаления отложенных публикаций;
  • лайкБот – создает «inline» для лайков в телеграм;
  • голосовалка – используется для создания опросов;
  • поллБот – выполняет опросы в группах и каналах;
  • группБатлер – блокировка и удаление участников за несоблюдение правил чата;
  • агент – генерирует приветственный текст для новых подписчиков;
  • принт – форматирует текст, добавляет ссылки и реакции.

Принцип работы бота

Что такое боты для чата в телеграм? Данные приложения – это специальный алгоритм в telegram, который используется для ведения диалога в автоматическом режиме с реальным участником канала.

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

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

Создание чат-бота в telegram

Как сделать бота для чата в telegram? Лучше всего заниматься созданием робота на персональном компьютере, поскольку данная процедура предполагает применение большого количества файлов.

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

Рассмотрим пошаговую инструкцию, как сделать чат для bot в telegram:

  1. После установки telegram для канала нужно открыть приложение и поисковой строке ввести надпись «Many бот».
  2. Затем запускаем поиск.
  3. После первого появления результатов нужно нажать кнопку «Старт», которая находится в нижнем правом угле программы.
  4. Далее выбираем вкладку спроектировать нового чат bota.
  5. После этой процедуры в окошке сообщений должно появиться уведомление от телеграм, в котором содержится полная инструкция ваших дальнейших действий. Руководствоваться нужно ей.
  6. По этой инструкции вам понадобиться найти учетную запись «BotFather» и выбрать ссылку синего цвета с именем аккаунта.
  7. Следом выбираем вкладку «Send Message», которая позволяет начать диалог с выбранным пользователем.
  8. Далее вводим команду «Старт» и получаем список команд, которые потребуется применить при создании робота.
  9. Отправляем команду «новый бот» и ждем ответа.
  10. Следом отправляем название для робота, оно должно быть оригинальным и запоминающимся, поскольку оно отображается в поисковых запросах. Помимо этого оно должно быть написанным на английском языке с соответствующим окончанием.
  11. Затем обязательно копируем токен и снова переходим в «Manybot», чтобы вставить скопированный токен.
  12. Ждем уведомление.
  13. Остается только описать возможности чат робота – каким образом он будет работать, и какого его предназначение.
  14. Приложение для канала сделано и его можно применять.

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

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

Боты для авторов каналов

@BotFather — регистрирует новых ботов. Пишешь название, занимаешь адрес и в ответ получаешь уникальный ключ-токен для подключения.

@manybot — создаёт ботов с кнопками. Нужно зарегистрировать бота и сообщить ключ-токен.

@vote — бот для опросов подписчиков в канале и чате.

@like — лайки и дизлайки к постам.

@gif — бот для поиска гифок.

@gifscombot — конвертация видео в гифку и наоборот.

@youtube — видео с популярного видеохостинга.

@crosser_bot — найдет пересечение подписчиков в каналах, поможет для ВП.

@telepult_bot — бот Ева, публикует посты в оптимальное время, собирает статистику и считает прибыль с рекламы. Нужно зарегистрироваться в Телепульте и добавить Еву в свой канал.

Боты для Телеграм-чатов

@combot — обязательный бот для чата, подробная статитистка активности участников.

@fovbot — модерирует чаты, удаляет ссылки, мат и спам.

@WelcomeAgentBot — приветствует новых участников чата

Каталоги каналов 

@tgcat — список каталогов каналов/ботов/чатов.

@botchan — каталог каналов и ботов.

@channelslist — каталог Телеграм-каналов.

@rugram — лучшие каналы и боты в Telegram.

@CatalogTelegram — структурированный каталог.

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

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

Прежде чем начинать разработку, бота необходимо зарегистрировать и получить его уникальный id, являющийся одновременно и токеном. Для этого в Telegram существует специальный бот — @BotFather. Пишем ему /start и получаем список всех его команд. Первая и главная — /newbot — отправляем ему и бот просит придумать имя нашему новому боту. Единственное ограничение на имя — оно должно оканчиваться на «bot». В случае успеха BotFather возвращает токен бота и ссылку для быстрого добавления бота в контакты, иначе придется поломать голову над именем. Для начала работы этого уже достаточно. Особо педантичные могут уже здесь присвоить боту аватар, описание и приветственное сообщение. Не забудьте проверить полученный токен с помощью ссылки /getMe”>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("MESSAGEt%st%s" % (message['chat']['id'], text))                      if text[0] == '/':                         command, *arguments = text.split(" ", 1)                         response = CMD.get(command, not_found)(arguments, message)                         logging.info("REPLYt%st%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'] = "nt".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: Как верно подсказали, такое пройдет только при личном общении. В чатах боту доставляются только сообщения, начинающиеся с команды (/<commans:>

  • All messages that start with a slash ‘/’ (see Commands above)
  • Messages that 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>"](messalogging.info("REPLYt%st%s" % (message['chat']['id'], response))     send_reply(response) </speech>

А потом в список команд добавляем псевдо-речь:

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>", "{date} UTC"] </at>

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

if respo'text'] == "<at>":         response[cker'] = "BQADAgADeAcAAlOx9wOjY2jpAAHq9DUC"         del response['text'] </at>

Видно, что теперь структура 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) 

И все, теперь бот будет время от времени присылать стикер вместо времени:5656ebbfc8cd4e97b7c0fe2495fae6b3.png

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’ (или любой другой метод, используемый ботом).</at></commans:>Используемые источники:

  • https://netology.ru/blog/bots-45
  • https://telegram.org.ru/telegram-bots/
  • https://telegram-rus.ru/chat
  • https://base.telepult.pro/telegram-kanaly/boty-dlya-administratorov
  • https://habr.com/ru/post/262247/

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий