【问题标题】:How i can request the user's location in inline keyboard within telegram?我如何在电报内的内联键盘中请求用户的位置?
【发布时间】:2021-09-02 09:19:24
【问题描述】:

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

//获取位置的按钮

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" },
          ],
        ],
      },
    }
  );
});

提前致谢。

【问题讨论】:

    标签: location telegram telegraf


    【解决方案1】:

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

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

    此外,没有用于返回上一个键盘的内置按钮或解决方案(无论是ReplyKeyboard 还是InlineKeyboard)。您必须使用专门声明的正确textcallback_data,如果它是InlineKeyboardButton)来实现返回按钮,以便您的代码可以识别它并返回到最后一个键盘。

    【讨论】:

    • 非常感谢您的回复。为按钮编写回调名称是否有限制?比如,不要使用一些特定的符号?
    • API 不限制任何字符的使用,但数据不应大于 64 字节。
    猜你喜欢
    • 2017-06-04
    • 2022-06-11
    • 1970-01-01
    • 2018-04-05
    • 2017-12-10
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    相关资源
    最近更新 更多