mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2025-12-19 05:30:07 +08:00
72 lines
2.2 KiB
Go
72 lines
2.2 KiB
Go
// Package juejuezi 绝绝子
|
|
package juejuezi
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
"strings"
|
|
|
|
ctrl "github.com/FloatTech/zbpctrl"
|
|
"github.com/FloatTech/zbputils/control"
|
|
"github.com/FloatTech/zbputils/ctxext"
|
|
"github.com/tidwall/gjson"
|
|
zero "github.com/wdvxdr1123/ZeroBot"
|
|
"github.com/wdvxdr1123/ZeroBot/message"
|
|
"github.com/wdvxdr1123/ZeroBot/utils/helper"
|
|
)
|
|
|
|
const (
|
|
juejueziURL = "https://www.offjuan.com/api/juejuezi/text"
|
|
referer = "https://juejuezi.offjuan.com/"
|
|
ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"
|
|
)
|
|
|
|
func init() {
|
|
control.AutoRegister(&ctrl.Options[*zero.Ctx]{
|
|
DisableOnDefault: false,
|
|
Brief: "绝绝子生成器",
|
|
Help: "例: 喝奶茶绝绝子\n绝绝子吃饭",
|
|
}).OnRegex("[\u4E00-\u9FA5]{0,10}绝绝子[\u4E00-\u9FA5]{0,10}").SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) {
|
|
toDealStr := []rune(strings.ReplaceAll(ctx.ExtractPlainText(), "绝绝子", ""))
|
|
switch len(toDealStr) {
|
|
case 0, 1:
|
|
ctx.SendChain(message.Reply(ctx.Event.MessageID), message.Text("不要只输入绝绝子"))
|
|
case 2:
|
|
data, err := juejuezi(string(toDealStr[0]), string(toDealStr[1]))
|
|
if err != nil {
|
|
ctx.SendChain(message.Text("ERROR: ", err))
|
|
return
|
|
}
|
|
ctx.SendChain(message.Text(gjson.Get(helper.BytesToString(data), "text").String()))
|
|
default:
|
|
params := ctx.GetWordSlices(string(toDealStr)).Get("slices").Array()
|
|
data, err := juejuezi(params[0].String(), params[1].String())
|
|
if err != nil {
|
|
ctx.SendChain(message.Text("ERROR: ", err))
|
|
return
|
|
}
|
|
ctx.SendChain(message.Text(gjson.Get(helper.BytesToString(data), "text").String()))
|
|
}
|
|
})
|
|
}
|
|
|
|
func juejuezi(verb, noun string) (data []byte, err error) {
|
|
juejueziStr := fmt.Sprintf("{\"verb\":\"%s\",\"noun\":\"%s\"}", verb, noun)
|
|
client := &http.Client{}
|
|
// 提交请求
|
|
request, err := http.NewRequest("POST", juejueziURL, strings.NewReader(juejueziStr))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
request.Header.Add("Referer", referer)
|
|
request.Header.Add("User-Agent", ua)
|
|
response, err := client.Do(request)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
data, err = io.ReadAll(response.Body)
|
|
response.Body.Close()
|
|
return
|
|
}
|