Статьи

Быстро создать бот Telegram в Ruby

Снимок экрана 2016-03-16 07.17.12

Telegram может быть новым именем для вас, но он набирает популярность в последние несколько лет, в последних новостях Telegram сообщал о 100 000 000 активных пользователей в месяц. Так о чем это все?

Telegram — это облачное приложение для обмена сообщениями, которое хорошо известно благодаря множеству функций, и его безопасная передача сообщений является одной из ключевых функций. Он поддерживает различные платформы, такие как Windows, OSX, GNU / Linux, Android, iOS и Windows Phone. Стоит также упомянуть, что клиентская сторона Telegram имеет открытый исходный код, поэтому мы будем использовать любое другое приложение для обмена сообщениями, например Pidgin, для связи с Telegram.

Некоторые особенности Telegram:

  • шифрование
  • Супер группы (1000 участников или больше)
  • Передача файлов / фотографий
  • Открытая сторона клиента
  • Синхронизирует ваши сообщения на всех ваших устройствах
  • Ограничение общего размера файла 1,5 ГБ
  • Боты

О последнем поговорим конкретно. Telegram предлагает два API: API разработчика и API бота

Во-первых, нам нужно зарегистрировать аккаунт. Либо загрузите одного из клиентов, либо перейдите непосредственно к веб- версии Telegram. Оттуда вам будет предложено указать номер телефона, и Telegram отправит вам SMS с подтверждением.

Познакомьтесь с BotFather

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

Что мы можем сделать с ботами?

  • Делайте заметки в группах Telegram
  • Получайте обновления погоды
  • Играть в игры
  • Взаимодействовать с другими сервисами, такими как социальные сети, IRC и т. Д.

Мы можем делать много вещей с ботами. Первый шаг в создании нашего бота — поговорить с BotFather .

Введите в форме поиска BotFather .

search_botfather

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

bot_commands

Давайте создадим нашего бота с помощью команды /newbot Он запросит имя для нашего бота, поэтому мы будем называть нашего бота sitepbot .

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

BotFather поздравит нас и даст ссылку на нашего бота telegram.me/sitepoint_bot .

Мы можем добавить описание, а также добавить фотографию профиля для нашего бота. Команда /help

 /newbot - create a new bot
/token - generate authorization token
/revoke - revoke bot access token
/setname - change a bot's name
/setdescription - change bot description
/setabouttext - change bot about info
/setuserpic - change bot profile photo
/setinline - change inline settings
/setinlinefeedback - change inline feedback settings
/setcommands - change bot commands list
/setjoingroups - can your bot be added to groups?
/setprivacy - what messages does your bot see in groups?
/deletebot - delete a bot
/cancel - cancel the current operation

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

 /token

Возвращаемое значение будет выглядеть примерно так: 197372558:AAEtvechentOstoPmVyb1_aF2Dbe7k

После того, как мы создадим нашего бота и послушаем его, пришло время для Ruby. Есть несколько драгоценных камней для взаимодействия с API бота. Мы будем использовать telegram-bot-ruby .

Установка

Мы можем установить его прямо с вашего терминала:

 gem install telegram-bot-ruby

Или добавьте его в наш Gemfile :

 gem 'telegram-bot-ruby'

Если мы используем его с Gemfile, нам нужно ввести bundle install Это установит гем и необходимые ему зависимости.

Привет Пример SitePoint

Создайте файл с именем sitepointbot.rb , мы создадим содержимое этого файла здесь.

Во-первых, нам нужно импортировать наш драгоценный камень:

 require 'telegram/bot'

Далее нам нужно добавить наш токен, который мы сгенерировали ранее:

 token = 'YOUR API TOKEN'

Используя объект bot.api

 Telegram::Bot::Client.run(token) do |bot|
  bot.listen do |message|
    case message.text
    when '/sitepoint'
      bot.api.send_message(chat_id: message.chat.id, text: "Welcome to http://sitepoint.com")
    end
  end
end

send_messagechat_id chat_id Конечно, text Всякий раз, когда бот видит /sitepoint

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

Полный код

 require 'telegram/bot'

token = 'YOUR API TOKEN'
Telegram::Bot::Client.run(token) do |bot|
  bot.listen do |message|
    case message.text
    when '/sitepoint'
      bot.api.send_message(chat_id: message.chat.id, text: "Welcome to http://sitepoint.com")
    end
  end
end

Теперь пришло время запустить наш бот:

 ruby sitepointbot.rb

Мы должны искать бота. Он появится в области результатов поиска.

sitepointbot

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

hello_bot

Это эффект кнопки «Пуск» или команды /start Если вы хотите запустить бот внутри чата, вы также можете набрать

 start@SitepBot

что необходимо, если в чате больше одного бота.

Теперь давайте попробуем /sitepoint

sitepoint_command

Результатом является приветственное сообщение со ссылкой на сайт SitePoint.

Еще один пример

Давайте использовать метод sendLocation Этот метод сделает точку на карте. Мы будем использовать тот же объект bot.apisend_location

 bot.api.send_location(chat_id: message.chat.id, latitude: -37.807416, longitude: 144.985339)

Полный код

 require 'telegram/bot'

token = 'YOUR API KEY'
Telegram::Bot::Client.run(token) do |bot|
  bot.listen do |message|
    case message.text
    when '/start'
      bot.api.send_message(chat_id: message.chat.id, text: "I am the SitePoint bot, My commands are /sitepoint /map")
    when '/sitepoint'
      bot.api.send_message(chat_id: message.chat.id, text: "Welcome to http://sitepoint.com")
    when '/map'
      bot.api.send_location(chat_id: message.chat.id, latitude: -37.807416, longitude: 144.985339)
   end
  end
end

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

sitepoint_map

Вывод

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