Skip to content

feat(telegram): treat a reply to the bot as a mention - #834

Open
grootbro wants to merge 2 commits into
vercel:mainfrom
grootbro:feat/telegram-mention-on-reply
Open

feat(telegram): treat a reply to the bot as a mention#834
grootbro wants to merge 2 commits into
vercel:mainfrom
grootbro:feat/telegram-mention-on-reply

Conversation

@grootbro

Copy link
Copy Markdown

Based on #833.

In a group a bot only sees messages that address it, and people address a bot by replying to it as often as by typing its handle. The adapter reported isMention for the handle but not for the reply, so a bot went quiet the moment the conversation moved to replies.

mentionOnReply turns that on. Off by default — the flag changes which messages report isMention, and a bot that deliberately answers only explicit mentions should keep the stricter behaviour. It also reads TELEGRAM_MENTION_ON_REPLY, so a deployment can set it without code, and the key is declared in the adapters catalog.

The check runs before the empty-text guard, so a reply carrying only a photo or a document counts too.

Thread.reply() threw NotImplementedError on Telegram because the adapter
had no reply method, even though the Bot API threads an answer to its
question with reply_parameters.

postMessage takes an optional reply target and passes it to every send
path — text, rich messages, documents, attachments and both media group
variants — and reply() delegates to it, matching how the WhatsApp adapter
implements the same contract. The target is decoded through the existing
decodeCompositeMessageId, so a target from another chat is rejected the
same way an edit would be.

allow_sending_without_reply is set so a deleted target degrades to an
unthreaded message instead of failing the send.

Signed-off-by: grootbro <vadim@ravefox.dev>
In a group a Telegram bot only sees messages that address it, and users
address a bot by replying to it as often as by typing its handle. The
adapter reported isMention for the handle but not for the reply, so a bot
went quiet the moment the conversation moved to replies.

mentionOnReply turns that on. It is off by default: the flag changes which
messages report isMention, and a bot that deliberately answers only
explicit mentions should keep the stricter behaviour. It also reads from
TELEGRAM_MENTION_ON_REPLY so a deployment can set it without code.

The check runs before the empty-text guard, so a reply carrying only a
photo or a document counts too.

Signed-off-by: grootbro <vadim@ravefox.dev>
@grootbro
grootbro requested a review from a team as a code owner August 17, 2026 21:36
@vercel

vercel Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

@grootbro is attempting to deploy a commit to the Vercel Team on Vercel.

A member of the Team first needs to authorize it.

Comment on lines +2476 to +2482
const urlReplyParameters = this.buildReplyParameters(
replyToMessageId,
thread.chatId
);
if (urlReplyParameters) {
payload.reply_parameters = urlReplyParameters;
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
const urlReplyParameters = this.buildReplyParameters(
replyToMessageId,
thread.chatId
);
if (urlReplyParameters) {
payload.reply_parameters = urlReplyParameters;
}
}
const urlReplyParameters = this.buildReplyParameters(
replyToMessageId,
thread.chatId
);
if (urlReplyParameters) {
payload.reply_parameters = urlReplyParameters;

URL-attachment branch of sendAttachment only sets reply_parameters when replyMarkup is present, dropping reply threading for plain URL attachments.

Fix on Vercel

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant