GoLang Telegram-bot-api如何询问位置?

时间:2017-11-29 11:17:40

标签: go telegram telegram-bot

我正在使用github.com/go-telegram-bot-api创建我的机器人。我想询问客户的位置。我该怎么做?到目前为止,我做到了这一点:

updates, err := bot.GetUpdatesChan(u)

for update := range updates {
    if update.Message == nil {
        continue
    }

    switch update.Message.Text {
    case "/shop":   
        msg := tgbotapi.NewMessage(update.Message.Chat.ID,"Send me your location")
        //I need to make this message ask for the location
        msg.Text = tgbotapi.ChatFindLocation
        bot.Send(msg)
        continue
    }
}

1 个答案:

答案 0 :(得分:1)

不幸的是,在他们的存储库中没有这方面的例子。我读了一些他们的代码来弄清楚如何去做。

这是一个示例机器人,它为每条消息请求位置。我创建了一个按钮虚拟键盘,点击时共享位置。

package main

import (
    "gopkg.in/telegram-bot-api.v4"
    "log"
)

const botToken = "Put your bot token here!"

func main() {
    bot, err := tgbotapi.NewBotAPI(botToken)
    if err != nil {
        log.Panic(err)
    }

    bot.Debug = true
    log.Printf("Authorized on account %s", bot.Self.UserName)

    u := tgbotapi.NewUpdate(0)
    u.Timeout = 60
    updates, err := bot.GetUpdatesChan(u)

    for update := range updates {
        if update.Message == nil {
            continue
        }

        log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text)

        msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Hi")
        //msg.ReplyToMessageID = update.Message.MessageID
        btn := tgbotapi.KeyboardButton{
            RequestLocation: true,
            Text: "Gimme where u live!!",
        }
        msg.ReplyMarkup = tgbotapi.NewReplyKeyboard([]tgbotapi.KeyboardButton{btn})
        bot.Send(msg)
    }
}