Repository is archived
No commit activity in last 3 years
No release in over 3 years
This project gives you a nice DSL-like interface for the Telegram Bot API
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

~> 1.6.4
 Project Readme

telegram-webhooks

Build Status Code Climate Test Coverage

This project gives you a nice DSL-like interface for the Telegram Bot API using webhooks.

What is the difference between the Webhooks API and polling?

I recommend you reading Telegrams very good Bot API documentation for details.

But tl;dr:
When using the polling method, you have to build an application that regularly asks the Telegram if there are any new messages. This approach works very well if you have a low traffic bot and/or are behind a firewall.

When using Webhooks, you register a callback-url at the Telegram API, which is called when new data is available. But, you need an publicly accessible URL for that, so you can't run that behind a firewall, but you can run it easily using a cloud service like Heroku.

Example

This is a basic example setting up an echo bot. The most simple creature in the Bot Universe.

For a more complex example project see the TumblrFeedBot

The easiest way to try this is using a cloud service like Heroku.

0. Create a Telegram Bot and get a token

You can create a new Telegram Bot by talking to @BotFather. More on this you will find in the Telegram Documentation.

1. You need this gem! Believe me, you will.

Install it by hand, like:

gem install telegram-webhooks

Or let bundler do it for you:

gem 'telegram-webhooks'

2. Echo Bots code:

# config.ru

require 'telegram'

Telegram.token = ENV['TELEGRAM_TOKEN']

class App < Bot
  on :echo do |update|
    update.message.chat.reply(update.message.text)
  end
end

run App.new

3. Gentlemen, start your engines!

3a When using Heroku

$ heroku config:set TELEGRAM_TOKEN=... 
$ git push heroku master

3b When running locally

$ TELEGRAM_TOKEN="..." bundle exec rackup

4. Finally, activate Telegrams webhooks for your App.

In order to activate the Webhooks API you have to send a single POST request against their api specify a url where you want to receive new updates.

Telegram recommends to use your Telegram Token as a part of your URL to avoid other people tampering with your bot.

curl --data "url=https://your.bots.url/YOUR_TELEGRAM_TOKEN_HERE" https://api.telegram.org/botYOUR_TELEGRAM_TOKEN_HERE/setWebhook