mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2025-12-22 08:10:09 +08:00
* 优化在两个命令中使用空格分隔的体验 - fortune的设置底图功能 - b14的加密功能 * 优化四个插件中使用空格分隔的体验 - 加密 - 哔哩哔哩推送 - 藏头诗 - 运势 * 优化并修正了上一个commit - 加上了因为复制粘贴疏忽又没有注意测试遗漏的`?` - 调整藏头诗和加密的正则触发,使其不必多此一举 - 删去了未被发现的测试代码 * - 删去了遗漏的Trim * 优化了更多插件中使用空格的体验 - 优化了music bilibili image_finder 中使用空格的体验 - 补上了plugin_bilibili中未实现的vup开头触发 - 为plugin_bilibili_parse输出的消息加上一个换行符,优化排版 * - 调整funny - 补回readme中bilibili_push的注释说明 * - 简化funny说明 * feat:抽塔罗牌 * 🎨 改进代码样式 * 加上一个换行符 * 🎨 改进代码样式 * - At用户 * 🎨 改进代码样式 * -改进抽塔罗牌 * typo: 小写struct名 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
78 lines
2.1 KiB
Go
78 lines
2.1 KiB
Go
package tarot
|
||
|
||
import (
|
||
"encoding/json"
|
||
"fmt"
|
||
"log"
|
||
"math/rand"
|
||
"strconv"
|
||
|
||
"github.com/FloatTech/zbputils/control"
|
||
"github.com/FloatTech/zbputils/ctxext"
|
||
"github.com/FloatTech/zbputils/file"
|
||
zero "github.com/wdvxdr1123/ZeroBot"
|
||
"github.com/wdvxdr1123/ZeroBot/message"
|
||
)
|
||
|
||
const bed = "https://gitcode.net/shudorcl/zbp-tarot/-/raw/master/"
|
||
|
||
type card struct {
|
||
Name string `json:"name"`
|
||
Info struct {
|
||
Description string `json:"description"`
|
||
ReverseDescription string `json:"reverseDescription"`
|
||
ImgURL string `json:"imgUrl"`
|
||
} `json:"info"`
|
||
}
|
||
type cardset = map[string]card
|
||
|
||
var cardMap = make(cardset, 256)
|
||
var reasons = []string{"您抽到的是~\n", "锵锵锵,塔罗牌的预言是~\n", "诶,让我看看您抽到了~\n"}
|
||
var position = []string{"正位", "逆位"}
|
||
|
||
func init() {
|
||
engine := control.Register("tarot", &control.Options{
|
||
DisableOnDefault: false,
|
||
Help: "塔罗牌\n" +
|
||
"- 抽塔罗牌\n",
|
||
// TODO 抽X张塔罗牌 解塔罗牌[牌名]
|
||
PublicDataFolder: "Tarot",
|
||
}).ApplySingle(ctxext.DefaultSingle)
|
||
|
||
engine.OnFullMatch("抽塔罗牌", ctxext.DoOnceOnSuccess(
|
||
func(ctx *zero.Ctx) bool {
|
||
tarotPath := engine.DataFolder() + "tarots.json"
|
||
data, err := file.GetLazyData(tarotPath, true, true)
|
||
if err != nil {
|
||
ctx.SendChain(message.Text("ERROR:", err))
|
||
return false
|
||
}
|
||
err = json.Unmarshal(data, &cardMap)
|
||
if err != nil {
|
||
panic(err)
|
||
}
|
||
log.Printf("[tarot]读取%d张塔罗牌", len(cardMap))
|
||
return true
|
||
},
|
||
)).SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) {
|
||
i := rand.Intn(22)
|
||
p := rand.Intn(2)
|
||
card := cardMap[(strconv.Itoa(i))]
|
||
name := card.Name
|
||
var info string
|
||
if p == 0 {
|
||
info = card.Info.Description
|
||
} else {
|
||
info = card.Info.ReverseDescription
|
||
}
|
||
if id := ctx.SendChain(
|
||
message.At(ctx.Event.UserID),
|
||
message.Text(reasons[rand.Intn(len(reasons))], position[p], " 的 ", name, "\n"),
|
||
message.Image(fmt.Sprintf(bed+"MajorArcana/%d.png", i)),
|
||
message.Text("\n其意义为:", info),
|
||
); id.ID() == 0 {
|
||
ctx.SendChain(message.Text("ERROR:可能被风控了"))
|
||
}
|
||
})
|
||
}
|