登录
首页 >  Golang >  Go问答

触发电报机器人发送信息的方法

来源:stackoverflow

时间:2024-02-24 21:00:24 246浏览 收藏

有志者,事竟成!如果你在学习Golang,那么本文《触发电报机器人发送信息的方法》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我无法弄清楚如何使用电报机器人诱导(触发)本地服务器向频道发送消息。

例如,从用户注册并连接电报的网站向用户发送通知。我们假设用户已经开始与机器人对话并准备好接收来自机器人的消息。

我有一个单独的服务器,可以使用机器人向服务器发送请求,但我无法理解如何在此 telegram-bot 服务器上接收和处理请求。

我正在使用 go telegram-bot-api 库,此时服务器使用长轮询方法而不是 webhooks。因此它通过更新通道接收一些 telegram 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通过更新通道获取用户的消息,处理它并发送回复消息。


解决方案


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

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

您可以简单地在服务器逻辑内初始化另一个 BotAPI 实例,并使用它异步发送消息。 它不会影响活动的长轮询或网络钩子。

到这里,我们也就讲完了《触发电报机器人发送信息的方法》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>