Registration
(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 https://telegram.me/botfather
(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".
/newbot
(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' end
(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.
HTTParty.get("https://api.telegram.org/botXXXXXXXX:YYYYYYYYYYYY/setWebhook?url=https://myurl/botXXXXXXXX")
(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.
https://api.telegram.org/bot<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}" else response_text = "Sorry! I could not understand this command." end HTTParty.post('https://api.telegram.org/botXXXXXXXX:YYYYYYYYYY/sendMessage', :headers => { 'Content-Type' => 'application/json' }, :body => { :chat_id => chat_id, :text => response_text }.to_json ) render status: :ok end end
(6) Deploy and run your App.
Test It!
(1) To access your Bot, go to https://telegram.me/your_bot or https://t.me/your_bot
(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.