(1) You need to download and install a Telegram client. E.g. Android or iOS.

(2) Register an account on Telegram.

(3) Now, Telegram has this BotFather service where you can create and register a bot with Telegram. BotFather is located at

(4) While in the conversation with BotFather, send the following command to start creating a new bot. Remember that the name of your bot has to end with "bot".


(5) Once a bot is created, BotFather will send a congratulation message that contains an access token to use the HTTP API. Copy this token as you will need it later.

The Backend

(1) Next, you will need a backend server to process the incoming messages from your Bot. Telegram has 2 ways of receiving messages - Polling or Webhook. In this example, we will be using Webhook method.

(2) We start by creating a new Rails App that handles just 1 route. Let's use the bot ID (XXXXXXXX) as the path.

Rails.application.routes.draw do
  post 'botXXXXXXXX', :to => 'telegram_requests#create'

(3) We will inform Telegram that we have a Webhook. To do this, we create an initializer and use it to call the setWebhook API.


(4) Note that all telegram Bot APIs have the following format. They are quite flexible, support both GET/POST and the parameters could be sent via query string, form body or JSON.<YourToken>/<MethodName>

(5) We also need a controller to parse the message and send a response when we receive a message from the Webhook.

class TelegramRequestsController < ApplicationController
  def create

    chat_id = params[:message][:chat][:id]
    user_first_name = params[:message][:from][:first_name]
    message_text = params[:message][:text]

    case message_text
      when '/start'
        response_text = "Hello #{user_first_name}!"
      when '/stop'
        response_text = "Bye!"
      when '4'
        number = SecureRandom.random_number(9999) + 1
        response_text = "#{'%04d' % number}"
        response_text = "Sorry! I could not understand this command."
      :headers => {
        'Content-Type' => 'application/json'
      :body => {
        :chat_id => chat_id,
        :text => response_text
    render status: :ok


(6) Deploy and run your App.

Test It!

(1) To access your Bot, go to or 

(2) Click the start button to start the conversation.

(3) Type a supported command and check the response.

That's all. You got a simple bot running.