How we should send query to Telegram bot API?

2020-05-19 06:39发布

问题:

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.

回答1:

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)

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());
}


回答2:

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