我不知道如何用电报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通过更新通道从用户获取消息,进行处理并发送回复消息。
答案 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
实例,并使用它异步发送消息。
它不会影响有效的长时间轮询或网络鸣叫。