fix gs tts

This commit is contained in:
源文雨 2022-12-03 17:16:45 +08:00
parent 82608d01bb
commit 11f358bcbf
3 changed files with 22 additions and 10 deletions

View File

@ -2,6 +2,7 @@ package aireply
import ( import (
"errors" "errors"
"net/url"
"regexp" "regexp"
"sync" "sync"
@ -131,9 +132,9 @@ func getReplyMode(ctx *zero.Ctx) (name string) {
***********************tts************************************ ***********************tts************************************
*************************************************************/ *************************************************************/
type ttsmode struct { type ttsmode struct {
sync.RWMutex sync.RWMutex `json:"-"`
apikey string APIKey string
mode map[int64]int64 mode map[int64]int64
} }
func list(list []string, num int) string { func list(list []string, num int) string {
@ -165,8 +166,16 @@ func newttsmode() *ttsmode {
return tts return tts
} }
func (tts *ttsmode) getAPIKey() string { func (tts *ttsmode) getAPIKey(ctx *zero.Ctx) string {
return tts.apikey if tts.APIKey == "" {
m := ctx.State["manager"].(*ctrl.Control[*zero.Ctx])
gid := ctx.Event.GroupID
if gid == 0 {
gid = -ctx.Event.UserID
}
_ = m.Manager.GetExtra(gid, &tts)
}
return url.QueryEscape(tts.APIKey)
} }
func (tts *ttsmode) setAPIKey(ctx *zero.Ctx, key string) error { func (tts *ttsmode) setAPIKey(ctx *zero.Ctx, key string) error {
@ -179,7 +188,7 @@ func (tts *ttsmode) setAPIKey(ctx *zero.Ctx, key string) error {
if err != nil { if err != nil {
return errors.New("内部错误") return errors.New("内部错误")
} }
tts.apikey = key tts.APIKey = key
return nil return nil
} }

View File

@ -27,6 +27,7 @@ func init() { // 插件主体
"- 设置语音模式[原神人物]\n" + "- 设置语音模式[原神人物]\n" +
"- 设置默认语音模式[原神人物]\n" + "- 设置默认语音模式[原神人物]\n" +
"- 恢复成默认语音模式\n" + "- 恢复成默认语音模式\n" +
"- 设置原神语音 api key xxxxxx\n" +
"当前适用的原神人物含有以下:\n" + list(soundList[:], 5), "当前适用的原神人物含有以下:\n" + list(soundList[:], 5),
}) })
tts := newttsmode() tts := newttsmode()
@ -82,7 +83,7 @@ func init() { // 插件主体
} }
return numcn.EncodeFromFloat64(f) return numcn.EncodeFromFloat64(f)
}), }),
), tts.getAPIKey())).Add("cache", 0) ), tts.getAPIKey(ctx)))
// 发送语音 // 发送语音
if ID := ctx.SendChain(record); ID.ID() == 0 { if ID := ctx.SendChain(record); ID.ID() == 0 {
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(reply)) ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text(reply))
@ -108,7 +109,7 @@ func init() { // 插件主体
ctx.SendChain(message.Text("配置的语音人物数据丢失!请重新设置语音人物。")) ctx.SendChain(message.Text("配置的语音人物数据丢失!请重新设置语音人物。"))
return return
} }
record := message.Record(fmt.Sprintf(cnapi, i, url.QueryEscape(testRecord[soundList[i]]), tts.getAPIKey())).Add("cache", 0) record := message.Record(fmt.Sprintf(cnapi, i, url.QueryEscape(testRecord[soundList[i]]), tts.getAPIKey(ctx))).Add("cache", 0)
if ID := ctx.SendChain(record); ID.ID() == 0 { if ID := ctx.SendChain(record); ID.ID() == 0 {
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("设置失败!无法发送测试语音,请重试。")) ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("设置失败!无法发送测试语音,请重试。"))
return return

View File

@ -54,7 +54,9 @@ func init() {
ctx.SendChain(message.Text("ERROR: plugin tts not found")) ctx.SendChain(message.Text("ERROR: plugin tts not found"))
return return
} }
var key string var key struct {
APIKey string
}
gid := ctx.Event.GroupID gid := ctx.Event.GroupID
if gid == 0 { if gid == 0 {
gid = -ctx.Event.UserID gid = -ctx.Event.UserID
@ -64,6 +66,6 @@ func init() {
ctx.SendChain(message.Text("ERROR: ", err)) ctx.SendChain(message.Text("ERROR: ", err))
return return
} }
ctx.SendChain(message.Record(fmt.Sprintf(cnapi, url.QueryEscape(text), id, key))) ctx.SendChain(message.Record(fmt.Sprintf(cnapi, url.QueryEscape(text), id, url.QueryEscape(key.APIKey))))
}) })
} }