3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-03-16 14:11:50 +00:00

Add canActOn check to !vcmoveall and more verbose error handling (#137)

This commit is contained in:
Nils 2020-12-20 17:31:28 +01:00 committed by GitHub
parent 3c3a819aba
commit adc8959836
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

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,38 +157,55 @@ 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,
}); });
} catch (e) {
if (msg.member.id === currMember.id) {
sendErrorMessage(pluginData, msg.channel, "Unknown error when trying to move members");
return;
}
sendErrorMessage(
pluginData,
msg.channel,
`Failed to move ${currMember.username}#${currMember.discriminator} (${currMember.id})`,
);
errAmt++;
continue;
}
pluginData.state.logs.log(LogType.VOICE_CHANNEL_FORCE_MOVE, { pluginData.state.logs.log(LogType.VOICE_CHANNEL_FORCE_MOVE, {
mod: stripObjectToScalars(msg.author), mod: stripObjectToScalars(msg.author),
member: stripObjectToScalars(currMember, ["user", "roles"]), member: stripObjectToScalars(currMember, ["user", "roles"]),
oldChannel: stripObjectToScalars(args.oldChannel), oldChannel: stripObjectToScalars(args.oldChannel),
newChannel: stripObjectToScalars(channel), newChannel: stripObjectToScalars(channel),
}); });
}
} catch (e) {
if (msg.member.id === currMember.id) {
sendErrorMessage(pluginData, msg.channel, "Unknown error when trying to move members");
return;
}
sendErrorMessage(
pluginData,
msg.channel,
`Failed to move ${currMember.username}#${currMember.discriminator} (${currMember.id})`,
);
return;
} }
sendSuccessMessage( if (moveAmt !== errAmt) {
pluginData, sendSuccessMessage(
msg.channel, pluginData,
`All ${moveAmt} members from **${args.oldChannel.name}** moved to **${channel.name}**`, msg.channel,
); `${moveAmt - errAmt} members from **${args.oldChannel.name}** moved to **${channel.name}**`,
);
} else {
sendErrorMessage(pluginData, msg.channel, `Failed to move any members.`);
}
}, },
}); });