Golang Go语言中如何设置Telegram Webhook

Golang Go语言中如何设置Telegram Webhook

首先用的是这个库,https://github.com/go-telegram-bot-api/telegram-bot-api

用 updates, err := bot.GetUpdatesChan(u) 一切都正常,这种方式和主题的提问无关联,数据在 telegram 的服务器上 telegram 对数据存留时间有 24 小时的周期限制。所以看 webhook,通过自己的服务器完成数据的操作,然后再通过 webhook 的方式通知 bot 。

遇到过一个问题,不知道做 bot 资深的开发者朋友们有没有遇到:

  1. 在同一个 channel 里面加上 bot,通过 @的方式,bot 无法获取从 channel 中其他人 @的消息,不知道是不是 telegram 支持这样做,如果不支持,那为什么还有 @的存在,没有搞明白。
  2. 另外一个就是,通过 api 的 get 方法可以直接给指定的 channel 发消息(通过 chat_id ),但通过程序没有实现,不知道是这个库的问题,如果大家用其他库,也请推荐一下。

更多关于Golang Go语言中如何设置Telegram Webhook的实战教程也可以访问 https://www.itying.com/category-94-b0.html

8 回复

@就是 InlineMode 吧,从哪里 @应该都行的,只能获取是谁 @的,无法获取从哪个 Chat 来的。

更多关于Golang Go语言中如何设置Telegram Webhook的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


是 InlineMode,可以获取 ,但是 bot 那边收不到返回的消息。

你的这个项目,用了 webhook 吗? https://github.com/Taosky/telegram-search-bot

对的,我用的时候轮询和 webhook 都能收到信息的,botfather 设置 bot,InlineMode 开了吗。

开了,准备先用 telegram 的服务器的模式先把功能做出来,后面再换 webhook 挂上去。你 webhook 的 URL 设置是什么规则?我之前测试的是这个路径 https://domain.com/bot123:keykeykey, 需要挂后面的命令名字吗?

ok,那我至少思路是对的,我先把功能做出来,在按照这个方法测试下 webhook,谢谢~

在Golang中设置Telegram Webhook涉及到与Telegram Bot API进行交互。以下是设置Webhook的基本步骤:

  1. 引入必要的包: 使用net/http包来处理HTTP请求,使用encoding/json包来解析和构建JSON数据。你可能还需要一个HTTP客户端库,如net/url来处理URL编码。

  2. 构建Webhook URL: 确定你的服务器可以接收Webhook请求的URL。确保这个URL是公网可访问的,并且你的服务器配置了相应的路由来处理这些请求。

  3. 发送设置Webhook的请求: 使用Telegram Bot API的setWebhook方法。你需要构建一个包含url字段的JSON对象,并发送一个POST请求到Telegram的Bot API端点。例如:

    package main
    
    import (
        "bytes"
        "encoding/json"
        "net/http"
    )
    
    func setWebhook(botToken, url string) error {
        data := map[string]string{"url": url}
        jsonData, err := json.Marshal(data)
        if err != nil {
            return err
        }
        req, err := http.NewRequest("POST", "https://api.telegram.org/bot"+botToken+"/setWebhook", bytes.NewBuffer(jsonData))
        if err != nil {
            return err
        }
        client := &http.Client{}
        resp, err := client.Do(req)
        if err != nil {
            return err
        }
        resp.Body.Close()
        return nil
    }
    
  4. 处理Webhook请求: 在你的服务器上实现处理Telegram发送的Webhook请求的逻辑。

确保你的服务器正确处理HTTP请求,并且你的防火墙或安全组规则允许来自Telegram服务器的入站连接。

回到顶部