message extras

telegram messages have many optional controls: replies, link previews, notifications, protection, reactions, captions, entities, keyboards, and effects.

reply parameters

ctx.reply() fills reply parameters for the current message. use raw params when you need custom threading behavior.

reply.ts
await ctx.reply("threaded reply");

await ctx.send("manual reply", {
  reply_parameters: { message_id: ctx.message!.message_id },
});

link previews

preview.ts
await ctx.send("https://yaebal.pages.dev", {
  link_preview_options: {
    is_disabled: false,
    prefer_large_media: true,
  },
});

reactions

generated contexts expose convenience shortcuts like ctx.react() when you use createBot() from the meta package.

reaction.ts
bot.on("message:text", async (ctx) => {
  await ctx.react("🔥");
});

other send options

extras.ts
await ctx.reply("pick", {
  protect_content: true,
  disable_notification: true,
  reply_markup: new InlineKeyboard().text("ok", "ok"),
});

formatting

prefer entity-based formatting through @yaebal/fmt or core builders. it avoids broken markdown/html escaping and makes user interpolation safe.