Recibir updates
getUpdateslong polling; pasa offset = último update_id + 1setWebhookurl, secret_token, allowed_updates, drop_pending_updatesgetWebhookInfolast_error_message, pending_update_countdeleteWebhooknecesario antes de volver a getUpdates- La cabecera X-Telegram-Bot-Api-Secret-Token lleva tu secret_token
curl -s "https://api.telegram.org/bot$TOKEN/setWebhook" \
-d url=https://example.com/tg \
-d secret_token=$SECRETEnviar
sendMessagechat_id, text, parse_mode, reply_markup, link_preview_optionssendPhoto/sendDocument/sendMediaGroupeditMessageText,deleteMessagesendChatActionindicador de escritura para respuestas lentasanswerCallbackQueryresponde siempre a las pulsacionessetMyCommandsel menú de comandos; scope y language_code
Tipos de update
message,edited_messagecallback_querybotón inline pulsadoinline_query@tubot consulta en cualquier chatmy_chat_memberbot añadido, eliminado o bloqueadochat_memberrequiere allowed_updates explícitopre_checkout_querypagos; responde en 10 segundos
Formato
- HTML: <b>, <i>, <u>, <s>, <code>, <pre>, <a href>, <tg-spoiler>, <blockquote>; escapa &, < y >
- MarkdownV2: *negrita* _cursiva_ __subrayado__ ~tachado~ ||spoiler|| `código`
- En MarkdownV2 escapa con barra invertida: _ * [ ] ( ) ~ ` > # + - = | { } . !
Convierte entre formatos con el conversor de Markdown. Abrir
Teclados y enlaces
inline_keyboard: url, callback_data (1-64 bytes), web_app, switch_inline_querykeyboard+ resize_keyboard, one_time_keyboard, is_persistentremove_keyboard,force_replyt.me/<bot>?start=<param>llega como "/start param"t.me/<bot>?startgroup=<param>añadir a un grupo
Errores comunes
400 Bad Request: can't parse entitiesMarkdownV2 sin escapar o HTML roto400 message is too longmás de 4096 caracteres403 bot was blocked by the userdeja de escribir a ese chat409 Conflictdos consumidores de getUpdates, o hay webhook429 Too Many Requestsespera parameters.retry_after segundos
Fuente: core.telegram.org/bots/api.
Última revisión con la documentación oficial: