Ne propose Telegram aux membres que si le canal fonctionne - #32
Merged
Conversation
La page « Mon compte » demandait un Chat ID Telegram à tout le monde, y compris quand aucun bot n'était configuré : un membre pouvait renseigner son identifiant et attendre indéfiniment des notifications qui ne partaient pas. C'est le cas sur une installation neuve, où Telegram est désactivé par défaut. Le champ n'apparaît désormais que si un administrateur a coché « Activer Telegram » et enregistré un token que Telegram reconnaît. L'API applique la même règle : enregistrer un Chat ID est refusé tant que le canal n'est pas prêt, l'effacer reste toujours possible. « Reconnaît » est vérifié, pas supposé : à l'enregistrement des réglages, le token est présenté à `getMe`. Un refus de Telegram bloque la sauvegarde en citant sa raison, et laisse la possibilité de décocher Telegram pour enregistrer le reste. Une panne réseau ne bloque que si l'administrateur est justement en train de changer le token ou d'ouvrir le canal ; sinon les autres réglages restent modifiables. Le nom du bot renvoyé par Telegram est conservé et affiché aux membres, qui savent enfin à qui écrire au lieu de chercher « le bot de l'association ». Vérifié sur une instance réelle, cinq situations : canal fermé (champ absent, API refuse), token refusé par Telegram (sauvegarde rejetée avec sa raison), token enregistré mais Telegram décoché (champ absent), canal ouvert avec un token reconnu (champ présent, nom du bot affiché, Chat ID accepté et vérification horodatée en base), puis canal refermé — où un changement de nom ne doit pas effacer le Chat ID conservé. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014SfQYBU4xXTeSEHKhHQXdD
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
La page Mon compte demandait un Chat ID Telegram à tout le monde, y compris quand aucun bot n'était configuré. Un membre pouvait renseigner son identifiant et attendre indéfiniment des notifications qui ne partaient pas — c'est l'état d'une installation neuve, où Telegram est désactivé par défaut.
Ce qui change
Le champ n'apparaît que si un administrateur a coché « Activer Telegram » et enregistré un token que Telegram reconnaît. L'API applique la même règle, pour que la fermeture ne soit pas seulement visuelle : enregistrer un Chat ID est refusé tant que le canal n'est pas prêt, l'effacer reste toujours possible.
« Reconnaît » est vérifié, pas supposé. À l'enregistrement des réglages, le token est présenté à
getMe:Le nom du bot est affiché aux membres — « ouvrez une conversation avec @monbot » au lieu de « le bot de l'association ».
Deux colonnes s'ajoutent à
association_settings:telegram_bot_usernameettelegram_token_verified_at. Migration additive.Vérifications
Sur une instance réelle — PostgreSQL, application construite et servie — cinq situations :
400avec la raison400: « Token refusé par Telegram (Unauthorized) »La forme de réponse utilisée pour le refus est celle de l'API réelle, relevée sur
api.telegram.org:{"ok":false,"error_code":401,"description":"Unauthorized"}.tsc --noEmit,npm run lintetnext buildpassent.Generated by Claude Code