telegram:

func SendTelegram(msg string) {
    if !viper.GetBool("server.usetelegram") {
        return
    }

    //生成要访问的url
    botid := viper.GetString("telegram.botid")
    bottoken := viper.GetString("telegram.bottoken")
    chatid := viper.GetString("telegram.chatid")
    url_api := "https://api.telegram.org/"
    url_full := url_api + "bot" + botid + ":" + bottoken + "/sendMessage"
    data := url.Values{"chat_id": {chatid}, "text": {msg}}

    //proxy
    if viper.GetBool("telegram.useproxy") {
        global.HTTPClient = SetHttpProxy()
    }
    resp, err := global.HTTPClient.Post(url_full,
        "application/x-www-form-urlencoded",
        strings.NewReader(data.Encode()))
    if err != nil {
        log.Println(err)
    }

    defer resp.Body.Close()

    _, err = ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Println(err)
    }
}

proxy:

func SetHttpProxy() (httpclient http.Client) {
    proxyurl := viper.GetString("telegram.proxyurl")
    ProxyURL, _ := url.Parse(proxyurl)
    httpclient = http.Client{
        //设置10s超时时间
        Timeout: 10 * time.Second,
        //http连接池配置
        Transport: &http.Transport{
            Proxy: http.ProxyURL(ProxyURL),
            DialContext: (&net.Dialer{
                Timeout:   30 * time.Second,
                KeepAlive: 30 * time.Second,
            }).DialContext,
            ForceAttemptHTTP2:     true,
            MaxIdleConns:          100,              //默认连接池有100个连接
            IdleConnTimeout:       90 * time.Second, //每个连接默认的空闲时间90s(90s内有请求过来,可以复用该连接)
            TLSHandshakeTimeout:   10 * time.Second,
            ExpectContinueTimeout: 1 * time.Second,
        },
    }
    return httpclient
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code