DEV Community

Shakhzhakhan Maxudbek
Shakhzhakhan Maxudbek

Posted on • Edited on • Originally published at args.tech

Sending message from Telegram bot to users

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

URL address for sending message:

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

Body of message:

{
    "chat_id": chat_id,
    "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": chat_id,
    "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

Result:

Image description

Now we are trying to send the document:

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:

Image description

Top comments (0)