Telegram bot на чем писать
Перейти к содержимому

Telegram bot на чем писать

  • автор:

25 лучших библиотек для написания Telegram чатботов в 2020 году

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

Любопытные факты

  • Мы нашли целых три библиотеки Telebot на разных языках, которые не связаны друг с другом
  • Во всех популярных языках обязательно есть одна популярная, но слабо документированная библиотека, и одна хорошо документированная, но отстающая в популярности
  • В Bots Club всегда будут рады вашим ботам, поэтому не забудьте опубликовать их после релиза! ��

.Net остаётся крайне популярным для разработки устойчивых финансовых приложений. Но и у его поклонников нашлось время для создания крайне популярной библиотеки .NET Client for Telegram Bot API. Более 1,4 тыс звёзд на GitHub и более 3,5 тыс проектов на её основе.

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

  • Например, tgbot-cpp от российского разработчика Олега Морозенкова, ныне поддерживаемую 27 контрибуторами и имеющую 361 звезду на GitHub;
  • или LibTelegram из Великобритании от программиста slowriot, чуть менее популярную, но лучше документированную

Elixir

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

    от японского разработчика Yu Zhang, уже сплотила вокруг себя 34 контрибуторов и заслужила 293 звезды на GitHub от бразильца João Ferreira хорошо документирована и уже отмечена 113 звёздами

Энтузиасты языка Go также не остались в стороне от разработки чатботов для Telegram.

    имеет более 2,3 тыс звёзд на GitHub благодаря усилиям 70 контрибуторов.
  • Однако ему на пятки наступает Telebot от Ian P Badtrousers, обретший свою армию поклонников, имеющий более 1,4 тыс звёзд и подробную документацию.

Haskell

Мы смогли найти одну достойную библиотеку для этого языка: telegram-api от klappvisor, к разработке которой уже подключились 18 других разработчиков.

Java — один из старейших языков, на базе которого работают миллиарды устройств и приложений. Несмотря на появление модных альтернатив, построенных на базе JVM (таких, как Scala и Kotlin), ванильный Java по-прежнему остаётся популярным.

  • Самым популярным решением для построения Telegram ботов на Java является Telegram Bot Java Library от испанского разработчика Ruben Bermudez. Более 2 тысяч звёзд и 616 форков на GitHub.
  • Стоит также обратить внимание на немного менее популярную, но при этом хорошо документированную библиотеку Java Telegram Bot API от Стаса Паршина, используемую сотнями разработчиков и имеющую 680 звёзд на GitHub.

Kotlin

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

Лучшим решением для написания своего бота для Telegram на Kotlin на данный момент является библиотека Kotlin Telegram Bot от испанского разработчика Iván Martín. Более двухсот звёзд на GitHub и 20 контрибуторов.

Отдельного упоминания заслуживает решение Telegraff от российского разработчика Руслана Молчанова с 93 звёздами на GitHub.

Node JS

Node JS приобрёл большую популярность среди разработчиков из-за своей простоты и обилия библиотек.

  • Лучшим фреймворком на Node JS заслуженно считается Telegram Bot API от испанского разработчика Yago. Пройдя долгий путь с 2015 года, эта библиотека получила более 4,5 тысяч звёзд на GitHub, поддерживается 67 контрибуторами и используется более, чем 5,000 разработчиков.
  • Также замечательным решением является telegraf от Виталия Домникова и Сергея Совы, с более чем 3,6к звёздами и 6,5к проектами, реализованных на нём.

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

    от Avtandil Kikabidze и Armando Lüscher, с более, чем 2,3 тыс. звёзд на GitHub и используемый в сотнях проектов от Irfaq Syed: 1,7 тыс. звёзд и 27 контрибуторов от Camilo Sperberg с 610 звёздами и крепкой поддержкой сообщества , развиваемый сообществом из 26 разработчиков и получивший уже 614 звёзд

Python

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

    имеет более 11,5 тысяч звёзд на GitHub, используется тысячами разработчиков и активно поддерживается сообществом (141 контрибутор).
  • Также профессиональные разработчики оценят AIOGram с почти тысячей звёзд и более 60 контрибуторами

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

  • Если вы его поклонник, то вам стоит обратить внимание на telegram-bot-ruby, библиотеку от Александра Типугина, имеющую почти тысячу звёзд на GitHub и используемую в более, чем 1300 проектах.
  • Также, возможно, вас заинтересует Telegram::Bot от Макса Меленьтева, с очень подробной документацией.

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

Если вы решили создать своего бота на Rust, то лучшим выбором для вас будут следующие библиотеки:

    от мультинацональной команды разработчиков, с почти 500 звёздами на GitHub
  • Чуть менее популярная, но лучше документированная teloxide
  • Наконец, молодая, но набирающая популярность Telebot от разработчика Lorenz

Scala

Scala крайне любим разработчиками систем для обработки больших массивов данных. И со свойственной им основательностью они создали Canoe (от Юрия Слинкина), прекрасную библиотеку для быстрой разработки сценариев чатбота.

Также рекомендуем обратить внимание на bot4s от Alfono Peterssen, набравшего 300 звёзд на GitHub.

Swift

Несмотря на свою ориентированность прежде всего на iOS-разработку, Swift-разработчики могут также порадовать нас своими библиотеками для чатботов.

  • К примеру, Telegram Bot SDK от разработчика Rapier, объединившего вокруг себя 10 единомышленников и получившего почти 250 звёзд на GitHub.
  • Или чуть менее популярный Telegrammer от Гиви Патаридзе, которому помогают ещё 4 контрибутора.

Знаете ли вы другие библиотеки, достойные упоминания? Напишите о них в комментариях!

О Bots Club

Мир чатботов Telegram богат, прекрасен, но крайне непрозрачен. Вы не доверяете ботам, а их разработчики не знают, как им завоевать ваше доверие.

В Bots Club мы создаём уютное место для общения и позволяем пользователям открыть для себя этот мир: задать вопросы разработчикам, поучаствовать в акциях, оставить отзыв и многое другое.

Bots Club — место, где люди находят себе ботов.

Подпишитесь на нас в социальных сетях и следите за новостями в нашем канале Telegram.

Пишем бота Telegram на PHP

Anton Bagaiev

Anton Bagaiev Aug 3, 2016

Russian (Pусский) translation by Sergey Zhuk (you can also view the original English article)

Если вы читаете это, то скорее всего понимаете, что боты для чатов является популярным трендом в 2016 году.

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

И наиболее популярным мессенджером с открытым API для ботов является Telegram.

Что мы собираемся делать

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

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

Создаем бота с помощью BotFather

Первым шагом при создании бота нужно зарегистрировать аккаунт для своего бота в Telegram. И для этого есть собственный бот, который называется BotFather. Просто добавьте его в свой контакт лист и вы сможете создавать и настраивать ботов Telegram, просто напечатав команду /newbot и следуя инструкциям от BotFather.

BotFather running TelegramBotFather running Telegram BotFather running Telegram

После регистрации вашего нового бота, вы получите сообщение с поздравлением и токен для авторизации. Мы скоро будем использовать этот токен для авторизации бота и отправки запросов к Bot API.

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

Соединяемся с Botan Analytics

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

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

Bot Analytics GraphBot Analytics Graph Bot Analytics Graph

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

Registering a bot in TelegramRegistering a bot in Telegram Registering a bot in Telegram

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

Создание и регистрация SSL Webhook

В Telegram есть два способа получения сообщений от пользователей: длинный опрос и webhooks.

A diagram of the Telegram APIA diagram of the Telegram API A diagram of the Telegram API

Обычно с долгим опросом, вам необходимо запрашивать новые сообщения из API, а с webhooks вы устанавливаете свой обратный вызов, который будет вызван API Telegram, если появится новое сообщение от пользователя. Я предпочитаю использовать webhooks потому что это больше похоже на взаимодействие в реальном времени, так что в этой статье мы так же будем использовать этот способ. Теперь нам нужно выбрать URL для обратного вызова нашего webhook, который будет вызван по HTTPS протоколу, и нужно установить его достаточно безопасным, и расположить свой скрипт в безопасной директории как сказано в руководстве:

Если у вас подтвержденный SSL сертификат, то все что вам нужно, это открыть ваш URL в браузере:

Иначе необходимо сгенерировать самоподписанный сертификат. Вот пример команды в Linux для этого:

И не забудьте открыть SSL порт:

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

В итоге вы получите следующий JSON ответ:

В нем сказано что webhook был установлен и мы готовы начать работу с ботом.

Создаем базу данных

Теперь нам нужно создать базу данных для наших таймеров. Что мы собираемся в ней хранить? Когда пользователь дает команду секундомеру начать отсчет, мы будем брать ID чата и сохранять строку с ID чата и текущим временем Unix. Следовательно мы сохраним строку с отметкой времени и ID чата.

Чтобы показывать текущее время секундомера, мы будем брать сохраненную метку времени и сравнивать ее с текущим временем. Разница и будет текущее время в секундах. Если пользователь останавливает секундомер, то мы просто удаляем строчку с данным ID чата.

Итак давайте создадим базу данных и таблицу для хранения информации для секундомера:

Создание класса Stopwatch

Наконец мы готовы начать писать код. Создадим класс для работы с базой данных в файле stopwatch.php и начнем с конструктора, который устанавливает два приватных свойства, где мы будем хранить ID чата и соединение с MySQL:

Когда пользователь запускает таймер, мы берем текущую временную метку Unix и сохраняем ее вместе с ID чата в методе start() :

Если таймер останавливается, то нам нужно удалить строку из базы данных:

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

Как видите, если в базе данных нет значения, то метод status() ничего не вернет, и мы обработаем значение null как остановленный таймер.

Выбор библиотеки PHP

Есть много PHP библиотек для работы с Telegram API, но на момент написания этой статьи лишь одна поддерживала одновременно Telegram Bot API и трекинг Botan. Она называется PHP Telegram Bot API.

Для установки библиотеки используем Composer:

Если вам не нужна аналитика, то попробуйте Bot API PHP SDK с интеграцией в Laravel или PHP Telegram Bot.

Запуск Webhook скрипта

И вот мы переходим к главной части — мы создаем скрипт для обработки обратных вызовов от Telegram Bot API. Создадим файл index.php и включим в него автозагрузчик Composer и новый класс Stopwatch. Откроем соединение MySQL, создадим нового клиента Telegram API и запустим его:

Создание команд

Теперь нужно настроить ответ бота на команду /start . Эта команда используется для старта всех ботов Telegram, и пользователям будет показано наше сообщение с приветствием.

Здесь в методе command() мы определим замыкание для получения команды. Замыкание получает ID текущего чата и отправляет сообщение с приветствием. Так же все зарегистрированные команды автоматически по имени команды.

Для запуска секундомера, мы определим команду /go:

Она создаст объект класса Stopwatch и запустит таймер, вызывав метод start() , который мы определили ранее.

Чтобы определить команду /status , делаем аналогично. Просто вызываем метод status() и возврашаем результат. Если метод вернул null, сообщаем пользователю, что таймер не был запущен.

А если пользователь останавливает таймер, то нам нужно сначала получить статус, показать результирующее время, а затем остановить таймер, используя метод stop() .

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

Добавление клавиатуры

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

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

Добавление бота в Store

Хорошо, теперь у нас есть работающий бот, и мы хотим показать его миру. Лучшим способом будет зарегистрировать бота в каталоге ботов. Сейчас у Telegram нет официального каталога, но есть несколько неофициальных, и самый большой из них — Storebot.me, в котором уже зарегистрированы тысячи ботов.

И в нем есть бот. для регистрации бота в каталоге ботов! Добавляем @storebot в свой контакт лист, пишем команду /add и следуем инструкциям. Вас попросят ввести имя бота, описание, выбрать одну из стандартных категорий, и подтвердить права на бота отправкой токена.

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

Заключение

Мы прошли длинный путь, от создания простого бота до регистрации его в store, сделав его доступным для реальных пользователей. Как вы могли убедиться, существует много инструментов, которые сделают вашу жизнь проще при создании собственного бота, и не нужно писать много кода для создания простого бота. Теперь вы готовы к созданию собственного бота!

Если у вас есть какие-либо вопросы, не стесняйтесь задавать их в комментариях под статьей.

Пишем бота для telegram на node.js

Как оказывается, написать бота для telegram, как два пальца об асфальт.

Легко в общем!

Если кому-то нужно разработать бота для telegram или для другой платформы, напишите мне в VK — сделаем. Также интегрируем с 1С и остальными требуемыми программными продуктами.

Для чего можно использовать бота:

  • Социальные боты в электронной коммерции. Боты-продажники;
  • Боты напоминалки;
  • Проводить обучение;
  • Использоваться для управления умным домом и многое другое, все на что способна фантазия!

Запилим бота — увеличим продажи!

Итак, чтобы написать бота нам потребуется:

Кувалда!

Вначале опишу какой простой бот получился в Telegram

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

И так описание бота, который будем разрабатывать:

  • умеет отправлять пользователю на запрос — классическую музыку рандомно
  • Две клавиатуры прикрутил к нему обычную и инлайновую
  • Отвечать на кое-какие сообщения

Начинаем писать бота в Telegram

В телеграм находим BotFather.

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

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

Начинаем разработку бота на Node.js

В консоли пишем:

для создания package.json и управления зависимостями.

Файл index.js получился такой самый простой:

Вставляем свой токен, который получили от BotFather и можно его разместить на бесплатном хостинге Heroku, и все сразу заработает, самый простой ботик!

Но лучше токен, поместить в переменную окружения, также можно на Heroku.

Полезные ссылки по ботам Телеграм

Документация по ботам telegram находится: https://core.telegram.org/bots/api

Также есть сайт и на русском с описанием: https://tlgrm.ru/docs/bots/api

Описываю какой код бота для Телеграм получился

Подключаем библиотеку для работы с файлами

Подключаем библиотеку node-telegram-bot-api, токен получаем из переменной окружения, и устанавливаем константу idAdmin — ему дополнительно сообщения потом будем слать.

Здесь у нас в bot.on(‘message’ — прилетают все сообщения.

const chatId = msg.chat.id; — Достаем id чата.

const first_name = msg.chat.first_name; — Достаем имя пользователя.

И также остальные текстовые фразы обрабатывает.

Этим кодом создается клавиатура инлайновая.

bot.forwardMessage(chatId, idAdmin, msg.message_id); — этим кодом все сообщения пересылаются админу.

Здесь обрабатывается команда /start

Этим кодом обрабатывается callback — от инлайновой клавиатуры.

Этим кодом отлавливается контакты, которые отправили боту, хотя их можно также отловить bot.on(‘message’ — сюда они тоже приходят.

Здесь создаем клавиатуру.

request_contact: true — обозначает запрос контактов, также можно запрашивать локацию.

Этот код отправляет классическую музыку, случайно выбранную из папки ./klasik/

Добавить комментарий

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