diff --git a/cmd/gocq/login.go b/cmd/gocq/login.go index d963d25..aaa31e3 100644 --- a/cmd/gocq/login.go +++ b/cmd/gocq/login.go @@ -16,6 +16,7 @@ import ( "github.com/pkg/errors" log "github.com/sirupsen/logrus" "github.com/tidwall/gjson" + "gopkg.ilharper.com/x/isatty" "github.com/Mrs4s/go-cqhttp/global" ) @@ -44,6 +45,14 @@ func readLineTimeout(t time.Duration, de string) (str string) { return } +func readIfTTY(de string) (str string) { + if isatty.Isatty(os.Stdin.Fd()) { + return readLine() + } + log.Warnf("未检测到输入终端,自动选择%s.", de) + return de +} + var cli *client.QQClient // ErrSMSRequestError SMS请求出错 @@ -148,8 +157,8 @@ func loginResponseProcessor(res *client.LoginResponse) error { log.Warnf("登录需要滑条验证码, 请选择验证方式: ") log.Warnf("1. 使用浏览器抓取滑条并登录") log.Warnf("2. 使用手机QQ扫码验证 (需要手Q和gocq在同一网络下).") - log.Warn("请输入(1 - 2) (将在10秒后自动选择1):") - text = readLineTimeout(time.Second*10, "1") + log.Warn("请输入(1 - 2):") + text = readIfTTY("1") if strings.Contains(text, "1") { ticket := getTicket(res.VerifyUrl) if ticket == "" { @@ -185,8 +194,8 @@ func loginResponseProcessor(res *client.LoginResponse) error { log.Warnf("账号已开启设备锁,请选择验证方式:") log.Warnf("1. 向手机 %v 发送短信验证码", res.SMSPhone) log.Warnf("2. 使用手机QQ扫码验证.") - log.Warn("请输入(1 - 2) (将在10秒后自动选择2):") - text = readLineTimeout(time.Second*10, "2") + log.Warn("请输入(1 - 2):") + text = readIfTTY("2") if strings.Contains(text, "1") { if !cli.RequestSMS() { log.Warnf("发送验证码失败,可能是请求过于频繁.") diff --git a/cmd/gocq/main.go b/cmd/gocq/main.go index dacaead..5c25745 100644 --- a/cmd/gocq/main.go +++ b/cmd/gocq/main.go @@ -220,8 +220,8 @@ func Main() { log.Warnf("警告: 配置文件内的QQ号 (%v) 与缓存内的QQ号 (%v) 不相同", base.Account.Uin, cu) log.Warnf("1. 使用会话缓存继续.") log.Warnf("2. 删除会话缓存并重启.") - log.Warnf("请选择: (5秒后自动选1)") - text := readLineTimeout(time.Second*5, "1") + log.Warnf("请选择:") + text := readIfTTY("1") if text == "2" { _ = os.Remove("session.token") log.Infof("缓存已删除.") diff --git a/go.mod b/go.mod index db48f45..f5182d3 100644 --- a/go.mod +++ b/go.mod @@ -22,6 +22,7 @@ require ( golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11 + gopkg.ilharper.com/x/isatty v1.1.0 gopkg.in/yaml.v3 v3.0.1 ) @@ -48,7 +49,7 @@ require ( go.uber.org/atomic v1.9.0 // indirect golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9 // indirect golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect - golang.org/x/sys v0.0.0-20220111092808-5a964db01320 // indirect + golang.org/x/sys v0.2.0 // indirect golang.org/x/text v0.3.7 // indirect modernc.org/libc v1.8.1 // indirect modernc.org/mathutil v1.2.2 // indirect diff --git a/go.sum b/go.sum index d70e916..92c889a 100644 --- a/go.sum +++ b/go.sum @@ -145,8 +145,9 @@ golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220111092808-5a964db01320 h1:0jf+tOCoZ3LyutmCOWpVni1chK4VfFLhRsDK7MhqGRY= golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -169,6 +170,8 @@ google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQ google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +gopkg.ilharper.com/x/isatty v1.1.0 h1:slOK6hP9/y9mJWyCInMwnT432NExfWyYV2SsebdYOCY= +gopkg.ilharper.com/x/isatty v1.1.0/go.mod h1:ofpv77Td5qQO6R1dmDd3oNt8TZdRo+l5gYAMxopRyS0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=