Sending message from Telegram bot to users
Shakhzhakhan Maxudbek

Shakhzhakhan Maxudbek @xinitd

About: System administrator, software engineer, technical blogger and open source contributor. Passionate about automation and cloud technologies.

Location:
Kazakhstan
Joined:
Nov 30, 2024

Sending message from Telegram bot to users

Publish Date: Nov 30 '24
1 0

Telegram provides API for sending messages to users from bot. You may send messages via HTTP POST method using any programming language. I use Python and Requests library.

The URL address for sending message (require HTTP POST method):

https://api.telegram.org/bot<token_from_botfather>/sendMessage
Enter fullscreen mode Exit fullscreen mode

Body of message:

{
    "chat_id": 123,
    "text": "Hello World!"
}
Enter fullscreen mode Exit fullscreen mode

If you want to markup your message with Markdown - add parse_mode parameter in body of JSON:

{
    "chat_id": 123,
    "text": "Hello World!",
    "parse_mode": "Markdown"
}
Enter fullscreen mode Exit fullscreen mode

Here steps needed for successfully complete the task:

  • Find BotFather in Telegram app
  • Create new bot and receive token
  • Send "/start" command to bot for start conversation. Otherwise, if you don't do this, you won't receive the messages
  • Write script and testing

Example of Python script:

import requests


def send_text_message(TOKEN, chat_id, message):
    url = 'https://api.telegram.org/bot{}/sendMessage'.format(TOKEN)
    data = {'chat_id': chat_id, 'text': message, 'parse_mode': 'Markdown'}
    response = requests.post(url, data=data)
    return response


send_text_message('token_from_botfather', recipient_id, 'Hello World!')
Enter fullscreen mode Exit fullscreen mode

As result we're see personal message from bot with greeting:

demo-telegram-bot-sending-message

Now we are trying to send the document. The URL for sending message, also receives HTTP POST method:

https://api.telegram.org/bot<token_from_botfather>/sendDocument
Enter fullscreen mode Exit fullscreen mode

Message body with required params:

{
    "chat_id": 123,
    "document": "/path/to/any/document.file",
}
Enter fullscreen mode Exit fullscreen mode

Let's try with Python code:

import requests


def send_document(TOKEN, chat_id, file):
    url = 'https://api.telegram.org/bot{}/sendDocument'.format(TOKEN)
    data = {'chat_id': chat_id}
    document = open(file, 'rb')
    files = {'document': document}
    response = requests.post(url, data=data, files=files)
    return response


send_document('token_from_botfather', recipient_id, '/path/to/any/document.file')
Enter fullscreen mode Exit fullscreen mode

Result on screenshot below display picture, attached as file:

demo-telegram-bot-sending-document

Comments 0 total

    Add comment