Skip to content

GramIO API Reference / @gramio/contexts/dist / CallbackQueryContext

Class: CallbackQueryContext<Bot> ​

Defined in: contexts/index.d.ts:6022

Called when callback_query event occurs

Extends ​

Type Parameters ​

Type Parameter
Bot extends BotLike

Constructors ​

Constructor ​

new CallbackQueryContext<Bot>(options): CallbackQueryContext<Bot>

Defined in: contexts/index.d.ts:6025

Parameters ​

ParameterType
optionsCallbackQueryContextOptions<Bot>

Returns ​

CallbackQueryContext<Bot>

Overrides ​

Context.constructor


Constructor ​

new CallbackQueryContext(...args): CallbackQueryContext

Defined in: contexts/index.d.ts:6022

Parameters ​

ParameterType
...argsany[]

Returns ​

CallbackQueryContext

Overrides ​

Context<Bot>.constructor

Properties ​

PropertyModifierTypeDescriptionInherited fromDefined in
botpublicBot-Context.botcontexts/index.d.ts:5240
payloadpublicTelegramCallbackQueryThe raw data that is used for this ContextCallbackQuery.payloadcontexts/index.d.ts:6024
update?publicTelegramUpdate-Context.updatecontexts/index.d.ts:5242
updateId?publicnumber-Context.updateIdcontexts/index.d.ts:5241
updateTypeprotectedUpdateName-Context.updateTypecontexts/index.d.ts:5243

Accessors ​

[toStringTag] ​

Get Signature ​

get [toStringTag](): string

Defined in: contexts/index.d.ts:5246

MDN

Returns ​

string

Inherited from ​

Context.[toStringTag]


businessConnectionId ​

Get Signature ​

get businessConnectionId(): string

Defined in: contexts/index.d.ts:5455

Returns ​

string

Inherited from ​

SendMixin.businessConnectionId


chatId ​

Get Signature ​

get chatId(): number

Defined in: contexts/index.d.ts:6037

Chat identifier of the message with the callback button that originated the query.

Returns ​

number

Inherited from ​

SendMixin.chatId


chatInstance ​

Get Signature ​

get chatInstance(): string

Defined in: contexts/index.d.ts:3668

Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games.

Returns ​

string

Inherited from ​

CallbackQuery.chatInstance


data ​

Get Signature ​

get data(): string

Defined in: contexts/index.d.ts:3673

Data associated with the callback button. Be aware that a bad client can send arbitrary data in this field.

Returns ​

string

Set Signature ​

set data(data): void

Defined in: contexts/index.d.ts:3674

Parameters ​
ParameterType
datastring
Returns ​

void

Inherited from ​

CallbackQuery.data


from ​

Get Signature ​

get from(): User

Defined in: contexts/index.d.ts:3652

Sender

Returns ​

User

Inherited from ​

CallbackQuery.from


gameShortName ​

Get Signature ​

get gameShortName(): string

Defined in: contexts/index.d.ts:3679

Short name of a Game to be returned, serves as the unique identifier for the game

Returns ​

string

Inherited from ​

CallbackQuery.gameShortName


id ​

Get Signature ​

get id(): string

Defined in: contexts/index.d.ts:3650

Unique identifier for this query

Returns ​

string

Inherited from ​

CallbackQuery.id


inlineMessageId ​

Get Signature ​

get inlineMessageId(): string

Defined in: contexts/index.d.ts:3663

Identifier of the message sent via the bot in inline mode, that originated the query.

Returns ​

string

Inherited from ​

CallbackQuery.inlineMessageId


message ​

Get Signature ​

get message(): MessageContext<Bot>

Defined in: contexts/index.d.ts:6033

Message with the callback button that originated the query. Note that message content and message date will not be available if the message is too old

Returns ​

MessageContext<Bot>

Inherited from ​

CallbackQuery.message


queryPayload ​

Get Signature ​

get queryPayload(): unknown

Defined in: contexts/index.d.ts:6058

Data associated with the callback button. Be aware that a bad client can send arbitrary data in this field.

Returns ​

unknown


senderId ​

Get Signature ​

get senderId(): number

Defined in: contexts/index.d.ts:3654

Sender ID

Returns ​

number

Inherited from ​

CallbackQuery.senderId


threadId ​

Get Signature ​

get threadId(): number

Defined in: contexts/index.d.ts:6044

Identifier of the thread the originating message belongs to, or undefined if it isn't in one. Exposed — together with CallbackQueryContext.isTopicMessage — so SendMixin auto-forwards message_thread_id on send/reply from inside a callback handler, keeping replies in the same thread as the tapped button.

Returns ​

number

Inherited from ​

SendMixin.threadId

Methods ​

answer() ​

answer(params?): Promise<true>

Defined in: contexts/index.d.ts:6070

Answers to current callback query. An alias for answerCallbackQuery

Parameters ​

ParameterType
params?string | Partial<AnswerCallbackQueryParams>

Returns ​

Promise<true>


answerCallbackQuery() ​

answerCallbackQuery(params?): Promise<true>

Defined in: contexts/index.d.ts:6066

Answers to current callback query

Parameters ​

ParameterType
params?string | Partial<AnswerCallbackQueryParams>

Returns ​

Promise<true>


answerWebAppQuery() ​

answerWebAppQuery(params): Promise<TelegramSentWebAppMessage>

Defined in: contexts/index.d.ts:6068

Sets the result of an interaction with a Web App and sends a corresponding message

Parameters ​

ParameterType
paramsAnswerWebAppQueryParams

Returns ​

Promise<TelegramSentWebAppMessage>


clone() ​

clone(options?): CallbackQueryContext

Defined in: contexts/index.d.ts:5935

Parameters ​

ParameterType
options?CallbackQueryContextOptions

Returns ​

CallbackQueryContext

Inherited from ​

CloneMixin.clone


editCaption() ​

editCaption(caption, params?): Promise<true | TelegramMessage> | Promise<true | MessageContext<Bot>>

Defined in: contexts/index.d.ts:6074

Edits a callback query messages caption

Parameters ​

ParameterType
captionNonNullable<string | { toString: string; }>
params?Partial<EditMessageCaptionParams>

Returns ​

Promise<true | TelegramMessage> | Promise<true | MessageContext<Bot>>


editLiveLocation() ​

editLiveLocation(params): Promise<true | TelegramMessage> | Promise<true | MessageContext<Bot>>

Defined in: contexts/index.d.ts:6078

Edits a callback query messages live location

Parameters ​

ParameterType
paramsEditMessageLiveLocationParams

Returns ​

Promise<true | TelegramMessage> | Promise<true | MessageContext<Bot>>


editMedia() ​

editMedia(media, params?): Promise<true | TelegramMessage> | Promise<true | MessageContext<Bot>>

Defined in: contexts/index.d.ts:6076

Edits a callback query messages media

Parameters ​

ParameterType
mediaTelegramInputMedia
params?Partial<EditMessageMediaParams>

Returns ​

Promise<true | TelegramMessage> | Promise<true | MessageContext<Bot>>


editReplyMarkup() ​

editReplyMarkup(replyMarkup, params?): Promise<true | TelegramMessage> | Promise<true | MessageContext<Bot>>

Defined in: contexts/index.d.ts:6082

Edits a callback query messages reply markup

Parameters ​

ParameterType
replyMarkupTelegramInlineKeyboardMarkup | { toJSON: TelegramInlineKeyboardMarkup; }
params?Partial<EditMessageReplyMarkupParams>

Returns ​

Promise<true | TelegramMessage> | Promise<true | MessageContext<Bot>>


editText() ​

editText(text, params?): Promise<true | TelegramMessage> | Promise<true | MessageContext<Bot>>

Defined in: contexts/index.d.ts:6072

Edits a callback query messages text

Parameters ​

ParameterType
textstring | { toString: string; } | RichStringLike
params?Partial<EditMessageTextParams>

Returns ​

Promise<true | TelegramMessage> | Promise<true | MessageContext<Bot>>


getChatBoosts() ​

getChatBoosts(userId): Promise<TelegramUserChatBoosts>

Defined in: contexts/index.d.ts:5586

Returns chat boosts by the user

Parameters ​

ParameterType
userIdnumber

Returns ​

Promise<TelegramUserChatBoosts>

Inherited from ​

SendMixin.getChatBoosts


hasData() ​

hasData(): this is Require<CallbackQueryContext<Bot>, "data">

Defined in: contexts/index.d.ts:6062

Checks if the query has data property

Returns ​

this is Require<CallbackQueryContext<Bot>, "data">


hasGameShortName() ​

hasGameShortName(): this is Require<CallbackQueryContext<Bot>, "gameShortName">

Defined in: contexts/index.d.ts:6064

Checks if the query has gameShortName property

Returns ​

this is Require<CallbackQueryContext<Bot>, "gameShortName">


hasInlineMessageId() ​

hasInlineMessageId(): this is Require<CallbackQueryContext<Bot>, "inlineMessageId">

Defined in: contexts/index.d.ts:6060

Checks if the query has inlineMessageId property

Returns ​

this is Require<CallbackQueryContext<Bot>, "inlineMessageId">


hasMessage() ​

hasMessage(): this is Require<CallbackQueryContext<Bot>, "message">

Defined in: contexts/index.d.ts:6027

Checks if the query has message property

Returns ​

this is Require<CallbackQueryContext<Bot>, "message">


hasQueryPayload() ​

hasQueryPayload(): this is Require<CallbackQueryContext<Bot>, "queryPayload">

Defined in: contexts/index.d.ts:6053

Checks if the query has queryPayload property

Returns ​

this is Require<CallbackQueryContext<Bot>, "queryPayload">


is() ​

is<T>(rawTypes): this is InstanceType<ContextsMapping<Bot>[T]> & GetDerives<Bot, T> & (IsAny<Bot["__Derives"]> extends true ? {} : Bot["__Derives"] extends {} ? Bot["__Derives"]["global"] & Bot["__Derives"][T] : {})

Defined in: contexts/index.d.ts:5249

Type Parameters ​

Type Parameter
T extends UpdateName

Parameters ​

ParameterType
rawTypesMaybeArray<SoftString<T>>

Returns ​

this is InstanceType<ContextsMapping<Bot>[T]> & GetDerives<Bot, T> & (IsAny<Bot["__Derives"]> extends true ? {} : Bot["__Derives"] extends {} ? Bot["__Derives"]["global"] & Bot["__Derives"][T] : {})

Inherited from ​

Context.is


isTopicMessage() ​

isTopicMessage(): boolean

Defined in: contexts/index.d.ts:6051

Whether the originating message belongs to a forum topic or a private-chat thread. Mirrors MessageContext.isTopicMessage so the SendMixin thread-forwarding guard behaves identically in callback handlers (Bot API 10.1 sets is_topic_message for private-chat Threaded Mode too, so this covers it without dropping the guard).

Returns ​

boolean


send() ​

send(text, params?): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5469

Sends message to current chat.

Pass a branded @gramio/format rich value (Markdown RichString or a native structured block/message from @gramio/format/rich) and it is sent via sendRichMessage instead — bot.api.* stays 1:1; the method is chosen here.

Parameters ​

ParameterType
textstring | { toString: string; } | RichStringLike
params?Optional<SendMessageParams, "text" | "chat_id">

Returns ​

Promise<MessageContext<Bot>>

Inherited from ​

SendMixin.send


sendAnimation() ​

sendAnimation(animation, params?): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5517

Sends animation to current chat

Parameters ​

ParameterType
animationstring | Blob
params?Optional<SendAnimationParams, "animation" | "chat_id">

Returns ​

Promise<MessageContext<Bot>>

Inherited from ​

SendMixin.sendAnimation


sendAudio() ​

sendAudio(audio, params?): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5513

Sends audio to current chat

Parameters ​

ParameterType
audiostring | Blob
params?Optional<SendAudioParams, "audio" | "chat_id">

Returns ​

Promise<MessageContext<Bot>>

Inherited from ​

SendMixin.sendAudio


sendChatAction() ​

sendChatAction(action, params?): Promise<true>

Defined in: contexts/index.d.ts:5541

Sends chat action to current chat

Parameters ​

ParameterType
actionSendChatActionAction
params?Optional<SendChatActionParams, "chat_id" | "action">

Returns ​

Promise<true>

Inherited from ​

SendMixin.sendChatAction


sendChecklist() ​

sendChecklist(params): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5533

Sends checklist to current chat

Parameters ​

ParameterType
paramsOptional<SendChecklistParams, "chat_id">

Returns ​

Promise<MessageContext<Bot>>

Inherited from ​

SendMixin.sendChecklist


sendContact() ​

sendContact(params): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5529

Sends contact to current chat

Parameters ​

ParameterType
paramsOptional<SendContactParams, "chat_id">

Returns ​

Promise<MessageContext<Bot>>

Inherited from ​

SendMixin.sendContact


sendDice() ​

sendDice(emoji, params?): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5543

Sends dice

Parameters ​

ParameterType
emojiSendDiceEmoji
params?Partial<SendDiceParams>

Returns ​

Promise<MessageContext<Bot>>

Inherited from ​

SendMixin.sendDice


sendDocument() ​

sendDocument(document, params?): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5511

Sends document to current chat

Parameters ​

ParameterType
documentstring | Blob
params?Optional<SendDocumentParams, "document" | "chat_id">

Returns ​

Promise<MessageContext<Bot>>

Inherited from ​

SendMixin.sendDocument


sendInvoice() ​

sendInvoice(params): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5525

Sends invoice to current user

Parameters ​

ParameterType
paramsOptional<SendInvoiceParams, "chat_id">

Returns ​

Promise<MessageContext<Bot>>

Inherited from ​

SendMixin.sendInvoice


sendLivePhoto() ​

sendLivePhoto(livePhoto, photo, params?): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5509

Sends live photo to current chat

Parameters ​

ParameterType
livePhotostring | Blob
photostring | Blob
params?Optional<SendLivePhotoParams, "photo" | "live_photo" | "chat_id">

Returns ​

Promise<MessageContext<Bot>>

Inherited from ​

SendMixin.sendLivePhoto


sendLocation() ​

sendLocation(latitude, longitude, params?): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5523

Sends location to current chat

Parameters ​

ParameterType
latitudenumber
longitudenumber
params?Optional<SendLocationParams, "chat_id" | "latitude" | "longitude">

Returns ​

Promise<MessageContext<Bot>>

Inherited from ​

SendMixin.sendLocation


sendMedia() ​

sendMedia<T>(query): ReturnType<T extends "animation" ? (animation, params?) => Promise<MessageContext<Bot>> : T extends "audio" ? (audio, params?) => Promise<MessageContext<Bot>> : T extends "document" ? (document, params?) => Promise<MessageContext<Bot>> : T extends "photo" ? (photo, params?) => Promise<MessageContext<Bot>> : T extends "sticker" ? (sticker, params?) => Promise<MessageContext<Bot>> : T extends "video_note" ? (videoNote, params?) => Promise<MessageContext<Bot>> : T extends "video" ? (video, params?) => Promise<MessageContext<...>> : T extends "voice" ? (voice, params?) => Promise<...> : () => never>

Defined in: contexts/index.d.ts:5560

Automatically uses correct media method to send media

Type Parameters ​

Type Parameter
T extends string

Parameters ​

ParameterType
queryobject & tSendMethods

Returns ​

ReturnType<T extends "animation" ? (animation, params?) => Promise<MessageContext<Bot>> : T extends "audio" ? (audio, params?) => Promise<MessageContext<Bot>> : T extends "document" ? (document, params?) => Promise<MessageContext<Bot>> : T extends "photo" ? (photo, params?) => Promise<MessageContext<Bot>> : T extends "sticker" ? (sticker, params?) => Promise<MessageContext<Bot>> : T extends "video_note" ? (videoNote, params?) => Promise<MessageContext<Bot>> : T extends "video" ? (video, params?) => Promise<MessageContext<...>> : T extends "voice" ? (voice, params?) => Promise<...> : () => never>

Example ​

js
context.sendMedia({
  type: 'photo',
  photo: MediaUpload.path('./image.png'),
  caption: 'good image yes yes'
})

Inherited from ​

SendMixin.sendMedia


sendMediaGroup() ​

sendMediaGroup(mediaGroup, params?): Promise<MessageContext<Bot>[]>

Defined in: contexts/index.d.ts:5547

Sends media group to current chat

Parameters ​

ParameterType
mediaGroup(TelegramInputMediaAudio | TelegramInputMediaDocument | TelegramInputMediaLivePhoto | TelegramInputMediaPhoto | TelegramInputMediaVideo)[]
params?Optional<SendMediaGroupParams, "media" | "chat_id">

Returns ​

Promise<MessageContext<Bot>[]>

Inherited from ​

SendMixin.sendMediaGroup


sendMessageDraft() ​

sendMessageDraft(params): Promise<true>

Defined in: contexts/index.d.ts:5539

Sends a message draft to the current private chat

Parameters ​

ParameterType
paramsOptional<SendMessageDraftParams, "chat_id">

Returns ​

Promise<true>

Inherited from ​

SendMixin.sendMessageDraft


sendPaidMedia() ​

sendPaidMedia(paidMedia, starCount, params?): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5545

Sends paid media to current chat

Parameters ​

ParameterType
paidMediaTelegramInputPaidMedia[]
starCountnumber
params?Optional<SendPaidMediaParams, "media" | "chat_id" | "star_count">

Returns ​

Promise<MessageContext<Bot>>

Inherited from ​

SendMixin.sendPaidMedia


sendPhoto() ​

sendPhoto(photo, params?): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5507

Sends photo to current chat

Parameters ​

ParameterType
photostring | Blob
params?Optional<SendPhotoParams, "photo" | "chat_id">

Returns ​

Promise<MessageContext<Bot>>

Inherited from ​

SendMixin.sendPhoto


sendPoll() ​

sendPoll(params): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5531

Sends poll to current chat

Parameters ​

ParameterType
paramsOptional<SendPollParams, "chat_id">

Returns ​

Promise<MessageContext<Bot>>

Inherited from ​

SendMixin.sendPoll


sendRichMessage() ​

sendRichMessage(richMessage, params?): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5471

Sends rich message to current chat

Parameters ​

ParameterType
richMessageTelegramInputRichMessage
params?Optional<SendRichMessageParams, "chat_id" | "rich_message">

Returns ​

Promise<MessageContext<Bot>>

Inherited from ​

SendMixin.sendRichMessage


sendRichMessageDraft() ​

sendRichMessageDraft(richMessage, draftId, params?): Promise<true>

Defined in: contexts/index.d.ts:5478

Streams a partial rich message draft to the current chat. The streamed draft is ephemeral and acts as a temporary 30-second preview — once the output is finalized, you must call sendRichMessage with the complete message to persist it.

Parameters ​

ParameterType
richMessageTelegramInputRichMessage
draftIdnumber
params?Optional<SendRichMessageDraftParams, "chat_id" | "rich_message" | "draft_id">

Returns ​

Promise<true>

Inherited from ​

SendMixin.sendRichMessageDraft


sendSticker() ​

sendSticker(sticker, params?): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5535

Sends sticker

Parameters ​

ParameterType
stickerstring | Blob
params?Optional<SendStickerParams, "sticker" | "chat_id">

Returns ​

Promise<MessageContext<Bot>>

Inherited from ​

SendMixin.sendSticker


sendVenue() ​

sendVenue(params): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5527

Sends venue to current chat

Parameters ​

ParameterType
paramsOptional<SendVenueParams, "chat_id">

Returns ​

Promise<MessageContext<Bot>>

Inherited from ​

SendMixin.sendVenue


sendVideo() ​

sendVideo(video, params?): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5515

Sends video to current chat

Parameters ​

ParameterType
videostring | Blob
params?Optional<SendVideoParams, "video" | "chat_id">

Returns ​

Promise<MessageContext<Bot>>

Inherited from ​

SendMixin.sendVideo


sendVideoNote() ​

sendVideoNote(videoNote, params?): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5519

Sends video note to current chat

Parameters ​

ParameterType
videoNotestring | Blob
params?Optional<SendVideoNoteParams, "video_note" | "chat_id">

Returns ​

Promise<MessageContext<Bot>>

Inherited from ​

SendMixin.sendVideoNote


sendVoice() ​

sendVoice(voice, params?): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5521

Sends voice to current chat

Parameters ​

ParameterType
voicestring | Blob
params?Optional<SendVoiceParams, "voice" | "chat_id">

Returns ​

Promise<MessageContext<Bot>>

Inherited from ​

SendMixin.sendVoice


stopLiveLocation() ​

stopLiveLocation(params?): Promise<true | TelegramMessage> | Promise<true | MessageContext<Bot>>

Defined in: contexts/index.d.ts:6080

Stops a callback query messages live location

Parameters ​

ParameterType
params?StopMessageLiveLocationParams

Returns ​

Promise<true | TelegramMessage> | Promise<true | MessageContext<Bot>>


stopPoll() ​

stopPoll(messageId, params?): Promise<Poll>

Defined in: contexts/index.d.ts:5537

Stops poll in current chat

Parameters ​

ParameterType
messageIdnumber
params?Partial<StopPollParams>

Returns ​

Promise<Poll>

Inherited from ​

SendMixin.stopPoll


streamMessage() ​

Call Signature ​

streamMessage(options?): MessageDraft<Bot>

Defined in: contexts/index.d.ts:5583

Streams message drafts to the current chat, finalizing each completed draft as a sent message.

Two forms (mirroring SendMixin.streamRichMessage):

  • Iterable — pass an Iterable/AsyncIterable of MessageDraftPiece; it's drained and the array of sent messages is returned.
  • Handle — call with no iterable to get a MessageDraft: append() pieces and finalize(), or use await using to finalize on scope exit.

Both use sendMessageDraft for live previews and sendMessage to finalize each 4096-char segment.

Parameters ​
ParameterType
options?StreamMessageOptions
Returns ​

MessageDraft<Bot>

Example ​
ts
// iterable form
const messages = await context.streamMessage(llmStream);

// handle form (auto-finalize)
await using draft = context.streamMessage();
for await (const token of llm) draft.append(token);
Inherited from ​

SendMixin.streamMessage

Call Signature ​

streamMessage(stream, options?): Promise<MessageContext<Bot>[]>

Defined in: contexts/index.d.ts:5584

Streams message drafts to the current chat, finalizing each completed draft as a sent message.

Two forms (mirroring SendMixin.streamRichMessage):

  • Iterable — pass an Iterable/AsyncIterable of MessageDraftPiece; it's drained and the array of sent messages is returned.
  • Handle — call with no iterable to get a MessageDraft: append() pieces and finalize(), or use await using to finalize on scope exit.

Both use sendMessageDraft for live previews and sendMessage to finalize each 4096-char segment.

Parameters ​
ParameterType
streamIterable<MessageDraftPiece, any, any> | AsyncIterable<MessageDraftPiece, any, any>
options?StreamMessageOptions
Returns ​

Promise<MessageContext<Bot>[]>

Example ​
ts
// iterable form
const messages = await context.streamMessage(llmStream);

// handle form (auto-finalize)
await using draft = context.streamMessage();
for await (const token of llm) draft.append(token);
Inherited from ​

SendMixin.streamMessage


streamRichMessage() ​

Call Signature ​

streamRichMessage(options?): RichMessageDraft<Bot>

Defined in: contexts/index.d.ts:5504

Stream a rich message to the current chat, draft-first.

The hard part of sendRichMessageDraft is the contract: the draft is an ephemeral ~30-second preview, and you must finalize it with sendRichMessage or the message vanishes. This helper owns that lifecycle (throttled previews, a single finalize), so you can't forget it.

Two forms:

  • Handle — const draft = ctx.streamRichMessage(); draft.append(chunk); … await draft.finalize(). With await using, finalize runs automatically on scope exit.
  • Iterable — pass an (async) iterable of chunks; it's drained, finalized, and the sent message is returned.

A chunk is a @gramio/format RichString or a raw rich-markdown string.

Parameters ​
ParameterType
options?StreamRichMessageOptions
Returns ​

RichMessageDraft<Bot>

Example ​
ts
// handle form (auto-finalize)
await using draft = ctx.streamRichMessage();
for await (const token of llm) draft.append(rich`${token}`);

// iterable form
const message = await ctx.streamRichMessage(llmStream);
Inherited from ​

SendMixin.streamRichMessage

Call Signature ​

streamRichMessage(stream, options?): Promise<MessageContext<Bot>>

Defined in: contexts/index.d.ts:5505

Stream a rich message to the current chat, draft-first.

The hard part of sendRichMessageDraft is the contract: the draft is an ephemeral ~30-second preview, and you must finalize it with sendRichMessage or the message vanishes. This helper owns that lifecycle (throttled previews, a single finalize), so you can't forget it.

Two forms:

  • Handle — const draft = ctx.streamRichMessage(); draft.append(chunk); … await draft.finalize(). With await using, finalize runs automatically on scope exit.
  • Iterable — pass an (async) iterable of chunks; it's drained, finalized, and the sent message is returned.

A chunk is a @gramio/format RichString or a raw rich-markdown string.

Parameters ​
ParameterType
streamIterable<RichChunk, any, any> | AsyncIterable<RichChunk, any, any>
options?StreamRichMessageOptions
Returns ​

Promise<MessageContext<Bot>>

Example ​
ts
// handle form (auto-finalize)
await using draft = ctx.streamRichMessage();
for await (const token of llm) draft.append(rich`${token}`);

// iterable form
const message = await ctx.streamRichMessage(llmStream);
Inherited from ​

SendMixin.streamRichMessage