Manage Telegram Webhooks Using curl



This content originally appeared on DEV Community and was authored by Sh Raj

Managing Telegram Webhooks Using curl

Telegram bot webhooks allow you to receive updates and interact with users through a specified URL. This article covers how to set up, get, and delete webhooks for your Telegram bot using curl, along with explanations of all possible webhook-related operations.

Prerequisites

  • A Telegram bot token, which you can obtain from BotFather.
  • A publicly accessible server or a tool like ngrok to expose your local server.

1. Setting a Webhook

To set a webhook for your Telegram bot, use the setWebhook method. This method tells Telegram where to send updates for your bot.

Example Command

curl -F "url=https://yourdomain.com/uibot" https://api.telegram.org/bot<your-bot-token>/setWebhook

Replace <your-bot-token> with your bot’s token and https://yourdomain.com/uibot with your server’s URL.

Response

A successful response should look like this:

{
  "ok": true,
  "result": true,
  "description": "Webhook was set"
}

Detailed Command Example

For a bot token 123456789:ABCdefGHIjklMNO_pqrSTUvwxYZ and a URL https://58a1-223-176-63-126.ngrok-free.app/uibot, the command would be:

curl -F "url=https://58a1-223-176-63-126.ngrok-free.app/uibot" https://api.telegram.org/bot123456789:ABCdefGHIjklMNO_pqrSTUvwxYZ/setWebhook

2. Getting Webhook Information

To get information about the current webhook, use the getWebhookInfo method. This method provides details about the webhook, such as the URL, pending updates, and the last error encountered.

Example Command

curl https://api.telegram.org/bot<your-bot-token>/getWebhookInfo

Response

A successful response might look like this:

{
  "ok": true,
  "result": {
    "url": "https://yourdomain.com/uibot",
    "has_custom_certificate": false,
    "pending_update_count": 0,
    "last_error_date": 0,
    "last_error_message": "",
    "max_connections": 40,
    "allowed_updates": null
  }
}

3. Deleting a Webhook

To remove the webhook and switch to getUpdates mode, use the deleteWebhook method.

Example Command

curl https://api.telegram.org/bot<your-bot-token>/deleteWebhook

Response

A successful response should look like this:

{
  "ok": true,
  "result": true,
  "description": "Webhook was deleted"
}

4. Setting a Webhook with Additional Parameters

Telegram allows you to set additional parameters when setting a webhook, such as the maximum number of connections or specific types of updates.

Example Command

curl -F "url=https://yourdomain.com/uibot" \
     -F "max_connections=100" \
     -F "allowed_updates=message,edited_channel_post,callback_query" \
     https://api.telegram.org/bot<your-bot-token>/setWebhook

Parameters

  • url: Required. HTTPS URL to send updates to.
  • max_connections: Optional. Maximum allowed number of simultaneous HTTPS connections to the webhook (1-100). Defaults to 40.
  • allowed_updates: Optional. JSON-serialized list of update types you want your bot to receive.

Example with Parameters

curl -F "url=https://58a1-223-176-63-126.ngrok-free.app/uibot" \
     -F "max_connections=100" \
     -F "allowed_updates=message,edited_channel_post,callback_query" \
     https://api.telegram.org/bot123456789:ABCdefGHIjklMNO_pqrSTUvwxYZ/setWebhook

5. Getting Updates in getUpdates Mode

If you do not set a webhook, you can still get updates using the getUpdates method.

Example Command

curl https://api.telegram.org/bot<your-bot-token>/getUpdates

Response

A successful response should look like this:

{
  "ok": true,
  "result": [
    {
      "update_id": 123456789,
      "message": {
        "message_id": 1,
        "from": {
          "id": 123456789,
          "is_bot": false,
          "first_name": "John",
          "last_name": "Doe",
          "username": "johndoe",
          "language_code": "en"
        },
        "chat": {
          "id": 123456789,
          "first_name": "John",
          "last_name": "Doe",
          "username": "johndoe",
          "type": "private"
        },
        "date": 1610000000,
        "text": "Hello, world!"
      }
    }
  ]
}

Conclusion

Using curl, you can easily manage your Telegram bot’s webhooks, whether you’re setting, getting, or deleting them. This guide should help you get started with Telegram webhooks and ensure your bot can handle updates efficiently.

Summary of Commands

  • Set Webhook:
  curl -F "url=https://yourdomain.com/uibot" https://api.telegram.org/bot<your-bot-token>/setWebhook
  • Get Webhook Info:
  curl https://api.telegram.org/bot<your-bot-token>/getWebhookInfo
  • Delete Webhook:
  curl https://api.telegram.org/bot<your-bot-token>/deleteWebhook
  • Get Updates (Without Webhook):
  curl https://api.telegram.org/bot<your-bot-token>/getUpdates

Feel free to modify the example commands with your actual bot token and URL to suit your needs.


This content originally appeared on DEV Community and was authored by Sh Raj