diff --git a/cmd/gocq/main.go b/cmd/gocq/main.go index 4463fbf..2e6c85a 100644 --- a/cmd/gocq/main.go +++ b/cmd/gocq/main.go @@ -364,6 +364,7 @@ func LoginInteract() { }) saveToken() cli.AllowSlider = true + download.SetGlobalTimeout(time.Duration(base.HTTPTimeout) * time.Second) // 在登录完成后设置, 防止在堵塞协议更新 log.Infof("登录成功 欢迎使用: %v", cli.Nickname) log.Info("开始加载好友列表...") global.Check(cli.ReloadFriendList(), true) @@ -375,7 +376,6 @@ func LoginInteract() { base.Account.Status = 0 } cli.SetOnlineStatus(allowStatus[base.Account.Status]) - servers.Run(coolq.NewQQBot(cli)) log.Info("资源初始化完成, 开始处理信息.") log.Info("アトリは、高性能ですから!") diff --git a/internal/base/flag.go b/internal/base/flag.go index 44e018c..b5b6ce5 100644 --- a/internal/base/flag.go +++ b/internal/base/flag.go @@ -39,6 +39,7 @@ var ( AllowTempSession bool // 是否允许发送临时会话信息 UpdateProtocol bool // 是否更新协议 SignServerOverwrite string // 使用特定的服务器进行签名 + HTTPTimeout int PostFormat string // 上报格式 string or array Proxy string // 存储 proxy_rewrite,用于设置代理 @@ -88,6 +89,7 @@ func Init() { ReportSelfMessage = conf.Message.ReportSelfMessage UseSSOAddress = conf.Account.UseSSOAddress AllowTempSession = conf.Account.AllowTempSession + HTTPTimeout = conf.Message.HTTPTimeout } { // others Proxy = conf.Message.ProxyRewrite diff --git a/internal/download/download.go b/internal/download/download.go index a7b7e06..7622e4c 100644 --- a/internal/download/download.go +++ b/internal/download/download.go @@ -33,7 +33,7 @@ var client = &http.Client{ MaxIdleConns: 0, MaxIdleConnsPerHost: 999, }, - Timeout: time.Second * 15, + Timeout: time.Second * 5, } // ErrOverSize 响应主体过大时返回此错误 @@ -42,6 +42,13 @@ var ErrOverSize = errors.New("oversize") // UserAgent HTTP请求时使用的UA const UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.66" +func SetGlobalTimeout(t time.Duration) { + if t == 0 { + t = time.Second * 10 + } + client.Timeout = t +} + // Request is a file download request type Request struct { Method string diff --git a/modules/config/config.go b/modules/config/config.go index 22d9879..512915c 100644 --- a/modules/config/config.go +++ b/modules/config/config.go @@ -56,6 +56,7 @@ type Config struct { ExtraReplyData bool `yaml:"extra-reply-data"` SkipMimeScan bool `yaml:"skip-mime-scan"` ConvertWebpImage bool `yaml:"convert-webp-image"` + HTTPTimeout int `yaml:"http-timeout"` } `yaml:"message"` Output struct {