You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#开发的Telegram Bot中同时发送Reply与Inline键盘?

实现C# Telegram Bot同时显示Reply键盘与Inline键盘的方案

Telegram Bot API本身不支持在单条消息中同时附加ReplyKeyboardMarkup(底部常驻键盘)和InlineKeyboardMarkup(消息内嵌键盘),但可以通过以下变通方式实现两种键盘同时显示的效果:

核心思路

将ReplyKeyboard设为会话级的常驻键盘,之后发送带InlineKeyboard的消息。此时用户界面会同时显示底部的常驻Reply键盘,以及目标消息内的Inline键盘。

代码示例

1. 设置常驻Reply键盘

先发送一条消息配置会话的Reply键盘,该键盘会一直显示,直到主动取消:

using Telegram.Bot.Types.ReplyMarkups;

// 构建Reply键盘
var replyKeyboard = new ReplyKeyboardMarkup(new[]
{
    new KeyboardButton[] { "功能菜单", "个人设置" },
    new KeyboardButton[] { "帮助中心" }
})
{
    ResizeKeyboard = true, // 自适应屏幕大小
    PersistentKeyboard = true // 设为常驻键盘
};

// 发送配置消息,激活Reply键盘
await botClient.SendTextMessageAsync(
    chatId: chatId,
    text: "功能菜单已开启",
    replyMarkup: replyKeyboard
);

2. 发送带Inline键盘的消息

之后发送的消息可以单独附加Inline键盘,此时用户界面会同时显示两种键盘:

// 构建Inline键盘
var inlineKeyboard = new InlineKeyboardMarkup(new[]
{
    new[]
    {
        InlineKeyboardButton.WithCallbackData("查看订单详情", "callback_order_detail"),
        InlineKeyboardButton.WithUrl("访问官方商城", "https://your-shop-url.com")
    }
});

// 发送带Inline键盘的消息
await botClient.SendTextMessageAsync(
    chatId: chatId,
    text: "您的最新订单已生成",
    replyMarkup: inlineKeyboard
);

注意事项

  • 如果不需要Reply键盘常驻,可以在后续操作中通过ReplyKeyboardRemove取消显示。
  • 单条消息只能绑定一种IReplyMarkup实现,无法在同一条消息中同时设置两种键盘,这是Telegram官方API的限制。

内容的提问来源于stack exchange,提问作者Pavel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 14:36:06