golang telegram notice

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
}