koishi-plugin-xxck-1 0.2.13 → 0.2.14
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 +107 -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,28 @@ 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;
|
|
2003
|
+
if (!guildId || !userId) return;
|
|
2004
|
+
try {
|
|
2005
|
+
const member = await session.bot.getGuildMember(guildId, userId);
|
|
2006
|
+
if (member) {
|
|
2007
|
+
await ctx.database.upsert("gacha_group_member", [{
|
|
2008
|
+
group_id: guildId,
|
|
2009
|
+
qq: userId,
|
|
2010
|
+
group_nickname: member.name || "",
|
|
2011
|
+
card: member.card || ""
|
|
2012
|
+
}]);
|
|
2013
|
+
}
|
|
2014
|
+
} catch (e) {
|
|
2015
|
+
}
|
|
2016
|
+
});
|
|
1977
2017
|
ctx.command("WWC注册 <昵称>", "注册/修改WWC账号,首次使用必须注册").alias("wwc注册").alias("WWC绑定").action(async (argv, nickname) => {
|
|
1978
2018
|
if (!argv.session) return;
|
|
1979
2019
|
const session = argv.session;
|
|
@@ -2105,13 +2145,32 @@ async function apply(ctx, config) {
|
|
|
2105
2145
|
await session.send(build_msg(session, "请@你要挑战的玩家"));
|
|
2106
2146
|
return;
|
|
2107
2147
|
}
|
|
2148
|
+
const groupId = session.guildId;
|
|
2108
2149
|
let showName = targetQQ;
|
|
2109
2150
|
try {
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2151
|
+
if (groupId) {
|
|
2152
|
+
const member = await ctx.database.get("gacha_group_member", {
|
|
2153
|
+
group_id: groupId,
|
|
2154
|
+
qq: targetQQ
|
|
2155
|
+
});
|
|
2156
|
+
if (member.length) {
|
|
2157
|
+
const card = member[0].card || "";
|
|
2158
|
+
const groupNick = member[0].group_nickname || "";
|
|
2159
|
+
showName = card || groupNick || targetQQ;
|
|
2160
|
+
} else {
|
|
2161
|
+
const memberNew = await ctx.database.get("gacha_group_member", {
|
|
2162
|
+
group_id: groupId,
|
|
2163
|
+
qq: targetQQ
|
|
2164
|
+
});
|
|
2165
|
+
if (memberNew.length) {
|
|
2166
|
+
const card = memberNew[0].card || "";
|
|
2167
|
+
const groupNick = memberNew[0].group_nickname || "";
|
|
2168
|
+
showName = card || groupNick || targetQQ;
|
|
2169
|
+
}
|
|
2170
|
+
}
|
|
2113
2171
|
}
|
|
2114
|
-
} catch (
|
|
2172
|
+
} catch (err) {
|
|
2173
|
+
ctx.logger.error("[WWC对战] 获取昵称失败:", err);
|
|
2115
2174
|
}
|
|
2116
2175
|
await session.send(build_msg(session, `✅ 已向【${showName}】发起挑战,请对方回复:同意`));
|
|
2117
2176
|
await doBattleChallenge(ctx, session, targetQQ);
|
|
@@ -2124,18 +2183,55 @@ async function apply(ctx, config) {
|
|
|
2124
2183
|
await session.send(build_msg(session, "没有待处理的对战请求"));
|
|
2125
2184
|
return;
|
|
2126
2185
|
}
|
|
2186
|
+
const pen = battlePending2.get(qq);
|
|
2187
|
+
const fromQQ = pen.from;
|
|
2188
|
+
const groupId = session.guildId;
|
|
2189
|
+
let fromName = fromQQ;
|
|
2190
|
+
try {
|
|
2191
|
+
if (groupId) {
|
|
2192
|
+
const member = await ctx.database.get("gacha_group_member", {
|
|
2193
|
+
group_id: groupId,
|
|
2194
|
+
qq: fromQQ
|
|
2195
|
+
});
|
|
2196
|
+
if (member.length) {
|
|
2197
|
+
const card = member[0].card || "";
|
|
2198
|
+
const groupNick = member[0].group_nickname || "";
|
|
2199
|
+
fromName = card || groupNick || fromQQ;
|
|
2200
|
+
}
|
|
2201
|
+
}
|
|
2202
|
+
} catch (e) {
|
|
2203
|
+
}
|
|
2204
|
+
await session.send(build_msg(session, `✅ 已同意【${fromName}】的对战请求,开始对战!`));
|
|
2127
2205
|
await doBattleAgree(ctx, session);
|
|
2128
2206
|
});
|
|
2129
2207
|
ctx.command("拒绝", "拒绝对战").action(async (argv) => {
|
|
2130
2208
|
const session = argv.session;
|
|
2131
2209
|
if (!session) return;
|
|
2132
2210
|
const qq = session.userId?.toString();
|
|
2133
|
-
if (qq
|
|
2134
|
-
battlePending2.delete(qq);
|
|
2135
|
-
await session.send(build_msg(session, "已拒绝对战"));
|
|
2136
|
-
} else {
|
|
2211
|
+
if (!qq || !battlePending2.has(qq)) {
|
|
2137
2212
|
await session.send(build_msg(session, "没有待处理的对战请求"));
|
|
2213
|
+
return;
|
|
2214
|
+
}
|
|
2215
|
+
const pen = battlePending2.get(qq);
|
|
2216
|
+
const fromQQ = pen.from;
|
|
2217
|
+
const groupId = session.guildId;
|
|
2218
|
+
let fromName = fromQQ;
|
|
2219
|
+
try {
|
|
2220
|
+
if (groupId) {
|
|
2221
|
+
const member = await ctx.database.get("gacha_group_member", {
|
|
2222
|
+
group_id: groupId,
|
|
2223
|
+
qq: fromQQ
|
|
2224
|
+
});
|
|
2225
|
+
if (member.length) {
|
|
2226
|
+
const card = member[0].card || "";
|
|
2227
|
+
const groupNick = member[0].group_nickname || "";
|
|
2228
|
+
fromName = card || groupNick || fromQQ;
|
|
2229
|
+
}
|
|
2230
|
+
}
|
|
2231
|
+
} catch (e) {
|
|
2138
2232
|
}
|
|
2233
|
+
battlePending2.delete(qq);
|
|
2234
|
+
await session.send(build_msg(session, `❌ 已拒绝【${fromName}】的对战请求`));
|
|
2139
2235
|
});
|
|
2140
2236
|
ctx.command("WWC对战记录", "查看对战记录").action(async (argv) => {
|
|
2141
2237
|
const session = argv.session;
|