Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to send request to Telegram bot API?

After creating a telegram bot and gain bot token, I want to send a request to the bot API.

This link says we must send the HTTP request like this: https://api.telegram.org/bot<token>/METHOD_NAME and brings example for easiest method "getme" which has not any input parameters.

Imagine I want to send some messages. I should use the sendMessage method which has two Required input parameters: chat_ID and text.

Now my Questions begins:

  1. How can I write this sendMessage method in above request format with its parameters? I tried sendMessage(param1,param2) and received method not found message.

  2. What is chat_id? if I want to send a message to the contact, how can I know his chat_id?

I searched a lot on the internet, there are plenty of projects on GitHub especially for this purpose, and honestly none of them makes any sense. for god's sake someone please help me. I am loosing way.

Regards.

like image 428
Ali Crash Avatar asked Jul 03 '15 02:07

Ali Crash


People also ask

How can I send message to Telegram API?

Getting StartedOpen the telegram app and search for @BotFather. Click on the start button or send “/start”. Then send “/newbot” message to set up a name and a username. After setting name and username BotFather will give you an API token which is your bot token.

Can Telegram BOT send message to other bot?

Bots can't send messages to other bots.


2 Answers

You just send a POST request to:

https://api.telegram.org/bot{token}/{method}

For example:

https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/sendMessage

In the body of the request, you URL encode the parameters:

chat_id=12345&text=hello%20friend

For example, in Python using the requests module:

import requests
    
response = requests.post(
        url='https://api.telegram.org/bot{0}/{1}'.format(token, method),
        data={'chat_id': 12345, 'text': 'hello friend'}
    ).json()

When a user chats with your bot, you get a Message object that has a chat id (and a user id, which you can substitute for a chat id). There's no way to initiate a chat with a user unless you already know their user id, so you have to wait for a user to talk to you. You can simplify that by using deep linking and having the user click on a link that sends a pre-made message when they hit the Start button.

Edit: for those struggling to find chat_id, here's a way:

1.- Create a bot: on Telegram's search look for @BotFather. Click start, write /newbot, give it a name and a username. You should get a token to access the HTTP API. Save this token.

2.- Find your bot on Telegram with its username. Write something to it e.g. 'test'. This will come in handy later.

3.- Print chat_id. Before running this function, make sure that you have at least written one message to your bot on Telegram (step 2)

Javascript code:

var token = "123456:kioASDdjicOljd_ijsdf"; // Fill this in with your token
var telegramUrl = "https://api.telegram.org/bot" + token;

function getChat_id(){
    var res = UrlFetchApp.fetch(telegramUrl+"/getUpdates").getContentText();
    var res = JSON.parse(res);
    Logger.log(res.result[0].message.chat.id.toString());
}
like image 85
Blender Avatar answered Sep 26 '22 11:09

Blender


Try this

https://api.telegram.org/bot{token}/sendMessage?chat_id=<chat_id>&text=<Enter your text here>

Example

https://api.telegram.org/bot449123456:AAHSAnSGDm8PW2Z-1ZiwdVDmgv7sM3NMTxg/sendMessage?chat_id=311911234&text=Hi+Everyone
like image 37
Kunwar Shekhar Singh Avatar answered Sep 23 '22 11:09

Kunwar Shekhar Singh