koishi-plugin-ggcevo 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/lib/index.js +10 -26
  2. package/package.json +16 -3
  3. package/readme.md +103 -0
package/lib/index.js CHANGED
@@ -284,28 +284,16 @@ function apply(ctx, config) {
284
284
  if (alreadyBound) {
285
285
  return `<quote id="${session.messageId}"/>❌ 您已绑定过该游戏句柄。`;
286
286
  }
287
- try {
288
- await makeHttpRequest(
289
- ctx,
290
- `https://api.sc2arcade.com/profiles/${regionId}/${realmId}/${profileId}`
291
- );
292
- const isFirstHandle = userHandles.length === 0;
293
- await ctx.database.create("sc2arcade_player", {
294
- userId: session.userId,
295
- regionId,
296
- realmId,
297
- profileId,
298
- isActive: isFirstHandle,
299
- createdAt: /* @__PURE__ */ new Date()
300
- });
301
- return `<quote id="${session.messageId}"/>✅ 您已成功绑定游戏句柄${isFirstHandle ? "并设为当前使用" : ""}并已通过验证。`;
302
- } catch (error) {
303
- if (error.response && error.response.status === 404) {
304
- return `<quote id="${session.messageId}"/>❌ 绑定失败, 您尝试绑定的游戏句柄不存在。`;
305
- }
306
- console.error("查询或绑定失败:", error);
307
- return "⚠️ 服务器繁忙, 请稍后尝试。";
308
- }
287
+ const isFirstHandle = userHandles.length === 0;
288
+ await ctx.database.create("sc2arcade_player", {
289
+ userId: session.userId,
290
+ regionId,
291
+ realmId,
292
+ profileId,
293
+ isActive: isFirstHandle,
294
+ createdAt: /* @__PURE__ */ new Date()
295
+ });
296
+ return `<quote id="${session.messageId}"/>✅ 您已成功绑定游戏句柄${isFirstHandle ? "并设为当前使用" : ""}。`;
309
297
  });
310
298
  ctx.command("sc2arcade/句柄 [user]", "查询已经绑定的星际争霸2游戏句柄").usage("user 参数为选填项").example("/句柄, 查询自己绑定的游戏句柄\n /句柄 @用户, 查询其他用户绑定的游戏句柄").action(async (argv, user) => {
311
299
  const session = argv.session;
@@ -1906,10 +1894,6 @@ function formatRecentEvents(events) {
1906
1894
  ).join(", ");
1907
1895
  }
1908
1896
  __name(formatRecentEvents, "formatRecentEvents");
1909
- async function makeHttpRequest(ctx, url) {
1910
- return await ctx.http.get(url);
1911
- }
1912
- __name(makeHttpRequest, "makeHttpRequest");
1913
1897
  function formatMapMonitorMessage(currentData, previousRecord) {
1914
1898
  const previousData = JSON.parse(previousRecord.lastState);
1915
1899
  const lines = [];
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-ggcevo",
3
- "description": "",
4
- "version": "1.0.0",
3
+ "description": "GGCEVO 综合插件:星际争霸2游戏句柄绑定 + 签到/抽奖/兑换/背包/活动系统等虚拟物品玩法",
4
+ "version": "1.0.2",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [
@@ -12,8 +12,21 @@
12
12
  "keywords": [
13
13
  "chatbot",
14
14
  "koishi",
15
- "plugin"
15
+ "plugin",
16
+ "starcraft2",
17
+ "签到",
18
+ "抽奖",
19
+ "兑换",
20
+ "活动"
16
21
  ],
22
+ "author": "",
23
+ "koishi": {
24
+ "service": {
25
+ "required": [
26
+ "database"
27
+ ]
28
+ }
29
+ },
17
30
  "peerDependencies": {
18
31
  "koishi": "^4.18.7"
19
32
  }
package/readme.md CHANGED
@@ -2,4 +2,107 @@
2
2
 
3
3
  [![npm](https://img.shields.io/npm/v/koishi-plugin-ggcevo?style=flat-square)](https://www.npmjs.com/package/koishi-plugin-ggcevo)
4
4
 
5
+ GGCEVO 综合插件,包含两大功能模块:
5
6
 
7
+ - **星际争霸2 句柄管理**(sc2arcade 部分):绑定、查询、切换、解绑游戏句柄。
8
+ - **签到 / 虚拟物品玩法**(ggcevo 部分):每日签到、抽奖、物品兑换、背包、活动系统等。
9
+
10
+ ## 安装
11
+
12
+ 在 Koishi 控制台中搜索 `ggcevo` 并安装,或使用命令行:
13
+
14
+ ```bash
15
+ npm install koishi-plugin-ggcevo
16
+ ```
17
+
18
+ > 需要依赖 `koishi` 核心及一个数据库驱动(如 `@koishijs/plugin-database-sqlite`)。
19
+
20
+ ## 配置项
21
+
22
+ | 配置项 | 类型 | 默认值 | 说明 |
23
+ | --- | --- | --- | --- |
24
+ | `mapMonitorEnabled` | `boolean` | `false` | 是否启用地图检测定时任务 |
25
+ | `mapMonitorGroups` | `string[]` | `[]` | 地图检测广播的群组 ID 列表 |
26
+ | `mapMonitorMapIds` | `number[]` | `[]` | 需要检测的地图 ID 列表 |
27
+
28
+ ## 指令列表
29
+
30
+ ### 星际争霸2 句柄(sc2arcade)
31
+
32
+ | 指令 | 别名 | 说明 |
33
+ | --- | --- | --- |
34
+ | `绑定 [handle]` | 绑定句柄 | 绑定星际争霸2游戏句柄。句柄格式:`[区域ID]-S2-[服务器ID]-[档案ID]`。**不在线校验句柄是否真实存在**,仅做本地重复校验 |
35
+ | `句柄 [user]` | — | 查询已绑定的游戏句柄(`user` 选填,可查他人) |
36
+ | `切换 [index]` | — | 切换正在使用的游戏句柄 |
37
+ | `查询 [handle]` | — | 查询某游戏句柄是否已被绑定 |
38
+ | `解绑 [index]` | 解绑句柄 | 解除绑定某个游戏句柄 |
39
+
40
+ ### 签到与虚拟物品(ggcevo)
41
+
42
+ | 指令 | 别名 | 权限 | 说明 |
43
+ | --- | --- | --- | --- |
44
+ | `签到` | — | — | 每日签到,获取奖励并发放签到券/补签券等 |
45
+ | `兑换 <name>` | — | — | 使用兑换券兑换指定物品。消耗兑换券数量随物品品质而定(T3皮肤=3、T2=4、T1=5、T3宠物=3、T2=4、T1=5、T0宠物=6、入场特效=5、角色冠名权=10、赎罪券=2) |
46
+ | `抽奖` | — | — | 抽奖。选项:`-p <poolId>` 奖池ID,`-c <count>` 抽奖次数。各池消耗:金币池=100金币/次、普通池=1咕咕币/次、皮肤池/宠物池=3兑换券/次 |
47
+ | `背包` | — | — | 查看自己的物品背包 |
48
+ | `个人信息` | — | — | 查看自己的签到统计与个人信息 |
49
+ | `给予 <targetId> <itemId> <count>` | — | 3 | 给予指定用户物品(管理指令) |
50
+ | `抽奖概率` | — | — | 查看各奖池的抽奖概率与保底说明 |
51
+ | `签到奖励` | — | — | 查看签到奖励规则说明 |
52
+ | `兑换列表` | 兑换表 | — | 查看可兑换物品列表(含皮肤、宠物、入场特效、角色冠名权、赎罪券及各自兑换券消耗;限定物品不可兑换) |
53
+ | `创建活动` | — | 3 | 创建活动。选项:`-n 名称 -d 描述 -r 奖励物品ID -a 数量 -s 开始时间 -e 结束时间 -m 领取上限 -g 限制群聊ID` |
54
+ | `领取活动 [activityId]` | — | — | 领取指定(或最新)活动奖励 |
55
+ | `活动列表` | — | — | 查看当前所有活动 |
56
+ | `补签` | — | — | 使用补签券补签漏签的日期 |
57
+ | `使用 <name>` | — | — | 使用指定物品(如赎罪券等) |
58
+
59
+ ## 物品与奖池
60
+
61
+ ### 物品(ItemConfig)
62
+
63
+ | ID | 名称 |
64
+ | --- | --- |
65
+ | 1 | 金币 |
66
+ | 2 | 咕咕币 |
67
+ | 3 | 兑换券 |
68
+ | 9 | 补签券 |
69
+ | 23 | 赎罪券 |
70
+
71
+ ### 奖池(LotteryPoolConfig)
72
+
73
+ | ID | 名称 |
74
+ | --- | --- |
75
+ | 1 | 金币池 |
76
+ | 2 | 普通池 |
77
+ | 3 | 皮肤池 |
78
+ | 4 | 宠物池 |
79
+
80
+ ## 数据库表
81
+
82
+ 插件使用前缀 `sc2arcade_`(句柄部分)与 `ggcevo_`(签到/物品部分):
83
+
84
+ - `sc2arcade_player` — 用户句柄绑定记录(主键 `id`)
85
+ - `sc2arcade_map_monitor` — 地图检测状态
86
+ - `ggcevo_backpack` — 背包(主键 `user_id` + `item_id`)
87
+ - `ggcevo_signin_summary` — 签到汇总(主键 `user_id`)
88
+ - `ggcevo_signin_log` — 签到日志
89
+ - `ggcevo_lottery_log` — 抽奖记录
90
+ - `ggcevo_lottery_status` — 抽奖状态/保底(主键 `user_id` + `lottery_id`)
91
+ - `ggcevo_exchange_log` — 兑换记录
92
+ - `ggcevo_activity` — 活动配置
93
+ - `ggcevo_activity_claim_log` — 活动领取记录(主键 `activity_id` + `user_id`)
94
+
95
+ ## 更新日志
96
+
97
+ ### v1.0.1
98
+
99
+ - 移除绑定句柄时的在线检测判定(不再调用 `api.sc2arcade.com` 校验句柄是否存在),仅保留本地重复绑定校验。
100
+ - 数据库主键调整(修复并发重复插入风险):
101
+ - `ggcevo_backpack`:主键由自增 `id` 改为复合主键 `(user_id, item_id)`
102
+ - `ggcevo_lottery_status`:主键由自增 `id` 改为复合主键 `(user_id, lottery_id)`
103
+ - `ggcevo_activity_claim_log`:主键由自增 `id` 改为复合主键 `(activity_id, user_id)`
104
+ - 因 SQLite 不支持直接修改主键,从旧版本升级时**需先迁移数据**:停止 Koishi 进程,对 `data/koishi.db` 执行「重命名旧表 → 按新复合主键建表 → 聚合去重导入 → 删除旧表」的 SQL,再部署新版。全新安装无需迁移。
105
+
106
+ ## 许可证
107
+
108
+ MIT