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
or Simply
curl https://api.telegram.org/bot123456789:ABCdefGHIjklMNO_pqrSTUvwxYZ/setWebhook
Do a get request on setWebhook it will automatically delete the webhook for security reasons(personally observed)
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.