3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-07-14 05:57:18 +00:00

Add canActOn check and more verbose error handling

This commit is contained in:
Dark 2020-12-16 16:22:02 +01:00
parent 5056b4376a
commit f7f5ea7120
No known key found for this signature in database
GPG key ID: 384C4B4F5B1E25A8

View file

@ -8,7 +8,7 @@ import {
simpleClosestStringMatch, simpleClosestStringMatch,
stripObjectToScalars, stripObjectToScalars,
} from "../../../utils"; } from "../../../utils";
import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils"; import { canActOn, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
import { Member, VoiceChannel } from "eris"; import { Member, VoiceChannel } from "eris";
import { LogType } from "../../../data/LogType"; import { LogType } from "../../../data/LogType";
@ -157,21 +157,25 @@ export const VcmoveAllCmd = utilityCmd({
// Cant leave null, otherwise we get an assignment error in the catch // Cant leave null, otherwise we get an assignment error in the catch
let currMember = msg.member; let currMember = msg.member;
const moveAmt = args.oldChannel.voiceMembers.size; const moveAmt = args.oldChannel.voiceMembers.size;
try { let errAmt = 0;
for (const memberWithId of args.oldChannel.voiceMembers) { for (const memberWithId of args.oldChannel.voiceMembers) {
currMember = memberWithId[1]; currMember = memberWithId[1];
// Check for permissions but allow self-moves
if (currMember.id !== msg.member.id && !canActOn(pluginData, msg.member, currMember)) {
sendErrorMessage(
pluginData,
msg.channel,
`Failed to move ${currMember.username}#${currMember.discriminator} (${currMember.id}): You cannot act on this member`,
);
errAmt++;
continue;
}
try {
currMember.edit({ currMember.edit({
channelID: channel.id, channelID: channel.id,
}); });
pluginData.state.logs.log(LogType.VOICE_CHANNEL_FORCE_MOVE, {
mod: stripObjectToScalars(msg.author),
member: stripObjectToScalars(currMember, ["user", "roles"]),
oldChannel: stripObjectToScalars(args.oldChannel),
newChannel: stripObjectToScalars(channel),
});
}
} catch (e) { } catch (e) {
if (msg.member.id === currMember.id) { if (msg.member.id === currMember.id) {
sendErrorMessage(pluginData, msg.channel, "Unknown error when trying to move members"); sendErrorMessage(pluginData, msg.channel, "Unknown error when trying to move members");
@ -182,13 +186,26 @@ export const VcmoveAllCmd = utilityCmd({
msg.channel, msg.channel,
`Failed to move ${currMember.username}#${currMember.discriminator} (${currMember.id})`, `Failed to move ${currMember.username}#${currMember.discriminator} (${currMember.id})`,
); );
return; errAmt++;
continue;
} }
pluginData.state.logs.log(LogType.VOICE_CHANNEL_FORCE_MOVE, {
mod: stripObjectToScalars(msg.author),
member: stripObjectToScalars(currMember, ["user", "roles"]),
oldChannel: stripObjectToScalars(args.oldChannel),
newChannel: stripObjectToScalars(channel),
});
}
if (moveAmt !== errAmt) {
sendSuccessMessage( sendSuccessMessage(
pluginData, pluginData,
msg.channel, msg.channel,
`All ${moveAmt} members from **${args.oldChannel.name}** moved to **${channel.name}**`, `${moveAmt - errAmt} members from **${args.oldChannel.name}** moved to **${channel.name}**`,
); );
} else {
sendErrorMessage(pluginData, msg.channel, `Failed to move any members.`);
}
}, },
}); });