koishi-plugin-xxck-1 0.2.13 → 0.2.15
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.
- package/lib/index.d.ts +6 -0
- package/lib/index.js +105 -11
- package/package.json +1 -1
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -1793,6 +1793,18 @@ async function doBattleAgree(ctx, session) {
|
|
|
1793
1793
|
const power2 = star * 100 + Math.floor(Math.random() * 51);
|
|
1794
1794
|
const winQQ = power1 >= power2 ? p1 : p2;
|
|
1795
1795
|
const loseQQ = winQQ === p1 ? p2 : p1;
|
|
1796
|
+
const groupId = session.guildId;
|
|
1797
|
+
let name1 = p1, name2 = p2;
|
|
1798
|
+
try {
|
|
1799
|
+
if (groupId) {
|
|
1800
|
+
const m1 = await ctx.database.get("gacha_group_member", { group_id: groupId, qq: p1 });
|
|
1801
|
+
if (m1.length) name1 = m1[0].card || m1[0].group_nickname || p1;
|
|
1802
|
+
const m2 = await ctx.database.get("gacha_group_member", { group_id: groupId, qq: p2 });
|
|
1803
|
+
if (m2.length) name2 = m2[0].card || m2[0].group_nickname || p2;
|
|
1804
|
+
}
|
|
1805
|
+
} catch (e) {
|
|
1806
|
+
}
|
|
1807
|
+
let winName = winQQ === p1 ? name1 : name2;
|
|
1796
1808
|
let winData = await ctx.database.get("gacha_battle_user", { qq: winQQ });
|
|
1797
1809
|
let w = winData[0] || { qq: winQQ, win: 0, lose: 0, streak: 0, max_streak: 0, day_count: 0, day_date: getBattleDay() };
|
|
1798
1810
|
w.win++;
|
|
@@ -1816,9 +1828,9 @@ async function doBattleAgree(ctx, session) {
|
|
|
1816
1828
|
await ctx.database.upsert("gacha_user_draw_count", [{ qq: winQQ, water_vapor: vapor + reward }]);
|
|
1817
1829
|
await session.send(build_msg(session, `
|
|
1818
1830
|
⚔️ 对战结果
|
|
1819
|
-
【${
|
|
1820
|
-
【${
|
|
1821
|
-
🎉 胜利:${
|
|
1831
|
+
【${name1}】${star}星 战力:${power1}
|
|
1832
|
+
【${name2}】${star}星 战力:${power2}
|
|
1833
|
+
🎉 胜利:${winName}(水汽 +${reward})`));
|
|
1822
1834
|
}
|
|
1823
1835
|
__name(doBattleAgree, "doBattleAgree");
|
|
1824
1836
|
async function doBattleRecord(ctx, session) {
|
|
@@ -1961,6 +1973,12 @@ async function apply(ctx, config) {
|
|
|
1961
1973
|
win_qq: { type: "string" },
|
|
1962
1974
|
time: { type: "integer" }
|
|
1963
1975
|
}, { primary: ["id"] });
|
|
1976
|
+
ctx.model.extend("gacha_group_member", {
|
|
1977
|
+
group_id: { type: "string" },
|
|
1978
|
+
qq: { type: "string" },
|
|
1979
|
+
group_nickname: { type: "string" },
|
|
1980
|
+
card: { type: "string" }
|
|
1981
|
+
}, { primary: ["group_id", "qq"] });
|
|
1964
1982
|
const battlePending2 = /* @__PURE__ */ new Map();
|
|
1965
1983
|
await ctx.database.upsert("gacha_global_switch", [{ id: 1, status: 0 }]);
|
|
1966
1984
|
await ctx.database.upsert("gacha_sign_config", [{ id: 1, reset_hour: config.signResetHour, reset_minute: config.signResetMinute }]);
|
|
@@ -1974,6 +1992,26 @@ async function apply(ctx, config) {
|
|
|
1974
1992
|
groupMsgCounter.set(key, { count: 0, lastValidMsg: { text: "", images: [] } });
|
|
1975
1993
|
}
|
|
1976
1994
|
});
|
|
1995
|
+
ctx.on("guild-added", async (session) => {
|
|
1996
|
+
const guildId = session.guildId;
|
|
1997
|
+
if (!guildId) return;
|
|
1998
|
+
ctx.logger.info("[WWC] 群已加入,等待用户发言自动缓存昵称");
|
|
1999
|
+
});
|
|
2000
|
+
ctx.on("message", async (session) => {
|
|
2001
|
+
const guildId = session.guildId;
|
|
2002
|
+
const userId = session.userId?.toString();
|
|
2003
|
+
if (!guildId || !userId) return;
|
|
2004
|
+
try {
|
|
2005
|
+
const nickname = session.event?.user?.username || userId;
|
|
2006
|
+
await ctx.database.upsert("gacha_group_member", [{
|
|
2007
|
+
group_id: guildId,
|
|
2008
|
+
qq: userId,
|
|
2009
|
+
group_nickname: nickname,
|
|
2010
|
+
card: ""
|
|
2011
|
+
}]);
|
|
2012
|
+
} catch (e) {
|
|
2013
|
+
}
|
|
2014
|
+
});
|
|
1977
2015
|
ctx.command("WWC注册 <昵称>", "注册/修改WWC账号,首次使用必须注册").alias("wwc注册").alias("WWC绑定").action(async (argv, nickname) => {
|
|
1978
2016
|
if (!argv.session) return;
|
|
1979
2017
|
const session = argv.session;
|
|
@@ -2105,13 +2143,32 @@ async function apply(ctx, config) {
|
|
|
2105
2143
|
await session.send(build_msg(session, "请@你要挑战的玩家"));
|
|
2106
2144
|
return;
|
|
2107
2145
|
}
|
|
2146
|
+
const groupId = session.guildId;
|
|
2108
2147
|
let showName = targetQQ;
|
|
2109
2148
|
try {
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2149
|
+
if (groupId) {
|
|
2150
|
+
const member = await ctx.database.get("gacha_group_member", {
|
|
2151
|
+
group_id: groupId,
|
|
2152
|
+
qq: targetQQ
|
|
2153
|
+
});
|
|
2154
|
+
if (member.length) {
|
|
2155
|
+
const card = member[0].card || "";
|
|
2156
|
+
const groupNick = member[0].group_nickname || "";
|
|
2157
|
+
showName = card || groupNick || targetQQ;
|
|
2158
|
+
} else {
|
|
2159
|
+
const memberNew = await ctx.database.get("gacha_group_member", {
|
|
2160
|
+
group_id: groupId,
|
|
2161
|
+
qq: targetQQ
|
|
2162
|
+
});
|
|
2163
|
+
if (memberNew.length) {
|
|
2164
|
+
const card = memberNew[0].card || "";
|
|
2165
|
+
const groupNick = memberNew[0].group_nickname || "";
|
|
2166
|
+
showName = card || groupNick || targetQQ;
|
|
2167
|
+
}
|
|
2168
|
+
}
|
|
2113
2169
|
}
|
|
2114
|
-
} catch (
|
|
2170
|
+
} catch (err) {
|
|
2171
|
+
ctx.logger.error("[WWC对战] 获取昵称失败:", err);
|
|
2115
2172
|
}
|
|
2116
2173
|
await session.send(build_msg(session, `✅ 已向【${showName}】发起挑战,请对方回复:同意`));
|
|
2117
2174
|
await doBattleChallenge(ctx, session, targetQQ);
|
|
@@ -2124,18 +2181,55 @@ async function apply(ctx, config) {
|
|
|
2124
2181
|
await session.send(build_msg(session, "没有待处理的对战请求"));
|
|
2125
2182
|
return;
|
|
2126
2183
|
}
|
|
2184
|
+
const pen = battlePending2.get(qq);
|
|
2185
|
+
const fromQQ = pen.from;
|
|
2186
|
+
const groupId = session.guildId;
|
|
2187
|
+
let fromName = fromQQ;
|
|
2188
|
+
try {
|
|
2189
|
+
if (groupId) {
|
|
2190
|
+
const member = await ctx.database.get("gacha_group_member", {
|
|
2191
|
+
group_id: groupId,
|
|
2192
|
+
qq: fromQQ
|
|
2193
|
+
});
|
|
2194
|
+
if (member.length) {
|
|
2195
|
+
const card = member[0].card || "";
|
|
2196
|
+
const groupNick = member[0].group_nickname || "";
|
|
2197
|
+
fromName = card || groupNick || fromQQ;
|
|
2198
|
+
}
|
|
2199
|
+
}
|
|
2200
|
+
} catch (e) {
|
|
2201
|
+
}
|
|
2202
|
+
await session.send(build_msg(session, `✅ 已同意【${fromName}】的对战请求,开始对战!`));
|
|
2127
2203
|
await doBattleAgree(ctx, session);
|
|
2128
2204
|
});
|
|
2129
2205
|
ctx.command("拒绝", "拒绝对战").action(async (argv) => {
|
|
2130
2206
|
const session = argv.session;
|
|
2131
2207
|
if (!session) return;
|
|
2132
2208
|
const qq = session.userId?.toString();
|
|
2133
|
-
if (qq
|
|
2134
|
-
battlePending2.delete(qq);
|
|
2135
|
-
await session.send(build_msg(session, "已拒绝对战"));
|
|
2136
|
-
} else {
|
|
2209
|
+
if (!qq || !battlePending2.has(qq)) {
|
|
2137
2210
|
await session.send(build_msg(session, "没有待处理的对战请求"));
|
|
2211
|
+
return;
|
|
2212
|
+
}
|
|
2213
|
+
const pen = battlePending2.get(qq);
|
|
2214
|
+
const fromQQ = pen.from;
|
|
2215
|
+
const groupId = session.guildId;
|
|
2216
|
+
let fromName = fromQQ;
|
|
2217
|
+
try {
|
|
2218
|
+
if (groupId) {
|
|
2219
|
+
const member = await ctx.database.get("gacha_group_member", {
|
|
2220
|
+
group_id: groupId,
|
|
2221
|
+
qq: fromQQ
|
|
2222
|
+
});
|
|
2223
|
+
if (member.length) {
|
|
2224
|
+
const card = member[0].card || "";
|
|
2225
|
+
const groupNick = member[0].group_nickname || "";
|
|
2226
|
+
fromName = card || groupNick || fromQQ;
|
|
2227
|
+
}
|
|
2228
|
+
}
|
|
2229
|
+
} catch (e) {
|
|
2138
2230
|
}
|
|
2231
|
+
battlePending2.delete(qq);
|
|
2232
|
+
await session.send(build_msg(session, `❌ 已拒绝【${fromName}】的对战请求`));
|
|
2139
2233
|
});
|
|
2140
2234
|
ctx.command("WWC对战记录", "查看对战记录").action(async (argv) => {
|
|
2141
2235
|
const session = argv.session;
|