Skip to content
This repository was archived by the owner on Jan 17, 2024. It is now read-only.

Commit b0313da

Browse files
authored
Merge pull request #44 from sysnapse/master
extend timeout seconds of voice genshin; add backup longtu url
2 parents 92da1d1 + 7fa7577 commit b0313da

File tree

4 files changed

+45
-4
lines changed

4 files changed

+45
-4
lines changed

aivoice/genshin_voice.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"io"
66
"net/http"
77
"net/url"
8+
"strings"
89
"time"
910
)
1011

@@ -70,20 +71,24 @@ const (
7071
VoiceAPI = "https://genshin.azurewebsites.net/api/speak?format=wav&text=%s&id=%d"
7172
)
7273

73-
var client = &http.Client{Timeout: time.Second * 30}
74+
var client = &http.Client{Timeout: time.Second * 300}
7475

7576
func GetGenshinVoice(msg, actor string) ([]byte, error) {
7677
if id, ok := actors[actor]; !ok {
7778
return nil, fmt.Errorf("未知的角色: %s", actor)
7879
} else {
79-
req, err := http.NewRequest(http.MethodGet, fmt.Sprintf(VoiceAPI, url.QueryEscape(msg), id), nil)
80+
api := fmt.Sprintf(VoiceAPI, url.QueryEscape(msg), id)
81+
req, err := http.NewRequest(http.MethodGet, api, nil)
8082
if err != nil {
8183
return nil, fmt.Errorf("http_error: %v", err)
8284
}
8385
req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")
8486
res, err := client.Do(req)
8587
if err != nil {
86-
return nil, fmt.Errorf("http_error: %v", err)
88+
if strings.Contains(err.Error(), "context deadline exceeded") {
89+
return nil, fmt.Errorf("http_error: %s", "API请求逾时")
90+
}
91+
return nil, fmt.Errorf("http_error: %v", err.Error())
8792
}
8893
defer res.Body.Close()
8994
if res.StatusCode != 200 {

cmd/cmd_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package cmd
2+
3+
import (
4+
"fmt"
5+
"math/rand"
6+
"testing"
7+
"time"
8+
)
9+
10+
func TestLongTu(t *testing.T) {
11+
backup := "https://phqghume.github.io/img/"
12+
rand.Seed(time.Now().UnixMicro())
13+
random := rand.Intn(58) + 1
14+
ext := ".jpg"
15+
if random > 48 {
16+
ext = ".gif"
17+
}
18+
imgLink := fmt.Sprintf("%slong%%20(%d)%s", backup, random, ext)
19+
t.Log(imgLink)
20+
}

cmd/random.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,19 @@ func randomLong(args []string, source *command.MessageSource) error {
3636
msg := qq.CreateReply(source.Message)
3737
img, err := qq.NewImageByUrl("http://106.13.17.214:23856/dragon")
3838
if err != nil {
39-
return err
39+
logger.Errorf("尝试获取随机龙图时出现错误: %v, 将使用备份图片", err)
40+
backup := "https://phqghume.github.io/img/"
41+
rand.Seed(time.Now().UnixMicro())
42+
random := rand.Intn(58) + 1
43+
ext := ".jpg"
44+
if random > 48 {
45+
ext = ".gif"
46+
}
47+
imgLink := fmt.Sprintf("%slong%%20(%d)%s", backup, random, ext)
48+
img, err = qq.NewImageByUrl(imgLink)
49+
if err != nil {
50+
return err
51+
}
4052
}
4153
msg.Append(img)
4254
return qq.SendGroupMessage(msg)

cmd/voice.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ func voiceQQ(args []string, source *command.MessageSource) error {
3737

3838
func voiceGenshin(args []string, source *command.MessageSource) error {
3939
actor, content := args[0], strings.Join(args[1:], ",")
40+
41+
reply := qq.CreateReply(source.Message).Append(qq.NewTextf("正在尝试生成 %s 的语音...", actor))
42+
_ = qq.SendGroupMessage(reply)
43+
4044
data, err := aivoice.GetGenshinVoice(content, actor)
4145
if err != nil {
4246
return err

0 commit comments

Comments
 (0)