Validate an invitation before acting
Private links may expire, limit usage or require approval. Checking, joining, revoking and deleting are separate operations. A preview does not establish membership, and a public username is not a private invite token.
Comments live in a linked discussion context
A channel comment section corresponds to the thread of an automatically forwarded post in the linked discussion group. The channel post, discussion root and replies have distinct IDs. A group may require membership before commenting.
Preserve the thread root
Replies within a thread do not create unlimited nested threads. Retain both chat and root-message context; a bare message ID is insufficient across groups.
Implementation recommendations
Show the target and current invitation state before joining. Keep expired, revoked, approval-pending and inaccessible outcomes distinct. Do not silently rewrite an unusable invite into a guessed username.