如何触发电报机器人发送消息

时间:2019-06-16 18:37:23

标签: go telegram-bot

我不知道如何用电报bot诱使(触发)本地服务器以将消息发送到通道。

例如,从网站上向用户发送通知,该网站已注册并连接了他的电报。我们将假设用户已经开始与bot对话,并准备从中接收消息。

我有一个单独的服务器,可以通过机器人将请求发送到该服务器,但是我不明白如何在此电报机器人服务器上接收和处理请求。

我正在使用go telegram-bot-api库,现在服务器使用长轮询方法而不是webhooks。因此它通过更新通道接收一些电报API事件。

我的代码只是telegram-bot-api golang lib git repo中的示例副本:

func main() {
    bot, err := tgbotapi.NewBotAPI("MyAwesomeBotToken")
    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 { // ignore any non-Message Updates
            continue
        }

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

        msg := tgbotapi.NewMessage(update.Message.Chat.ID, update.Message.Text)
        msg.ReplyToMessageID = update.Message.MessageID

        bot.Send(msg)
    }
}

我希望从第三方服务中诱使(触发)我的机器人,从中获取一些数据,生成消息并通过聊天发送给用户。

这时我的实现是:bot通过更新通道从用户获取消息,进行处理并发送回复消息。

1 个答案:

答案 0 :(得分:0)

telegram-bot-api使用HTTP POST请求将消息发送到Telegram Bot API。

在此处查看更多信息:https://github.com/go-telegram-bot-api/telegram-bot-api/blob/master/bot.go#L71

您可以简单地在服务器逻辑中初始化另一个BotAPI实例,并使用它异步发送消息。 它不会影响有效的长时间轮询或网络鸣叫。