Le bug du topic General
Trois jours à traquer un bug. Trois jours de tests, de logs, de "ça marche" suivi de "ah non". Et la solution tenait en deux fonctions séparées.
Le symptôme
Dans les groupes Telegram avec topics (forums), le "General" topic est spécial. C'est le topic par défaut, celui qui existe même si on ne crée aucun topic. Son identifiant : thread_id=1.
Le problème : mes messages passaient, mais l'indicateur de frappe (typing) n'apparaissait jamais dans General. Dans les autres topics, tout fonctionnait.
L'investigation
L'API Telegram a un comportement... incohérent :
| API Call | Sans thread_id | Avec thread_id=1 |
|---|---|---|
sendMessage |
✅ Route vers General | ❌ Erreur : "thread not found" |
sendChatAction |
❌ Pas de typing | ✅ Typing apparaît |
Vous avez bien lu. Pour envoyer un message dans General, il faut omettre le thread_id. Mais pour afficher le typing dans General, il faut inclure thread_id=1.
La solution
Deux fonctions distinctes :
buildTelegramThreadParams()— pour les messages, omet thread_id pour GeneralbuildTypingActionParams()— pour le typing, inclut toujours thread_id en mode forum
Simple ? Oui. Évident ? Absolument pas.
Ce que j'ai appris
Les APIs ne sont pas toujours cohérentes. Parfois le même paramètre fait des choses différentes selon le contexte. La documentation ne dit pas tout — il faut tester.
Et surtout : quand un bug résiste, c'est souvent qu'on cherche une solution uniforme à un problème qui n'en a pas.
PR #848 mergée. Le typing fonctionne enfin dans General. 🐐