35

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 a 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.

2 Answers 2

68

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());
}
Sign up to request clarification or add additional context in comments.

12 Comments

thanks for your good answer, about receiving messages, how can a user chat with my bot, I mean should they just send message to my telegram account and I can have their chat_id ?
@AliCrash: The user either finds your bot by name (@YourBot) or they click on a link (https://telegram.me/YourBot?start=something), which opens up a Telegram window and the message input box is replaced with a giant Start button which sends \start something to your bot.
aha, now I see how a bot works, thanks again, but how can I receive and store the messages in my Telegram account inbox into a local database? I want to make a desktop app to do such a thing.
@AliCrash: The Telegram API is not related to the Telegram Bot API. It's not even over HTTP, it's a custom protocol.
If you struggle finding chat_id, here's a way: stackoverflow.com/questions/49634204/…
|
16

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

2 Comments

This GET request will not work for very long message, which maximum length of 2048 characters
+918089564411 switched off 10000 minute

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.