我如何在电报内的内联键盘中请求用户的位置?

How i can request the user's location in inline keyboard within telegram?

大家好,我是电报机器人编码方面的新手,我正在构建一个地理数据收集器机器人。我想使用内联键盘在按钮中检索用户的位置。只有 request_location 参数可以在键盘中使用,而不是在线键盘中。我还想为我的其中一个按钮使用回调以返回到上一个菜单,但我无法为键盘找到正确的回调查询。有人可以帮助我如何请求内联键盘中的位置吗?

//我的获取位置的按钮

bot.action("POS-PCdF", (ctx) => {
  ctx.deleteMessage();
  console.log(ctx.from);
  bot.telegram.sendMessage(ctx.chat.id, "Can we access your location?", {
    reply_markup: {
      keyboard: [
        [
          {
            text: "Access my location",
            request_location: true,
            callback_data: "Access_my_loc",
          },
          { text: "Cancel", callback_data: "PCdF" },
        ],
      ],
    },
  });
});

//我想在回调中使用的菜单

bot.action("PCdF", (ctx) => {
  ctx.deleteMessage();
  ctx.telegram.sendMessage(
    ctx.chat.id,
    "Share with us the problems about *******!",
    {
      reply_markup: {
        inline_keyboard: [
          [
            { text: "Pictures", callback_data: "PIC-PCdF" },
            { text: "Location", callback_data: "POS-PCdF" },
          ],
          [
            { text: "write to us", callback_data: "TEXT-PCdF" },
            { text: "Go back Home", callback_data: "go-back" },
          ],
        ],
      },
    }
  );
});

提前致谢。

Official Telegram Bot API 中所述,InlineKeyboardMarkupButton 应恰好包含以下可选字段之一:callback_datalogin_urlswitch_inline_queryswitch_inline_query_current_chatcallback_gamepay

这意味着内联键盘不能有请求用户位置的按钮 AKA request_location

此外,没有用于 returning 到最后一个键盘(无论是 ReplyKeyboard 还是 InlineKeyboard)的内置按钮或解决方案。您必须实现一个 return 按钮,并明确声明一个适当的 textcallback_data 如果它是一个 InlineKeyboardButton),这样您的代码就可以识别它并且 return最后一个键盘。