No commit activity in last 3 years
No release in over 3 years
This library tries to help working with messages from the Telegram chatbot API. Messages are parsed and useful methods provide all needed information about the message.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

~> 2.0
 Project Readme

ChatbotHelper::Telegram Gem Version Build Status Code Climate Test Coverage

ChatbotHelper::Telegram helps you build awesome Telegram chatbots without bothering much about the documentation, the message structure or other details. It is a wrapper around the Telegram Bot API.

Installation

Add this line to your application's Gemfile:

gem 'chatbot_helper-telegram'

And then execute:

$ bundle

Or install it yourself as:

$ gem install chatbot_helper-telegram

Then require it and you are good to go:

require 'chatbot_helper/telegram'

Usage

As of now, you are responsible for getting messages or other objects from the Telegram Bot API with your favorite HTTP library. We consider adding all Bot API methods to this library in one of the next versions. Please open an issue if you think that's a good idea.

An example with typhoeus:

require 'typhoeus'
require 'chatbot_helper/telegram'
require 'json'

# Your environment must have set the `TELEGRAM_TOKEN` key to your telegram api
# token. See https://core.telegram.org/bots#3-how-do-i-create-a-bot for more
# information.
telegram_token = ENV['TELEGRAM_TOKEN']
url = "https://api.telegram.org/bot#{telegram_token}/sendMessage"

# We create a message
message = {
  chat_id: 123456,
  text: "This is an example message sent by my telegram bot"
}

request = Typhoeus::Request.new(
  url,
  method: :post,
  body: JSON.generate(message),
  headers: { 'Content-Type' => 'application/json' }
)
request.run

body = request.response.body

# We create a Message object from the response body
message = ChatbotHelper::Telegram::Message.new(string: body)

# Now you can access all properties of the message object
puts message.date
puts message.from.first_name

# Yay!

The real power of this library is the update and command parsing.
Say, for example, you have set up webhooks and you want to parse the updates retrieved from these webhook requests. This is a sinatra example but you can easily convert it to Rails code.

require 'sinatra'
require 'chatbot_helper/telegram'
require 'json'

post "/#{ENV['TELEGRAM_TOKEN']}/?" do
  request.body.rewind
  payload_body = request.body.read

  # Create an instance of Update from the request body...
  update = ChatbotHelper::Telegram::Update.new(string: payload_body)

  # Return a message based on the given command
  message = {}
  if update.message
    # Access the chat id through the given message
    message[:chat_id] = update.message.chat.id

    case update.message.text
    when '/start'
      text = "Hello and welcome to my awesome bot #{update.chat.first_name}!"
      message[:text] = text
    when '/saysomething'
      text = "Why should I talk with you, #{update.chat.first_name}? Give me "\
             "a reason!"
      message[:text] = text
    end

    # Return the message which should be sent
    return halt 200, { 'Content-Type' => 'application/json' }, JSON.generate(message)
  end

  # Fallback, return nothing
  return halt 200, { 'Content-Type' => 'application/json' }, '{}'
end

You can work with nearly all Telegram Bot API available types.
One exception are the Inline mode types which has currently just partial support and will be fully available in the next version.

If you need help or have a feature request feel free and open an issue.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/Ybrin/chatbot_helper-telegram.

License

The gem is available as open source under the terms of the MIT License.