diff --git a/assets/gacha/3_background.png b/assets/gacha/3_background.png
new file mode 100644
index 0000000..0b9114b
Binary files /dev/null and b/assets/gacha/3_background.png differ
diff --git a/assets/gacha/3_star.png b/assets/gacha/3_star.png
new file mode 100644
index 0000000..fb224cc
Binary files /dev/null and b/assets/gacha/3_star.png differ
diff --git a/assets/gacha/4_background.png b/assets/gacha/4_background.png
new file mode 100644
index 0000000..d51b837
Binary files /dev/null and b/assets/gacha/4_background.png differ
diff --git a/assets/gacha/4_star.png b/assets/gacha/4_star.png
new file mode 100644
index 0000000..ea84b0e
Binary files /dev/null and b/assets/gacha/4_star.png differ
diff --git a/assets/gacha/5_background.png b/assets/gacha/5_background.png
new file mode 100644
index 0000000..2af1598
Binary files /dev/null and b/assets/gacha/5_background.png differ
diff --git a/assets/gacha/5_star.png b/assets/gacha/5_star.png
new file mode 100644
index 0000000..b4ee48a
Binary files /dev/null and b/assets/gacha/5_star.png differ
diff --git a/assets/gacha/background.png b/assets/gacha/background.png
new file mode 100644
index 0000000..2020bd3
Binary files /dev/null and b/assets/gacha/background.png differ
diff --git a/assets/gacha/type.json b/assets/gacha/type.json
new file mode 100644
index 0000000..df73b38
--- /dev/null
+++ b/assets/gacha/type.json
@@ -0,0 +1,110 @@
+{
+ "阿莫斯之弓": "弓",
+ "弹弓": "弓",
+ "笛剑": "单手剑",
+ "飞天御剑": "单手剑",
+ "翡玉法球": "法器",
+ "风鹰剑": "单手剑",
+ "弓藏": "弓",
+ "和璞鸢": "枪",
+ "黑缨枪": "枪",
+ "祭礼残章": "法器",
+ "祭礼大剑": "双手剑",
+ "祭礼弓": "弓",
+ "祭礼剑": "单手剑",
+ "绝弦": "弓",
+ "狼的末路": "双手剑",
+ "冷刃": "单手剑",
+ "黎明神剑": "单手剑",
+ "流浪乐章": "法器",
+ "魔导绪论": "法器",
+ "沐浴龙血的剑": "双手剑",
+ "神射手之誓": "弓",
+ "四风原典": "法器",
+ "讨龙英杰谭": "法器",
+ "天空之傲": "双手剑",
+ "天空之脊": "枪",
+ "天空之卷": "法器",
+ "天空之刃": "单手剑",
+ "天空之翼": "弓",
+ "铁影阔剑": "双手剑",
+ "西风大剑": "双手剑",
+ "西风剑": "单手剑",
+ "西风猎弓": "弓",
+ "西风秘典": "法器",
+ "西风长枪": "枪",
+ "匣里龙吟": "单手剑",
+ "匣里灭辰": "枪",
+ "鸦羽弓": "弓",
+ "以理服人": "双手剑",
+ "雨裁": "双手剑",
+ "昭心": "法器",
+ "钟剑": "双手剑",
+ "雾切之回光": "单手剑",
+ "飞雷之弦振": "弓",
+ "无工之剑": "双手剑",
+ "薙草之稻光": "枪",
+ "不灭月华": "法器",
+ "磐岩结绿": "单手剑",
+ "香菱": "火",
+ "重云": "冰",
+ "迪奥娜": "冰",
+ "罗莎莉亚": "冰",
+ "班尼特": "火",
+ "诺艾尔": "岩",
+ "七七": "冰",
+ "丽莎": "雷",
+ "凯亚": "冰",
+ "北斗": "雷",
+ "安柏": "火",
+ "烟绯": "火",
+ "琴": "风",
+ "砂糖": "风",
+ "神里绫华": "冰",
+ "芭芭拉": "水",
+ "莫娜": "水",
+ "菲谢尔": "雷",
+ "辛焱": "火",
+ "迪卢克": "火",
+ "雷泽": "雷",
+ "刻晴": "雷",
+ "行秋": "水",
+ "凝光": "岩",
+ "宵宫": "火",
+ "早柚": "风",
+ "雷电将军": "雷",
+ "九条裟罗": "雷",
+ "珊瑚宫心海": "水",
+ "埃洛伊": "冰",
+ "托马": "火",
+ "胡桃": "火",
+ "达达利亚": "水",
+ "冬极白星": "弓",
+ "恶王丸": "双手剑",
+ "断浪长鳍": "枪",
+ "曚云之月": "弓",
+ "尘世之锁": "法器",
+ "护摩之杖": "枪",
+ "终末嗟叹之诗": "弓",
+ "优菈": "冰",
+ "阿贝多": "岩",
+ "五郎": "岩",
+ "荒泷一斗": "岩",
+ "辰砂之纺锤": "单手剑",
+ "赤角石溃杵": "双手剑",
+ "苍古自由之誓": "单手剑",
+ "松籁响起之时": "双手剑",
+ "暗巷的酒与诗": "法器",
+ "暗巷猎手": "弓",
+ "暗巷闪光": "单手剑",
+ "幽夜华尔兹": "弓",
+ "千岩长枪": "枪",
+ "息灾": "枪",
+ "申鹤": "冰",
+ "云堇": "岩",
+ "魈": "风",
+ "贯虹之槊": "枪",
+ "千岩古剑": "双手剑",
+ "钟离": "岩",
+ "甘雨": "冰"
+}
\ No newline at end of file
diff --git a/assets/gacha/元素/冰.png b/assets/gacha/元素/冰.png
new file mode 100644
index 0000000..b958e0a
Binary files /dev/null and b/assets/gacha/元素/冰.png differ
diff --git a/assets/gacha/元素/岩.png b/assets/gacha/元素/岩.png
new file mode 100644
index 0000000..4327bf5
Binary files /dev/null and b/assets/gacha/元素/岩.png differ
diff --git a/assets/gacha/元素/水.png b/assets/gacha/元素/水.png
new file mode 100644
index 0000000..ec186aa
Binary files /dev/null and b/assets/gacha/元素/水.png differ
diff --git a/assets/gacha/元素/火.png b/assets/gacha/元素/火.png
new file mode 100644
index 0000000..3a22021
Binary files /dev/null and b/assets/gacha/元素/火.png differ
diff --git a/assets/gacha/元素/草.png b/assets/gacha/元素/草.png
new file mode 100644
index 0000000..18f718c
Binary files /dev/null and b/assets/gacha/元素/草.png differ
diff --git a/assets/gacha/元素/雷.png b/assets/gacha/元素/雷.png
new file mode 100644
index 0000000..5681cff
Binary files /dev/null and b/assets/gacha/元素/雷.png differ
diff --git a/assets/gacha/元素/风.png b/assets/gacha/元素/风.png
new file mode 100644
index 0000000..d4fc77d
Binary files /dev/null and b/assets/gacha/元素/风.png differ
diff --git a/assets/gacha/武器/不灭月华.png b/assets/gacha/武器/不灭月华.png
new file mode 100644
index 0000000..047c388
Binary files /dev/null and b/assets/gacha/武器/不灭月华.png differ
diff --git a/assets/gacha/武器/以理服人.png b/assets/gacha/武器/以理服人.png
new file mode 100644
index 0000000..25ede54
Binary files /dev/null and b/assets/gacha/武器/以理服人.png differ
diff --git a/assets/gacha/武器/冬极白星.png b/assets/gacha/武器/冬极白星.png
new file mode 100644
index 0000000..ba318b9
Binary files /dev/null and b/assets/gacha/武器/冬极白星.png differ
diff --git a/assets/gacha/武器/冷刃.png b/assets/gacha/武器/冷刃.png
new file mode 100644
index 0000000..98b67d8
Binary files /dev/null and b/assets/gacha/武器/冷刃.png differ
diff --git a/assets/gacha/武器/匣里灭辰.png b/assets/gacha/武器/匣里灭辰.png
new file mode 100644
index 0000000..22038bb
Binary files /dev/null and b/assets/gacha/武器/匣里灭辰.png differ
diff --git a/assets/gacha/武器/匣里龙吟.png b/assets/gacha/武器/匣里龙吟.png
new file mode 100644
index 0000000..c42c7ab
Binary files /dev/null and b/assets/gacha/武器/匣里龙吟.png differ
diff --git a/assets/gacha/武器/千岩古剑.png b/assets/gacha/武器/千岩古剑.png
new file mode 100644
index 0000000..fe22f2c
Binary files /dev/null and b/assets/gacha/武器/千岩古剑.png differ
diff --git a/assets/gacha/武器/千岩长枪.png b/assets/gacha/武器/千岩长枪.png
new file mode 100644
index 0000000..4cef894
Binary files /dev/null and b/assets/gacha/武器/千岩长枪.png differ
diff --git a/assets/gacha/武器/和璞鸢.png b/assets/gacha/武器/和璞鸢.png
new file mode 100644
index 0000000..f076f16
Binary files /dev/null and b/assets/gacha/武器/和璞鸢.png differ
diff --git a/assets/gacha/武器/四风原典.png b/assets/gacha/武器/四风原典.png
new file mode 100644
index 0000000..aca1b69
Binary files /dev/null and b/assets/gacha/武器/四风原典.png differ
diff --git a/assets/gacha/武器/天空之傲.png b/assets/gacha/武器/天空之傲.png
new file mode 100644
index 0000000..e803bb3
Binary files /dev/null and b/assets/gacha/武器/天空之傲.png differ
diff --git a/assets/gacha/武器/天空之刃.png b/assets/gacha/武器/天空之刃.png
new file mode 100644
index 0000000..6dcadc8
Binary files /dev/null and b/assets/gacha/武器/天空之刃.png differ
diff --git a/assets/gacha/武器/天空之卷.png b/assets/gacha/武器/天空之卷.png
new file mode 100644
index 0000000..5f2782e
Binary files /dev/null and b/assets/gacha/武器/天空之卷.png differ
diff --git a/assets/gacha/武器/天空之翼.png b/assets/gacha/武器/天空之翼.png
new file mode 100644
index 0000000..7c05afe
Binary files /dev/null and b/assets/gacha/武器/天空之翼.png differ
diff --git a/assets/gacha/武器/天空之脊.png b/assets/gacha/武器/天空之脊.png
new file mode 100644
index 0000000..8040768
Binary files /dev/null and b/assets/gacha/武器/天空之脊.png differ
diff --git a/assets/gacha/武器/尘世之锁.png b/assets/gacha/武器/尘世之锁.png
new file mode 100644
index 0000000..2593aa8
Binary files /dev/null and b/assets/gacha/武器/尘世之锁.png differ
diff --git a/assets/gacha/武器/幽夜华尔兹.png b/assets/gacha/武器/幽夜华尔兹.png
new file mode 100644
index 0000000..b950870
Binary files /dev/null and b/assets/gacha/武器/幽夜华尔兹.png differ
diff --git a/assets/gacha/武器/弓藏.png b/assets/gacha/武器/弓藏.png
new file mode 100644
index 0000000..624f5ba
Binary files /dev/null and b/assets/gacha/武器/弓藏.png differ
diff --git a/assets/gacha/武器/弹弓.png b/assets/gacha/武器/弹弓.png
new file mode 100644
index 0000000..d96f183
Binary files /dev/null and b/assets/gacha/武器/弹弓.png differ
diff --git a/assets/gacha/武器/息灾.png b/assets/gacha/武器/息灾.png
new file mode 100644
index 0000000..b283903
Binary files /dev/null and b/assets/gacha/武器/息灾.png differ
diff --git a/assets/gacha/武器/恶王丸.png b/assets/gacha/武器/恶王丸.png
new file mode 100644
index 0000000..2e1781d
Binary files /dev/null and b/assets/gacha/武器/恶王丸.png differ
diff --git a/assets/gacha/武器/护摩之杖.png b/assets/gacha/武器/护摩之杖.png
new file mode 100644
index 0000000..e98837e
Binary files /dev/null and b/assets/gacha/武器/护摩之杖.png differ
diff --git a/assets/gacha/武器/断浪长鳍.png b/assets/gacha/武器/断浪长鳍.png
new file mode 100644
index 0000000..d56b04a
Binary files /dev/null and b/assets/gacha/武器/断浪长鳍.png differ
diff --git a/assets/gacha/武器/无工之剑.png b/assets/gacha/武器/无工之剑.png
new file mode 100644
index 0000000..0eaa385
Binary files /dev/null and b/assets/gacha/武器/无工之剑.png differ
diff --git a/assets/gacha/武器/昭心.png b/assets/gacha/武器/昭心.png
new file mode 100644
index 0000000..5357d52
Binary files /dev/null and b/assets/gacha/武器/昭心.png differ
diff --git a/assets/gacha/武器/暗巷猎手.png b/assets/gacha/武器/暗巷猎手.png
new file mode 100644
index 0000000..cb2f6f4
Binary files /dev/null and b/assets/gacha/武器/暗巷猎手.png differ
diff --git a/assets/gacha/武器/暗巷的酒与诗.png b/assets/gacha/武器/暗巷的酒与诗.png
new file mode 100644
index 0000000..32bd361
Binary files /dev/null and b/assets/gacha/武器/暗巷的酒与诗.png differ
diff --git a/assets/gacha/武器/暗巷闪光.png b/assets/gacha/武器/暗巷闪光.png
new file mode 100644
index 0000000..a2e97b4
Binary files /dev/null and b/assets/gacha/武器/暗巷闪光.png differ
diff --git a/assets/gacha/武器/曚云之月.png b/assets/gacha/武器/曚云之月.png
new file mode 100644
index 0000000..05db99f
Binary files /dev/null and b/assets/gacha/武器/曚云之月.png differ
diff --git a/assets/gacha/武器/松籁响起之时.png b/assets/gacha/武器/松籁响起之时.png
new file mode 100644
index 0000000..1a5a8b2
Binary files /dev/null and b/assets/gacha/武器/松籁响起之时.png differ
diff --git a/assets/gacha/武器/沐浴龙血的剑.png b/assets/gacha/武器/沐浴龙血的剑.png
new file mode 100644
index 0000000..ed12210
Binary files /dev/null and b/assets/gacha/武器/沐浴龙血的剑.png differ
diff --git a/assets/gacha/武器/流浪乐章.png b/assets/gacha/武器/流浪乐章.png
new file mode 100644
index 0000000..f8829cc
Binary files /dev/null and b/assets/gacha/武器/流浪乐章.png differ
diff --git a/assets/gacha/武器/狼的末路.png b/assets/gacha/武器/狼的末路.png
new file mode 100644
index 0000000..8be7ab6
Binary files /dev/null and b/assets/gacha/武器/狼的末路.png differ
diff --git a/assets/gacha/武器/磐岩结绿.png b/assets/gacha/武器/磐岩结绿.png
new file mode 100644
index 0000000..d28d3e9
Binary files /dev/null and b/assets/gacha/武器/磐岩结绿.png differ
diff --git a/assets/gacha/武器/神射手之誓.png b/assets/gacha/武器/神射手之誓.png
new file mode 100644
index 0000000..e892f36
Binary files /dev/null and b/assets/gacha/武器/神射手之誓.png differ
diff --git a/assets/gacha/武器/祭礼剑.png b/assets/gacha/武器/祭礼剑.png
new file mode 100644
index 0000000..5ed6d1c
Binary files /dev/null and b/assets/gacha/武器/祭礼剑.png differ
diff --git a/assets/gacha/武器/祭礼大剑.png b/assets/gacha/武器/祭礼大剑.png
new file mode 100644
index 0000000..d23488d
Binary files /dev/null and b/assets/gacha/武器/祭礼大剑.png differ
diff --git a/assets/gacha/武器/祭礼弓.png b/assets/gacha/武器/祭礼弓.png
new file mode 100644
index 0000000..b28fd38
Binary files /dev/null and b/assets/gacha/武器/祭礼弓.png differ
diff --git a/assets/gacha/武器/祭礼残章.png b/assets/gacha/武器/祭礼残章.png
new file mode 100644
index 0000000..7cf352d
Binary files /dev/null and b/assets/gacha/武器/祭礼残章.png differ
diff --git a/assets/gacha/武器/笛剑.png b/assets/gacha/武器/笛剑.png
new file mode 100644
index 0000000..fd35844
Binary files /dev/null and b/assets/gacha/武器/笛剑.png differ
diff --git a/assets/gacha/武器/终末嗟叹之诗.png b/assets/gacha/武器/终末嗟叹之诗.png
new file mode 100644
index 0000000..659fbba
Binary files /dev/null and b/assets/gacha/武器/终末嗟叹之诗.png differ
diff --git a/assets/gacha/武器/绝弦.png b/assets/gacha/武器/绝弦.png
new file mode 100644
index 0000000..8d0f85c
Binary files /dev/null and b/assets/gacha/武器/绝弦.png differ
diff --git a/assets/gacha/武器/翡玉法球.png b/assets/gacha/武器/翡玉法球.png
new file mode 100644
index 0000000..ef77237
Binary files /dev/null and b/assets/gacha/武器/翡玉法球.png differ
diff --git a/assets/gacha/武器/苍古自由之誓.png b/assets/gacha/武器/苍古自由之誓.png
new file mode 100644
index 0000000..d9a1463
Binary files /dev/null and b/assets/gacha/武器/苍古自由之誓.png differ
diff --git a/assets/gacha/武器/薙草之稻光.png b/assets/gacha/武器/薙草之稻光.png
new file mode 100644
index 0000000..1a09e45
Binary files /dev/null and b/assets/gacha/武器/薙草之稻光.png differ
diff --git a/assets/gacha/武器/西风剑.png b/assets/gacha/武器/西风剑.png
new file mode 100644
index 0000000..e820e99
Binary files /dev/null and b/assets/gacha/武器/西风剑.png differ
diff --git a/assets/gacha/武器/西风大剑.png b/assets/gacha/武器/西风大剑.png
new file mode 100644
index 0000000..25502e4
Binary files /dev/null and b/assets/gacha/武器/西风大剑.png differ
diff --git a/assets/gacha/武器/西风猎弓.png b/assets/gacha/武器/西风猎弓.png
new file mode 100644
index 0000000..4d2ed96
Binary files /dev/null and b/assets/gacha/武器/西风猎弓.png differ
diff --git a/assets/gacha/武器/西风秘典.png b/assets/gacha/武器/西风秘典.png
new file mode 100644
index 0000000..f304002
Binary files /dev/null and b/assets/gacha/武器/西风秘典.png differ
diff --git a/assets/gacha/武器/西风长枪.png b/assets/gacha/武器/西风长枪.png
new file mode 100644
index 0000000..9a4286c
Binary files /dev/null and b/assets/gacha/武器/西风长枪.png differ
diff --git a/assets/gacha/武器/讨龙英杰谭.png b/assets/gacha/武器/讨龙英杰谭.png
new file mode 100644
index 0000000..4e265fb
Binary files /dev/null and b/assets/gacha/武器/讨龙英杰谭.png differ
diff --git a/assets/gacha/武器/贯虹之槊.png b/assets/gacha/武器/贯虹之槊.png
new file mode 100644
index 0000000..75b9231
Binary files /dev/null and b/assets/gacha/武器/贯虹之槊.png differ
diff --git a/assets/gacha/武器/赤角石溃杵.png b/assets/gacha/武器/赤角石溃杵.png
new file mode 100644
index 0000000..9ff6180
Binary files /dev/null and b/assets/gacha/武器/赤角石溃杵.png differ
diff --git a/assets/gacha/武器/辰砂之纺锤.png b/assets/gacha/武器/辰砂之纺锤.png
new file mode 100644
index 0000000..fd48690
Binary files /dev/null and b/assets/gacha/武器/辰砂之纺锤.png differ
diff --git a/assets/gacha/武器/钟剑.png b/assets/gacha/武器/钟剑.png
new file mode 100644
index 0000000..4b76bfc
Binary files /dev/null and b/assets/gacha/武器/钟剑.png differ
diff --git a/assets/gacha/武器/铁影阔剑.png b/assets/gacha/武器/铁影阔剑.png
new file mode 100644
index 0000000..3031f80
Binary files /dev/null and b/assets/gacha/武器/铁影阔剑.png differ
diff --git a/assets/gacha/武器/阿莫斯之弓.png b/assets/gacha/武器/阿莫斯之弓.png
new file mode 100644
index 0000000..560bdd5
Binary files /dev/null and b/assets/gacha/武器/阿莫斯之弓.png differ
diff --git a/assets/gacha/武器/雨裁.png b/assets/gacha/武器/雨裁.png
new file mode 100644
index 0000000..b3ccc4e
Binary files /dev/null and b/assets/gacha/武器/雨裁.png differ
diff --git a/assets/gacha/武器/雾切之回光.png b/assets/gacha/武器/雾切之回光.png
new file mode 100644
index 0000000..2609b1e
Binary files /dev/null and b/assets/gacha/武器/雾切之回光.png differ
diff --git a/assets/gacha/武器/风鹰剑.png b/assets/gacha/武器/风鹰剑.png
new file mode 100644
index 0000000..3f4adec
Binary files /dev/null and b/assets/gacha/武器/风鹰剑.png differ
diff --git a/assets/gacha/武器/飞天御剑.png b/assets/gacha/武器/飞天御剑.png
new file mode 100644
index 0000000..7b3a6bc
Binary files /dev/null and b/assets/gacha/武器/飞天御剑.png differ
diff --git a/assets/gacha/武器/飞雷之弦振.png b/assets/gacha/武器/飞雷之弦振.png
new file mode 100644
index 0000000..caba4a4
Binary files /dev/null and b/assets/gacha/武器/飞雷之弦振.png differ
diff --git a/assets/gacha/武器/魔导绪论.png b/assets/gacha/武器/魔导绪论.png
new file mode 100644
index 0000000..4d28eb8
Binary files /dev/null and b/assets/gacha/武器/魔导绪论.png differ
diff --git a/assets/gacha/武器/鸦羽弓.png b/assets/gacha/武器/鸦羽弓.png
new file mode 100644
index 0000000..f0c8533
Binary files /dev/null and b/assets/gacha/武器/鸦羽弓.png differ
diff --git a/assets/gacha/武器/黎明神剑.png b/assets/gacha/武器/黎明神剑.png
new file mode 100644
index 0000000..93d4555
Binary files /dev/null and b/assets/gacha/武器/黎明神剑.png differ
diff --git a/assets/gacha/武器/黑缨枪.png b/assets/gacha/武器/黑缨枪.png
new file mode 100644
index 0000000..f4237e3
Binary files /dev/null and b/assets/gacha/武器/黑缨枪.png differ
diff --git a/assets/gacha/类型/单手剑.png b/assets/gacha/类型/单手剑.png
new file mode 100644
index 0000000..4c157a2
Binary files /dev/null and b/assets/gacha/类型/单手剑.png differ
diff --git a/assets/gacha/类型/双手剑.png b/assets/gacha/类型/双手剑.png
new file mode 100644
index 0000000..af80a2e
Binary files /dev/null and b/assets/gacha/类型/双手剑.png differ
diff --git a/assets/gacha/类型/弓.png b/assets/gacha/类型/弓.png
new file mode 100644
index 0000000..547db77
Binary files /dev/null and b/assets/gacha/类型/弓.png differ
diff --git a/assets/gacha/类型/枪.png b/assets/gacha/类型/枪.png
new file mode 100644
index 0000000..6525d2b
Binary files /dev/null and b/assets/gacha/类型/枪.png differ
diff --git a/assets/gacha/类型/法器.png b/assets/gacha/类型/法器.png
new file mode 100644
index 0000000..a1ea711
Binary files /dev/null and b/assets/gacha/类型/法器.png differ
diff --git a/assets/gacha/角色/七七.png b/assets/gacha/角色/七七.png
new file mode 100644
index 0000000..f40e8b7
Binary files /dev/null and b/assets/gacha/角色/七七.png differ
diff --git a/assets/gacha/角色/丽莎.png b/assets/gacha/角色/丽莎.png
new file mode 100644
index 0000000..e63387f
Binary files /dev/null and b/assets/gacha/角色/丽莎.png differ
diff --git a/assets/gacha/角色/九条裟罗.png b/assets/gacha/角色/九条裟罗.png
new file mode 100644
index 0000000..61c1e52
Binary files /dev/null and b/assets/gacha/角色/九条裟罗.png differ
diff --git a/assets/gacha/角色/云堇.png b/assets/gacha/角色/云堇.png
new file mode 100644
index 0000000..dc5af5e
Binary files /dev/null and b/assets/gacha/角色/云堇.png differ
diff --git a/assets/gacha/角色/五郎.png b/assets/gacha/角色/五郎.png
new file mode 100644
index 0000000..608b763
Binary files /dev/null and b/assets/gacha/角色/五郎.png differ
diff --git a/assets/gacha/角色/优菈.png b/assets/gacha/角色/优菈.png
new file mode 100644
index 0000000..378869d
Binary files /dev/null and b/assets/gacha/角色/优菈.png differ
diff --git a/assets/gacha/角色/凝光.png b/assets/gacha/角色/凝光.png
new file mode 100644
index 0000000..75d71cd
Binary files /dev/null and b/assets/gacha/角色/凝光.png differ
diff --git a/assets/gacha/角色/凯亚.png b/assets/gacha/角色/凯亚.png
new file mode 100644
index 0000000..30c7f57
Binary files /dev/null and b/assets/gacha/角色/凯亚.png differ
diff --git a/assets/gacha/角色/刻晴.png b/assets/gacha/角色/刻晴.png
new file mode 100644
index 0000000..d163226
Binary files /dev/null and b/assets/gacha/角色/刻晴.png differ
diff --git a/assets/gacha/角色/北斗.png b/assets/gacha/角色/北斗.png
new file mode 100644
index 0000000..a30b853
Binary files /dev/null and b/assets/gacha/角色/北斗.png differ
diff --git a/assets/gacha/角色/埃洛伊.png b/assets/gacha/角色/埃洛伊.png
new file mode 100644
index 0000000..9c23a2c
Binary files /dev/null and b/assets/gacha/角色/埃洛伊.png differ
diff --git a/assets/gacha/角色/安柏.png b/assets/gacha/角色/安柏.png
new file mode 100644
index 0000000..ce6a00c
Binary files /dev/null and b/assets/gacha/角色/安柏.png differ
diff --git a/assets/gacha/角色/宵宫.png b/assets/gacha/角色/宵宫.png
new file mode 100644
index 0000000..6e82d93
Binary files /dev/null and b/assets/gacha/角色/宵宫.png differ
diff --git a/assets/gacha/角色/托马.png b/assets/gacha/角色/托马.png
new file mode 100644
index 0000000..821d918
Binary files /dev/null and b/assets/gacha/角色/托马.png differ
diff --git a/assets/gacha/角色/早柚.png b/assets/gacha/角色/早柚.png
new file mode 100644
index 0000000..a8d4f16
Binary files /dev/null and b/assets/gacha/角色/早柚.png differ
diff --git a/assets/gacha/角色/烟绯.png b/assets/gacha/角色/烟绯.png
new file mode 100644
index 0000000..f5e64f2
Binary files /dev/null and b/assets/gacha/角色/烟绯.png differ
diff --git a/assets/gacha/角色/珊瑚宫心海.png b/assets/gacha/角色/珊瑚宫心海.png
new file mode 100644
index 0000000..7b3736c
Binary files /dev/null and b/assets/gacha/角色/珊瑚宫心海.png differ
diff --git a/assets/gacha/角色/班尼特.png b/assets/gacha/角色/班尼特.png
new file mode 100644
index 0000000..e5e640b
Binary files /dev/null and b/assets/gacha/角色/班尼特.png differ
diff --git a/assets/gacha/角色/琴.png b/assets/gacha/角色/琴.png
new file mode 100644
index 0000000..fc75da6
Binary files /dev/null and b/assets/gacha/角色/琴.png differ
diff --git a/assets/gacha/角色/甘雨.png b/assets/gacha/角色/甘雨.png
new file mode 100644
index 0000000..580ab3b
Binary files /dev/null and b/assets/gacha/角色/甘雨.png differ
diff --git a/assets/gacha/角色/申鹤.png b/assets/gacha/角色/申鹤.png
new file mode 100644
index 0000000..ac1c362
Binary files /dev/null and b/assets/gacha/角色/申鹤.png differ
diff --git a/assets/gacha/角色/砂糖.png b/assets/gacha/角色/砂糖.png
new file mode 100644
index 0000000..935292b
Binary files /dev/null and b/assets/gacha/角色/砂糖.png differ
diff --git a/assets/gacha/角色/神里绫华.png b/assets/gacha/角色/神里绫华.png
new file mode 100644
index 0000000..0d8a51a
Binary files /dev/null and b/assets/gacha/角色/神里绫华.png differ
diff --git a/assets/gacha/角色/罗莎莉亚.png b/assets/gacha/角色/罗莎莉亚.png
new file mode 100644
index 0000000..184d3a2
Binary files /dev/null and b/assets/gacha/角色/罗莎莉亚.png differ
diff --git a/assets/gacha/角色/胡桃.png b/assets/gacha/角色/胡桃.png
new file mode 100644
index 0000000..45448a4
Binary files /dev/null and b/assets/gacha/角色/胡桃.png differ
diff --git a/assets/gacha/角色/芭芭拉.png b/assets/gacha/角色/芭芭拉.png
new file mode 100644
index 0000000..2bc0875
Binary files /dev/null and b/assets/gacha/角色/芭芭拉.png differ
diff --git a/assets/gacha/角色/荒泷一斗.png b/assets/gacha/角色/荒泷一斗.png
new file mode 100644
index 0000000..125e8bd
Binary files /dev/null and b/assets/gacha/角色/荒泷一斗.png differ
diff --git a/assets/gacha/角色/莫娜.png b/assets/gacha/角色/莫娜.png
new file mode 100644
index 0000000..a5090d7
Binary files /dev/null and b/assets/gacha/角色/莫娜.png differ
diff --git a/assets/gacha/角色/菲谢尔.png b/assets/gacha/角色/菲谢尔.png
new file mode 100644
index 0000000..9b832e1
Binary files /dev/null and b/assets/gacha/角色/菲谢尔.png differ
diff --git a/assets/gacha/角色/行秋.png b/assets/gacha/角色/行秋.png
new file mode 100644
index 0000000..1d9446f
Binary files /dev/null and b/assets/gacha/角色/行秋.png differ
diff --git a/assets/gacha/角色/诺艾尔.png b/assets/gacha/角色/诺艾尔.png
new file mode 100644
index 0000000..ab446ac
Binary files /dev/null and b/assets/gacha/角色/诺艾尔.png differ
diff --git a/assets/gacha/角色/辛焱.png b/assets/gacha/角色/辛焱.png
new file mode 100644
index 0000000..18b6487
Binary files /dev/null and b/assets/gacha/角色/辛焱.png differ
diff --git a/assets/gacha/角色/达达利亚.png b/assets/gacha/角色/达达利亚.png
new file mode 100644
index 0000000..55a9a6a
Binary files /dev/null and b/assets/gacha/角色/达达利亚.png differ
diff --git a/assets/gacha/角色/迪卢克.png b/assets/gacha/角色/迪卢克.png
new file mode 100644
index 0000000..66a4fe8
Binary files /dev/null and b/assets/gacha/角色/迪卢克.png differ
diff --git a/assets/gacha/角色/迪奥娜.png b/assets/gacha/角色/迪奥娜.png
new file mode 100644
index 0000000..3f726a4
Binary files /dev/null and b/assets/gacha/角色/迪奥娜.png differ
diff --git a/assets/gacha/角色/重云.png b/assets/gacha/角色/重云.png
new file mode 100644
index 0000000..f31dcde
Binary files /dev/null and b/assets/gacha/角色/重云.png differ
diff --git a/assets/gacha/角色/钟离.png b/assets/gacha/角色/钟离.png
new file mode 100644
index 0000000..2689ce1
Binary files /dev/null and b/assets/gacha/角色/钟离.png differ
diff --git a/assets/gacha/角色/阿贝多.png b/assets/gacha/角色/阿贝多.png
new file mode 100644
index 0000000..815c558
Binary files /dev/null and b/assets/gacha/角色/阿贝多.png differ
diff --git a/assets/gacha/角色/雷泽.png b/assets/gacha/角色/雷泽.png
new file mode 100644
index 0000000..05c4b50
Binary files /dev/null and b/assets/gacha/角色/雷泽.png differ
diff --git a/assets/gacha/角色/雷电将军.png b/assets/gacha/角色/雷电将军.png
new file mode 100644
index 0000000..fb33bdd
Binary files /dev/null and b/assets/gacha/角色/雷电将军.png differ
diff --git a/assets/gacha/角色/香菱.png b/assets/gacha/角色/香菱.png
new file mode 100644
index 0000000..b4c8685
Binary files /dev/null and b/assets/gacha/角色/香菱.png differ
diff --git a/assets/gacha/角色/魈.png b/assets/gacha/角色/魈.png
new file mode 100644
index 0000000..50d5488
Binary files /dev/null and b/assets/gacha/角色/魈.png differ
diff --git a/defs/gacha/gacha_info.py b/defs/gacha/gacha_info.py
new file mode 100644
index 0000000..433f8bc
--- /dev/null
+++ b/defs/gacha/gacha_info.py
@@ -0,0 +1,23 @@
+from defs.gacha.utils import Dict
+from ci import client
+
+BASE_URL = 'https://webstatic.mihoyo.com/hk4e/gacha_info/cn_gf01/%s'
+
+
+async def gacha_info_list():
+ res = await client.get(BASE_URL % 'gacha/list.json')
+ json_data = res.json(object_hook=Dict)
+
+ if json_data.retcode != 0:
+ raise Exception(json_data.message)
+
+ return json_data.data.list
+
+
+async def gacha_info(gacha_id):
+ res = await client.get(BASE_URL % gacha_id + '/zh-cn.json')
+
+ if res.status_code != 200:
+ raise Exception("error gacha_id: %s" % gacha_id)
+
+ return res.json(object_hook=Dict)
diff --git a/defs/gacha/utils.py b/defs/gacha/utils.py
new file mode 100644
index 0000000..c92d91d
--- /dev/null
+++ b/defs/gacha/utils.py
@@ -0,0 +1,60 @@
+import datetime
+import functools
+import inspect
+import json
+import os
+from sqlitedict import SqliteDict
+
+
+class Dict(dict):
+ __setattr__ = dict.__setitem__
+ __getattr__ = dict.__getitem__
+
+
+def dict_to_object(dict_obj):
+ if not isinstance(dict_obj, dict):
+ return dict_obj
+ inst = Dict()
+ for k, v in dict_obj.items():
+ inst[k] = dict_to_object(v)
+ return inst
+
+
+def filter_list(plist, func):
+ return list(filter(func, plist))
+
+
+def init_db(db_dir, db_name) -> SqliteDict:
+ return SqliteDict(os.path.join(db_dir, db_name),
+ encode=json.dumps,
+ decode=json.loads,
+ autocommit=True)
+
+
+def cache(ttl=datetime.timedelta(hours=1), **kwargs):
+ def wrap(func):
+ cache_data = {}
+
+ @functools.wraps(func)
+ async def wrapped(*args, **kw):
+ nonlocal cache_data
+ bound = inspect.signature(func).bind(*args, **kw)
+ bound.apply_defaults()
+ ins_key = '|'.join(['%s_%s' % (k, v) for k, v in bound.arguments.items()])
+ default_data = {"time": None, "value": None}
+ data = cache_data.get(ins_key, default_data)
+
+ now = datetime.datetime.now()
+ if not data['time'] or now - data['time'] > ttl: # noqa
+ try:
+ data['value'] = await func(*args, **kw)
+ data['time'] = now # noqa
+ cache_data[ins_key] = data
+ except Exception as e:
+ raise e
+
+ return data['value']
+
+ return wrapped
+
+ return wrap
diff --git a/defs/gacha/wish.py b/defs/gacha/wish.py
new file mode 100644
index 0000000..9586c79
--- /dev/null
+++ b/defs/gacha/wish.py
@@ -0,0 +1,139 @@
+import random
+import re
+from enum import Enum
+
+from defs.gacha.utils import dict_to_object
+from defs.gacha.wish_user import wish_user
+
+
+class GACHA_TYPE(Enum):
+ activity = 301 # 限定卡池
+ activity2 = 400 # 限定卡池
+ weapon = 302 # 武器卡池
+ permanent = 200 # 常驻卡池
+
+
+def gacha_type_by_name(name):
+ if re.search(r'^[限活][定动]池?$', name, re.I):
+ return GACHA_TYPE.activity.value
+ if re.search(r'^[限活][定动]池?2$', name, re.I):
+ return GACHA_TYPE.activity2.value
+ if re.search(r'^[武][器]池?$', name, re.I):
+ return GACHA_TYPE.weapon.value
+ if re.search(r'^[常普][驻通规]池?$', name, re.I):
+ return GACHA_TYPE.permanent.value
+ return 0
+
+
+def is_character_gacha(gacha_type):
+ return gacha_type == GACHA_TYPE.activity.value or gacha_type == GACHA_TYPE.activity2.value or gacha_type == GACHA_TYPE.permanent.value
+
+
+def random_int():
+ return random.randint(1, 10000)
+
+
+# 抽卡概率来自https://www.bilibili.com/read/cv10468091
+# 角色抽卡概率
+def character_probability(rank, count):
+ ret = 0
+ if rank == 5 and count <= 73:
+ ret = 60
+ elif rank == 5 and count >= 74:
+ ret = 60 + 600 * (count - 73)
+ elif rank == 4 and count <= 8:
+ ret = 510
+ elif rank == 4 and count >= 9:
+ ret = 510 + 5100 * (count - 8)
+ return ret
+
+
+# 武器抽卡概率
+def weapon_probability(rank, count):
+ ret = 0
+ if rank == 5 and count <= 62:
+ ret = 70
+ elif rank == 5 and count <= 73:
+ ret = 70 + 700 * (count - 62)
+ elif rank == 5 and count >= 74:
+ ret = 7770 + 350 * (count - 73)
+ elif rank == 4 and count <= 7:
+ ret = 600
+ elif rank == 4 and count == 8:
+ ret = 6600
+ elif rank == 4 and count >= 9:
+ ret = 6600 + 3000 * (count - 8)
+ return ret
+
+
+class wish:
+ user: wish_user
+
+ def __init__(self, uid, gacha_type, gacha_pool):
+ self.uid = uid
+ self.gacha_pool = gacha_pool
+ self.user = wish_user(uid, gacha_type)
+ self.gacha_type = gacha_type
+ self.probability_fn = is_character_gacha(gacha_type) and character_probability or weapon_probability
+
+ def get_rank(self):
+ value = random_int()
+ index_5 = self.probability_fn(5, self.user.count_5)
+ index_4 = self.probability_fn(4, self.user.count_4) + index_5
+ if value <= index_5:
+ return 5
+ elif value <= index_4:
+ return 4
+ else:
+ return 3
+
+ def is_up(self, rank):
+ if self.gacha_type == GACHA_TYPE.permanent.value:
+ return False
+ elif self.gacha_type == GACHA_TYPE.weapon.value:
+ return random_int() <= 7500
+ else:
+ return random_int() <= 5000 or (rank == 5 and self.user.is_up)
+
+ def once(self):
+ # 判定星级
+ rank = self.get_rank()
+ # 是否为up
+ is_up = self.is_up(rank)
+
+ if rank != 5:
+ # 不是5星则计数器+1
+ self.user.inc_count(5)
+ if rank == 4:
+ # 如果是4星 则4星计数器重置
+ self.user.count_4 = 1
+ else:
+ self.user.inc_count(4)
+ else:
+ self.user.count_5 = 1
+ self.user.inc_count(4)
+ if self.gacha_type == GACHA_TYPE.activity.value or self.gacha_type == GACHA_TYPE.activity2.value or self.gacha_type == GACHA_TYPE.weapon.value:
+ # 如果是限定池或者武器池
+ self.user.is_up = not is_up
+
+ res = {
+ 'rank': rank,
+ 'is_up': is_up,
+ 'count_5': self.user.count_5,
+ 'count_4': self.user.count_4
+ }
+ if rank == 3:
+ res['data'] = random.choice(self.gacha_pool.r3_prob_list)
+ else:
+ if is_up:
+ res['data'] = random.choice(self.gacha_pool['r%s_up_items' % rank])
+ else:
+ res['data'] = random.choice(self.gacha_pool['r%s_prob_list' % rank])
+
+ return dict_to_object(res)
+
+ async def ten(self):
+ res = []
+ for i in range(0, 10):
+ res.append(self.once())
+ return res
diff --git a/defs/gacha/wish_ui.py b/defs/gacha/wish_ui.py
new file mode 100644
index 0000000..cf70d8a
--- /dev/null
+++ b/defs/gacha/wish_ui.py
@@ -0,0 +1,108 @@
+import json
+import copy
+from os import sep
+from pathlib import Path
+from PIL import Image, PngImagePlugin
+from defs.gacha.utils import filter_list
+
+assets_dir = f'assets{sep}gacha'
+
+with open(f'{assets_dir}{sep}type.json', 'r', encoding="utf-8") as fp:
+ type_json = json.load(fp)
+
+cache_img = {}
+cache_item = {}
+
+
+class wish_ui:
+ data: list
+ img: PngImagePlugin.PngImageFile
+
+ def __init__(self, wish_result):
+ self.data = isinstance(wish_result, list) and wish_result or [wish_result]
+ self.sort_data()
+ self.img = wish_ui.get_assets('background.png')
+
+ def sort_data(self):
+ new = sorted(self.data, key=lambda x: x.rank, reverse=True)
+ c = filter_list(new, lambda x: x.data.item_type == '角色')
+ w = filter_list(new, lambda x: x.data.item_type == '武器')
+ self.data = c + w
+
+ @staticmethod
+ def get_assets(path) -> PngImagePlugin.PngImageFile:
+ base_path = assets_dir
+
+ cache = cache_img.get(path)
+ if cache:
+ return copy.deepcopy(cache)
+ else:
+ cache_img[path] = Image.open(f'{base_path}{sep}{path}')
+ return wish_ui.get_assets(path)
+
+ @staticmethod
+ def item_bg(rank):
+ return wish_ui.get_assets('%s_background.png' % str(rank)).resize((143, 845))
+
+ @staticmethod
+ def rank_icon(rank):
+ return wish_ui.get_assets('%s_star.png' % str(rank))
+
+ @staticmethod
+ async def create_item(rank, item_type, name, element):
+ if cache_item.get(name):
+ return cache_item[name]
+ bg = wish_ui.item_bg(rank)
+ item_img = wish_ui.get_assets(Path(item_type) / (name + '.png'))
+ rank_img = wish_ui.rank_icon(rank).resize((119, 30))
+
+ if item_type == '角色':
+ item_img = item_img.resize((item_img.size[0] + 12, item_img.size[1] + 45))
+ item_img.alpha_composite(rank_img, (4, 510))
+
+ item_type_icon = wish_ui.get_assets(Path('元素') / (element + '.png')).resize((80, 80))
+ item_img.alpha_composite(item_type_icon, (18, 420))
+ bg.alpha_composite(item_img, (3, 125))
+
+ else:
+ bg.alpha_composite(item_img, (3, 240))
+ bg.alpha_composite(rank_img, (9, 635))
+
+ item_type_icon = type_json.get(name)
+ if item_type_icon:
+ item_type_icon = wish_ui.get_assets(Path('类型') / (item_type_icon + '.png')).resize((100, 100))
+
+ bg.alpha_composite(item_type_icon, (18, 530))
+ cache_item[name] = bg
+ return bg
+
+ async def ten(self) -> PngImagePlugin.PngImageFile:
+ i = 0
+ for wish in self.data:
+ i += 1
+ rank = wish.rank
+ name = wish.data.item_name
+ item_type = wish.data.item_type
+ element = wish.data.get('item_attr') or type_json[name]
+ i_img = await wish_ui.create_item(rank, item_type, name, element)
+ self.img.alpha_composite(i_img, (105 + (i_img.size[0] * i), 123))
+ self.img.thumbnail((1024, 768))
+
+ img = Image.new("RGB", self.img.size, (255, 255, 255))
+ img.paste(self.img, mask=self.img.split()[3])
+ return img
+
+ @classmethod
+ async def ten_to_img(cls, wish_result): # 十连抽
+ img = await cls(wish_result).ten()
+ img.save(f"temp{sep}gacha.png")
+ return f"temp{sep}gacha.png"
+
+ @classmethod
+ async def ten_to_img_xn(cls, wish_result_xn):
+ img = Image.new("RGB", (1024, 575 * len(wish_result_xn)), (255, 255, 255))
+ for index, wish_result in enumerate(wish_result_xn):
+ item_img = await cls(wish_result).ten()
+ img.paste(item_img, (0, 575 * index))
+ img.save(f"temp{sep}gacha.png")
+ return f"temp{sep}gacha.png"
diff --git a/defs/gacha/wish_user.py b/defs/gacha/wish_user.py
new file mode 100644
index 0000000..4e2fa20
--- /dev/null
+++ b/defs/gacha/wish_user.py
@@ -0,0 +1,61 @@
+from defs.gacha.utils import init_db
+
+DB = init_db("temp", 'gacha.sqlite')
+
+
+class wish_user:
+ def __init__(self, uid, gacha_type):
+ self.uid = uid
+ self.gacha_type = gacha_type
+ self._get_data()
+
+ @property
+ def count_5(self) -> int:
+ return self.get_prob_info().get('count_5', 1)
+
+ @property
+ def count_4(self) -> int:
+ return self.get_prob_info().get('count_4', 1)
+
+ @count_5.setter
+ def count_5(self, count):
+ self.update_prob_info({'count_5': count})
+
+ @count_4.setter
+ def count_4(self, count):
+ self.update_prob_info({'count_4': count})
+
+ @property
+ def is_up(self):
+ return self.get_prob_info().get('is_up', False)
+
+ @is_up.setter
+ def is_up(self, up):
+ self.update_prob_info({'is_up': up})
+
+ def inc_count(self, rank):
+ key = 'count_' + str(rank)
+ inc = self.get_prob_info().get(key, 1)
+ self.update_prob_info({key: inc + 1})
+
+ def _get_data(self):
+ self.data = DB.get('%s_%s' % (self.uid, self.gacha_type), {})
+
+ def save(self):
+ DB['%s_%s' % (self.uid, self.gacha_type)] = self.data
+
+ def get_prob_info(self):
+ self._get_data()
+ return self.data.get('prob_info', {})
+
+ def set_prob_info(self, obj):
+ if self.data.get('prob_info'):
+ self.data['prob_info'].update(obj)
+ else:
+ self.data['prob_info'] = obj
+
+ def update_prob_info(self, obj):
+ prob_info = self.get_prob_info()
+ prob_info.update(obj)
+ self.set_prob_info(prob_info)
+ self.save()
diff --git a/defs/guess_voice.py b/defs/guess_voice.py
index d1bc4c0..cdbdd15 100644
--- a/defs/guess_voice.py
+++ b/defs/guess_voice.py
@@ -8,20 +8,13 @@ from os.path import exists
from apscheduler.triggers.date import DateTrigger
from pyrogram import Client
from pyrogram.types import Message
-from sqlitedict import SqliteDict
+from defs.gacha.utils import init_db
from ci import scheduler, app
data_path = os.path.join("assets", "voice")
-def init_db(db_dir, db_name) -> SqliteDict:
- return SqliteDict(os.path.join(db_dir, db_name),
- encode=json.dumps,
- decode=json.loads,
- autocommit=True)
-
-
def get_chars(data: list) -> list:
data_ = []
for i in data:
diff --git a/plugins/gacha.py b/plugins/gacha.py
new file mode 100644
index 0000000..880c682
--- /dev/null
+++ b/plugins/gacha.py
@@ -0,0 +1,46 @@
+import traceback
+from datetime import timedelta
+
+from pyrogram import Client
+from pyrogram.types import Message
+from defs.gacha.utils import filter_list, cache
+from defs.gacha.gacha_info import gacha_info_list, gacha_info
+from defs.gacha.wish import wish, gacha_type_by_name
+from defs.gacha.wish_ui import wish_ui
+
+
+async def gacha_msg(client: Client, message: Message):
+ try:
+ gacha_type, gacha_name, gacha_data = await handle_msg(client, message)
+ except Exception as e:
+ if str(e).find("不存在此卡池") != -1:
+ return await message.reply(str(e))
+ else:
+ traceback.print_exc()
+ return await message.reply("出现错误,请联系管理员")
+ wish_info = await wish(message.from_user.id, gacha_type, gacha_data).ten()
+ img = await wish_ui.ten_to_img(wish_info)
+ await message.reply_photo(img)
+
+
+async def handle_msg(client: Client, message: Message):
+ msg = message.text.replace("抽卡", "").strip() or '限定'
+ if msg == '2':
+ msg = '限定2'
+ gacha_type = gacha_type_by_name(msg)
+ if not gacha_type:
+ raise Exception('不存在此卡池: %s' % msg)
+ gacha_name, gacha_data = await gacha_pool(gacha_type=gacha_type)
+ return gacha_type, gacha_name, gacha_data
+
+
+@cache(ttl=timedelta(hours=24))
+async def gacha_pool(gacha_type):
+ data = await gacha_info_list()
+ f = lambda x: x.gacha_type == gacha_type
+ gacha_data = sorted(filter_list(data, f), key=lambda x: x.end_time)[-1]
+ gacha_id = gacha_data.gacha_id
+ gacha_name = gacha_data.gacha_name
+ gacha_type = gacha_data.gacha_type
+ gacha_data = await gacha_info(gacha_id)
+ return gacha_name, gacha_data
diff --git a/plugins/process.py b/plugins/process.py
index 24a16e3..f617fb0 100644
--- a/plugins/process.py
+++ b/plugins/process.py
@@ -9,6 +9,7 @@ from pyrogram import filters as Filters
from ci import me
from defs.guess_voice import get_chars
from plugins.enemies import enemies_msg
+from plugins.gacha import gacha_msg
from plugins.guess_voice import guess_voice, process_guess
from plugins.mys2 import mys2_msg, mys2_qun_msg
from plugins.mihoyo import mihoyo_msg, mihoyo_qun_msg
@@ -132,7 +133,7 @@ async def process_group_msg(client: Client, message: Message):
await log(client, message, '查询武器资料')
return
# 副本武器
- if text[-2:] == '武器':
+ if message.text == "武器":
await wq_msg(client, message)
await log(client, message, '查询副本武器')
# 黄历
@@ -196,6 +197,8 @@ async def process_group_msg(client: Client, message: Message):
await mihoyo_qun_msg(client, message)
if text.startswith("猜语音"):
await guess_voice(client, message)
+ if text.startswith("抽卡"):
+ await gacha_msg(client, message)
# 处理猜语音游戏
await process_guess(client, message)
diff --git a/plugins/start.py b/plugins/start.py
index 48f3131..643defe 100644
--- a/plugins/start.py
+++ b/plugins/start.py
@@ -2,7 +2,7 @@ from ci import admin_id
from pyrogram import Client
from pyrogram.types import Message, CallbackQuery, InlineKeyboardMarkup, InlineKeyboardButton
-HELP_MSG_PRE = 'PaimonBot 0.3.5beta By Xtao-Labs\n\n' \
+HELP_MSG_PRE = 'PaimonBot 0.3.6beta By Xtao-Labs\n\n' \
'🔅 以下是小派蒙我学会了的功能(部分):\n'
HELP_MSG = """① [武器/今日武器] 查看今日武器材料和武器
② [天赋/今日天赋] 查看今日天赋材料和角色
@@ -22,14 +22,18 @@ HELP_MSG = """① [武器/今日武器] 查看今日武器材料和武器
💠 食物查询 甜甜花/甜甜花酿鸡
⑩ [圣遗物查询 圣遗物套装名] 查看圣遗物套装资料
💠 圣遗物查询 逆飞的流星
+(11) [抽卡] 抽卡
+ 💠 抽卡 武器
+ 💠 抽卡 常驻
======
-(11) [原神黄历] 查看随机生成的原神黄历
-(12) [活动列表] 查看今日活动列表和祈愿列表
-(13) [圣遗物评分] 我也想拥有这种分数的圣遗物(切实)
-(14) [哪里有 (资源名)] 查看资源的位置
-(15) [资源列表] 查看原神所有资源(私聊)
-(16) [原神猜语音] 和群友一起玩猜语音小游戏吧!(群聊)
-(17) [米游社/mihoyo] 米游社/mihoyo相关功能(替换)
+(12) [原神黄历] 查看随机生成的原神黄历
+(13) [活动列表] 查看今日活动列表和祈愿列表
+(14) [圣遗物评分] 我也想拥有这种分数的圣遗物(切实)
+(15) [哪里有 (资源名)] 查看资源的位置
+(16) [资源列表] 查看原神所有资源(私聊)
+(17) [猜语音] 和群友一起玩猜语音小游戏吧!(群聊)
+ 💠 猜语音 无尽模式
+(18) [米游社/mihoyo] 米游社/mihoyo相关功能(替换)
💠 米游社添加(私聊)
💠 米游社推送开启/关闭
💠 米游社自动签到开启/关闭