返回提交历史
Modified
src/controllers/api/removeFromGuildController.ts
+55
-53
XFEstudio/XFESpaceNinjaServer
chore: gracefully handle removeFromGuild requests for non-members (#3490)
Closes #3483 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/3490 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
b24b4a38
代码差异
1 个文件
+55
-53
@@ -47,61 +47,63 @@ const processRemoveFromGuildRequest = async (
47
47
return;
48
48
}
49
49
50
const guildMember = (await GuildMember.findOne({ accountId: payload.userId, guildId: guild._id }))!;
51
if (guildMember.rank == 0) {
52
await deleteGuild(guild._id);
53
} else {
54
if (guildMember.status == 0) {
55
const inventory = await getInventory(payload.userId, "GuildId LevelKeys Recipes");
56
inventory.GuildId = undefined;
57
removeDojoKeyItems(inventory);
58
await inventory.save();
59
} else if (guildMember.status == 1) {
60
// TOVERIFY: Is this inbox message actually sent on live?
61
await createMessage(guildMember.accountId, [
62
{
63
sndr: "/Lotus/Language/Bosses/Ordis",
64
msg: "/Lotus/Language/Clan/RejectedFromClan",
65
sub: "/Lotus/Language/Clan/RejectedFromClanHeader",
66
arg: [
67
{
68
Key: "PLAYER_NAME",
69
Tag: (await Account.findOne({ _id: guildMember.accountId }, "DisplayName"))!.DisplayName
70
},
71
{
72
Key: "CLAN_NAME",
73
Tag: guild.Name
74
}
75
]
76
// TOVERIFY: If this message is sent on live, is it highPriority?
77
}
78
]);
79
} else if (guildMember.status == 2) {
80
// Delete the inbox message for the invite
81
await Inbox.deleteOne({
82
ownerId: guildMember.accountId,
83
contextInfo: guild._id.toString(),
84
acceptAction: "GUILD_INVITE"
85
});
86
}
87
await GuildMember.deleteOne({ _id: guildMember._id });
88
89
guild.RosterActivity ??= [];
90
if (isKick) {
91
const kickee = (await Account.findById(payload.userId))!;
92
guild.RosterActivity.push({
93
dateTime: new Date(),
94
entryType: 12,
95
details: getSuffixedName(kickee) + "," + getSuffixedName(account)
96
});
50
const guildMember = await GuildMember.findOne({ accountId: payload.userId, guildId: guild._id });
51
if (guildMember) {
52
if (guildMember.rank == 0) {
53
await deleteGuild(guild._id);
97
54
} else {
98
guild.RosterActivity.push({
99
dateTime: new Date(),
100
entryType: 7,
101
details: getSuffixedName(account)
102
});
55
if (guildMember.status == 0) {
56
const inventory = await getInventory(payload.userId, "GuildId LevelKeys Recipes");
57
inventory.GuildId = undefined;
58
removeDojoKeyItems(inventory);
59
await inventory.save();
60
} else if (guildMember.status == 1) {
61
// TOVERIFY: Is this inbox message actually sent on live?
62
await createMessage(guildMember.accountId, [
63
{
64
sndr: "/Lotus/Language/Bosses/Ordis",
65
msg: "/Lotus/Language/Clan/RejectedFromClan",
66
sub: "/Lotus/Language/Clan/RejectedFromClanHeader",
67
arg: [
68
{
69
Key: "PLAYER_NAME",
70
Tag: (await Account.findOne({ _id: guildMember.accountId }, "DisplayName"))!.DisplayName
71
},
72
{
73
Key: "CLAN_NAME",
74
Tag: guild.Name
75
}
76
]
77
// TOVERIFY: If this message is sent on live, is it highPriority?
78
}
79
]);
80
} else if (guildMember.status == 2) {
81
// Delete the inbox message for the invite
82
await Inbox.deleteOne({
83
ownerId: guildMember.accountId,
84
contextInfo: guild._id.toString(),
85
acceptAction: "GUILD_INVITE"
86
});
87
}
88
await GuildMember.deleteOne({ _id: guildMember._id });
89
90
guild.RosterActivity ??= [];
91
if (isKick) {
92
const kickee = (await Account.findById(payload.userId))!;
93
guild.RosterActivity.push({
94
dateTime: new Date(),
95
entryType: 12,
96
details: getSuffixedName(kickee) + "," + getSuffixedName(account)
97
});
98
} else {
99
guild.RosterActivity.push({
100
dateTime: new Date(),
101
entryType: 7,
102
details: getSuffixedName(account)
103
});
104
}
105
await guild.save();
103
106
}
104
await guild.save();
105
107
}
106
108
107
109
res.json({