Add proper types to sendErrorMessage()
This commit is contained in:
parent
6896afebfa
commit
edaeb7ef0e
23 changed files with 123 additions and 78 deletions
|
@ -143,25 +143,32 @@ export function sendSuccessMessage(
|
||||||
body: string,
|
body: string,
|
||||||
): Promise<Message | undefined> {
|
): Promise<Message | undefined> {
|
||||||
const emoji = pluginData.fullConfig.success_emoji || undefined;
|
const emoji = pluginData.fullConfig.success_emoji || undefined;
|
||||||
return channel.createMessage(successMessage(body, emoji)).catch(err => {
|
return channel
|
||||||
logger.warn(
|
.createMessage(successMessage(body, emoji)) // Force line break
|
||||||
`Failed to send success message to ${channel.id} (${(channel as GuildTextableChannel).guild?.id}): ${err.code} ${
|
.catch(err => {
|
||||||
err.message
|
const channelInfo = (channel as GuildTextableChannel).guild
|
||||||
}`,
|
? `${channel.id} (${(channel as GuildTextableChannel).guild.id})`
|
||||||
);
|
: `${channel.id}`;
|
||||||
return undefined;
|
logger.warn(`Failed to send success message to ${channelInfo}): ${err.code} ${err.message}`);
|
||||||
});
|
return undefined;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function sendErrorMessage(pluginData: AnyPluginData<any>, channel, body) {
|
export function sendErrorMessage(
|
||||||
|
pluginData: AnyPluginData<any>,
|
||||||
|
channel: TextableChannel,
|
||||||
|
body: string,
|
||||||
|
): Promise<Message | undefined> {
|
||||||
const emoji = pluginData.fullConfig.error_emoji || undefined;
|
const emoji = pluginData.fullConfig.error_emoji || undefined;
|
||||||
return channel.createMessage(errorMessage(body, emoji)).catch(err => {
|
return channel
|
||||||
logger.warn(
|
.createMessage(errorMessage(body, emoji)) // Force line break
|
||||||
`Failed to send error message to ${channel.id} (${(channel as GuildTextableChannel).guild?.id}): ${err.code} ${
|
.catch(err => {
|
||||||
err.message
|
const channelInfo = (channel as GuildTextableChannel).guild
|
||||||
}`,
|
? `${channel.id} (${(channel as GuildTextableChannel).guild.id})`
|
||||||
);
|
: `${channel.id}`;
|
||||||
});
|
logger.warn(`Failed to send error message to ${channelInfo}): ${err.code} ${err.message}`);
|
||||||
|
return undefined;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getBaseUrl(pluginData: AnyPluginData<any>) {
|
export function getBaseUrl(pluginData: AnyPluginData<any>) {
|
||||||
|
|
|
@ -30,7 +30,8 @@ export const AddCaseCmd = modActionsCmd({
|
||||||
async run({ pluginData, message: msg, args }) {
|
async run({ pluginData, message: msg, args }) {
|
||||||
const user = await resolveUser(pluginData.client, args.user);
|
const user = await resolveUser(pluginData.client, args.user);
|
||||||
if (!user.id) {
|
if (!user.id) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, `User not found`);
|
sendErrorMessage(pluginData, msg.channel, `User not found`);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the user exists as a guild member, make sure we can act on them first
|
// If the user exists as a guild member, make sure we can act on them first
|
||||||
|
|
|
@ -34,7 +34,8 @@ export const BanCmd = modActionsCmd({
|
||||||
async run({ pluginData, message: msg, args }) {
|
async run({ pluginData, message: msg, args }) {
|
||||||
const user = await resolveUser(pluginData.client, args.user);
|
const user = await resolveUser(pluginData.client, args.user);
|
||||||
if (!user.id) {
|
if (!user.id) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, `User not found`);
|
sendErrorMessage(pluginData, msg.channel, `User not found`);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const memberToBan = await resolveMember(pluginData.client, pluginData.guild, user.id);
|
const memberToBan = await resolveMember(pluginData.client, pluginData.guild, user.id);
|
||||||
|
|
|
@ -37,7 +37,8 @@ export const CasesUserCmd = modActionsCmd({
|
||||||
async run({ pluginData, message: msg, args }) {
|
async run({ pluginData, message: msg, args }) {
|
||||||
const user = await resolveUser(pluginData.client, args.user);
|
const user = await resolveUser(pluginData.client, args.user);
|
||||||
if (!user.id) {
|
if (!user.id) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, `User not found`);
|
sendErrorMessage(pluginData, msg.channel, `User not found`);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const cases = await pluginData.state.cases.with("notes").getByUserId(user.id);
|
const cases = await pluginData.state.cases.with("notes").getByUserId(user.id);
|
||||||
|
|
|
@ -32,7 +32,8 @@ export const ForcebanCmd = modActionsCmd({
|
||||||
async run({ pluginData, message: msg, args }) {
|
async run({ pluginData, message: msg, args }) {
|
||||||
const user = await resolveUser(pluginData.client, args.user);
|
const user = await resolveUser(pluginData.client, args.user);
|
||||||
if (!user.id) {
|
if (!user.id) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, `User not found`);
|
sendErrorMessage(pluginData, msg.channel, `User not found`);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the user exists as a guild member, make sure we can act on them first
|
// If the user exists as a guild member, make sure we can act on them first
|
||||||
|
|
|
@ -34,7 +34,8 @@ export const ForcemuteCmd = modActionsCmd({
|
||||||
async run({ pluginData, message: msg, args }) {
|
async run({ pluginData, message: msg, args }) {
|
||||||
const user = await resolveUser(pluginData.client, args.user);
|
const user = await resolveUser(pluginData.client, args.user);
|
||||||
if (!user.id) {
|
if (!user.id) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, `User not found`);
|
sendErrorMessage(pluginData, msg.channel, `User not found`);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const memberToMute = await resolveMember(pluginData.client, pluginData.guild, user.id);
|
const memberToMute = await resolveMember(pluginData.client, pluginData.guild, user.id);
|
||||||
|
|
|
@ -32,7 +32,8 @@ export const ForceUnmuteCmd = modActionsCmd({
|
||||||
async run({ pluginData, message: msg, args }) {
|
async run({ pluginData, message: msg, args }) {
|
||||||
const user = await resolveUser(pluginData.client, args.user);
|
const user = await resolveUser(pluginData.client, args.user);
|
||||||
if (!user.id) {
|
if (!user.id) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, `User not found`);
|
sendErrorMessage(pluginData, msg.channel, `User not found`);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if they're muted in the first place
|
// Check if they're muted in the first place
|
||||||
|
|
|
@ -44,7 +44,8 @@ export const MuteCmd = modActionsCmd({
|
||||||
async run({ pluginData, message: msg, args }) {
|
async run({ pluginData, message: msg, args }) {
|
||||||
const user = await resolveUser(pluginData.client, args.user);
|
const user = await resolveUser(pluginData.client, args.user);
|
||||||
if (!user.id) {
|
if (!user.id) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, `User not found`);
|
sendErrorMessage(pluginData, msg.channel, `User not found`);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const memberToMute = await resolveMember(pluginData.client, pluginData.guild, user.id);
|
const memberToMute = await resolveMember(pluginData.client, pluginData.guild, user.id);
|
||||||
|
|
|
@ -21,7 +21,8 @@ export const NoteCmd = modActionsCmd({
|
||||||
async run({ pluginData, message: msg, args }) {
|
async run({ pluginData, message: msg, args }) {
|
||||||
const user = await resolveUser(pluginData.client, args.user);
|
const user = await resolveUser(pluginData.client, args.user);
|
||||||
if (!user.id) {
|
if (!user.id) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, `User not found`);
|
sendErrorMessage(pluginData, msg.channel, `User not found`);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const userName = `${user.username}#${user.discriminator}`;
|
const userName = `${user.username}#${user.discriminator}`;
|
||||||
|
|
|
@ -29,7 +29,8 @@ export const UnbanCmd = modActionsCmd({
|
||||||
async run({ pluginData, message: msg, args }) {
|
async run({ pluginData, message: msg, args }) {
|
||||||
const user = await resolveUser(pluginData.client, args.user);
|
const user = await resolveUser(pluginData.client, args.user);
|
||||||
if (!user.id) {
|
if (!user.id) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, `User not found`);
|
sendErrorMessage(pluginData, msg.channel, `User not found`);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// The moderator who did the action is the message author or, if used, the specified -mod
|
// The moderator who did the action is the message author or, if used, the specified -mod
|
||||||
|
|
|
@ -34,7 +34,8 @@ export const UnmuteCmd = modActionsCmd({
|
||||||
async run({ pluginData, message: msg, args }) {
|
async run({ pluginData, message: msg, args }) {
|
||||||
const user = await resolveUser(pluginData.client, args.user);
|
const user = await resolveUser(pluginData.client, args.user);
|
||||||
if (!user.id) {
|
if (!user.id) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, `User not found`);
|
sendErrorMessage(pluginData, msg.channel, `User not found`);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const memberToUnmute = await resolveMember(pluginData.client, pluginData.guild, user.id);
|
const memberToUnmute = await resolveMember(pluginData.client, pluginData.guild, user.id);
|
||||||
|
|
|
@ -30,7 +30,8 @@ export const WarnCmd = modActionsCmd({
|
||||||
async run({ pluginData, message: msg, args }) {
|
async run({ pluginData, message: msg, args }) {
|
||||||
const user = await resolveUser(pluginData.client, args.user);
|
const user = await resolveUser(pluginData.client, args.user);
|
||||||
if (!user.id) {
|
if (!user.id) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, `User not found`);
|
sendErrorMessage(pluginData, msg.channel, `User not found`);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const memberToWarn = await resolveMember(pluginData.client, pluginData.guild, user.id);
|
const memberToWarn = await resolveMember(pluginData.client, pluginData.guild, user.id);
|
||||||
|
|
|
@ -25,7 +25,8 @@ export async function actualKickMemberCmd(
|
||||||
) {
|
) {
|
||||||
const user = await resolveUser(pluginData.client, args.user);
|
const user = await resolveUser(pluginData.client, args.user);
|
||||||
if (!user.id) {
|
if (!user.id) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, `User not found`);
|
sendErrorMessage(pluginData, msg.channel, `User not found`);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const memberToKick = await resolveMember(pluginData.client, pluginData.guild, user.id);
|
const memberToKick = await resolveMember(pluginData.client, pluginData.guild, user.id);
|
||||||
|
|
|
@ -20,7 +20,8 @@ export const NamesCmd = nameHistoryCmd({
|
||||||
const usernames = await pluginData.state.usernameHistory.getByUserId(args.userId);
|
const usernames = await pluginData.state.usernameHistory.getByUserId(args.userId);
|
||||||
|
|
||||||
if (nicknames.length === 0 && usernames.length === 0) {
|
if (nicknames.length === 0 && usernames.length === 0) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "No name history found");
|
sendErrorMessage(pluginData, msg.channel, "No name history found");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const nicknameRows = nicknames.map(
|
const nicknameRows = nicknames.map(
|
||||||
|
|
|
@ -16,7 +16,8 @@ export const ScheduledPostsDeleteCmd = postCmd({
|
||||||
scheduledPosts.sort(sorter("post_at"));
|
scheduledPosts.sort(sorter("post_at"));
|
||||||
const post = scheduledPosts[args.num - 1];
|
const post = scheduledPosts[args.num - 1];
|
||||||
if (!post) {
|
if (!post) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "Scheduled post not found");
|
sendErrorMessage(pluginData, msg.channel, "Scheduled post not found");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await pluginData.state.scheduledPosts.delete(post.id);
|
await pluginData.state.scheduledPosts.delete(post.id);
|
||||||
|
|
|
@ -18,7 +18,8 @@ export const ScheduledPostsShowCmd = postCmd({
|
||||||
scheduledPosts.sort(sorter("post_at"));
|
scheduledPosts.sort(sorter("post_at"));
|
||||||
const post = scheduledPosts[args.num - 1];
|
const post = scheduledPosts[args.num - 1];
|
||||||
if (!post) {
|
if (!post) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "Scheduled post not found");
|
sendErrorMessage(pluginData, msg.channel, "Scheduled post not found");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
postMessage(pluginData, msg.channel as TextChannel, post.content, post.attachments, post.enable_mentions);
|
postMessage(pluginData, msg.channel as TextChannel, post.content, post.attachments, post.enable_mentions);
|
||||||
|
|
|
@ -39,14 +39,12 @@ export async function actualPostCmd(
|
||||||
|
|
||||||
if (opts.repeat) {
|
if (opts.repeat) {
|
||||||
if (opts.repeat < MIN_REPEAT_TIME) {
|
if (opts.repeat < MIN_REPEAT_TIME) {
|
||||||
return sendErrorMessage(
|
sendErrorMessage(pluginData, msg.channel, `Minimum time for -repeat is ${humanizeDuration(MIN_REPEAT_TIME)}`);
|
||||||
pluginData,
|
return;
|
||||||
msg.channel,
|
|
||||||
`Minimum time for -repeat is ${humanizeDuration(MIN_REPEAT_TIME)}`,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
if (opts.repeat > MAX_REPEAT_TIME) {
|
if (opts.repeat > MAX_REPEAT_TIME) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, `Max time for -repeat is ${humanizeDuration(MAX_REPEAT_TIME)}`);
|
sendErrorMessage(pluginData, msg.channel, `Max time for -repeat is ${humanizeDuration(MAX_REPEAT_TIME)}`);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,7 +54,8 @@ export async function actualPostCmd(
|
||||||
// Schedule the post to be posted later
|
// Schedule the post to be posted later
|
||||||
postAt = await parseScheduleTime(pluginData, msg.author.id, opts.schedule);
|
postAt = await parseScheduleTime(pluginData, msg.author.id, opts.schedule);
|
||||||
if (!postAt) {
|
if (!postAt) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "Invalid schedule time");
|
sendErrorMessage(pluginData, msg.channel, "Invalid schedule time");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
} else if (opts.repeat) {
|
} else if (opts.repeat) {
|
||||||
postAt = moment.utc().add(opts.repeat, "ms");
|
postAt = moment.utc().add(opts.repeat, "ms");
|
||||||
|
@ -72,35 +71,37 @@ export async function actualPostCmd(
|
||||||
|
|
||||||
// Invalid time
|
// Invalid time
|
||||||
if (!repeatUntil) {
|
if (!repeatUntil) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "Invalid time specified for -repeat-until");
|
sendErrorMessage(pluginData, msg.channel, "Invalid time specified for -repeat-until");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if (repeatUntil.isBefore(moment.utc())) {
|
if (repeatUntil.isBefore(moment.utc())) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "You can't set -repeat-until in the past");
|
sendErrorMessage(pluginData, msg.channel, "You can't set -repeat-until in the past");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if (repeatUntil.isAfter(MAX_REPEAT_UNTIL)) {
|
if (repeatUntil.isAfter(MAX_REPEAT_UNTIL)) {
|
||||||
return sendErrorMessage(
|
sendErrorMessage(
|
||||||
pluginData,
|
pluginData,
|
||||||
msg.channel,
|
msg.channel,
|
||||||
"Unfortunately, -repeat-until can only be at most 100 years into the future. Maybe 99 years would be enough?",
|
"Unfortunately, -repeat-until can only be at most 100 years into the future. Maybe 99 years would be enough?",
|
||||||
);
|
);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
} else if (opts["repeat-times"]) {
|
} else if (opts["repeat-times"]) {
|
||||||
repeatTimes = opts["repeat-times"];
|
repeatTimes = opts["repeat-times"];
|
||||||
if (repeatTimes <= 0) {
|
if (repeatTimes <= 0) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "-repeat-times must be 1 or more");
|
sendErrorMessage(pluginData, msg.channel, "-repeat-times must be 1 or more");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (repeatUntil && repeatTimes) {
|
if (repeatUntil && repeatTimes) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "You can only use one of -repeat-until or -repeat-times at once");
|
sendErrorMessage(pluginData, msg.channel, "You can only use one of -repeat-until or -repeat-times at once");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (opts.repeat && !repeatUntil && !repeatTimes) {
|
if (opts.repeat && !repeatUntil && !repeatTimes) {
|
||||||
return sendErrorMessage(
|
sendErrorMessage(pluginData, msg.channel, "You must specify -repeat-until or -repeat-times for repeated messages");
|
||||||
pluginData,
|
return;
|
||||||
msg.channel,
|
|
||||||
"You must specify -repeat-until or -repeat-times for repeated messages",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (opts.repeat) {
|
if (opts.repeat) {
|
||||||
|
@ -114,7 +115,8 @@ export async function actualPostCmd(
|
||||||
// Save schedule/repeat information in DB
|
// Save schedule/repeat information in DB
|
||||||
if (postAt) {
|
if (postAt) {
|
||||||
if (postAt < moment.utc()) {
|
if (postAt < moment.utc()) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "Post can't be scheduled to be posted in the past");
|
sendErrorMessage(pluginData, msg.channel, "Post can't be scheduled to be posted in the past");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await pluginData.state.scheduledPosts.create({
|
await pluginData.state.scheduledPosts.create({
|
||||||
|
|
|
@ -17,17 +17,20 @@ export const AddRoleCmd = rolesCmd({
|
||||||
|
|
||||||
async run({ message: msg, args, pluginData }) {
|
async run({ message: msg, args, pluginData }) {
|
||||||
if (!canActOn(pluginData, msg.member, args.member, true)) {
|
if (!canActOn(pluginData, msg.member, args.member, true)) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "Cannot add roles to this user: insufficient permissions");
|
sendErrorMessage(pluginData, msg.channel, "Cannot add roles to this user: insufficient permissions");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const roleId = await resolveRoleId(pluginData.client, pluginData.guild.id, args.role);
|
const roleId = await resolveRoleId(pluginData.client, pluginData.guild.id, args.role);
|
||||||
if (!roleId) {
|
if (!roleId) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "Invalid role id");
|
sendErrorMessage(pluginData, msg.channel, "Invalid role id");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const config = pluginData.config.getForMessage(msg);
|
const config = pluginData.config.getForMessage(msg);
|
||||||
if (!config.assignable_roles.includes(roleId)) {
|
if (!config.assignable_roles.includes(roleId)) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "You cannot assign that role");
|
sendErrorMessage(pluginData, msg.channel, "You cannot assign that role");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sanity check: make sure the role is configured properly
|
// Sanity check: make sure the role is configured properly
|
||||||
|
@ -36,11 +39,13 @@ export const AddRoleCmd = rolesCmd({
|
||||||
pluginData.state.logs.log(LogType.BOT_ALERT, {
|
pluginData.state.logs.log(LogType.BOT_ALERT, {
|
||||||
body: `Unknown role configured for 'roles' plugin: ${roleId}`,
|
body: `Unknown role configured for 'roles' plugin: ${roleId}`,
|
||||||
});
|
});
|
||||||
return sendErrorMessage(pluginData, msg.channel, "You cannot assign that role");
|
sendErrorMessage(pluginData, msg.channel, "You cannot assign that role");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.member.roles.includes(roleId)) {
|
if (args.member.roles.includes(roleId)) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "Member already has that role");
|
sendErrorMessage(pluginData, msg.channel, "Member already has that role");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
pluginData.state.logs.ignoreLog(LogType.MEMBER_ROLE_ADD, args.member.id);
|
pluginData.state.logs.ignoreLog(LogType.MEMBER_ROLE_ADD, args.member.id);
|
||||||
|
|
|
@ -28,22 +28,25 @@ export const MassAddRoleCmd = rolesCmd({
|
||||||
|
|
||||||
for (const member of members) {
|
for (const member of members) {
|
||||||
if (!canActOn(pluginData, msg.member, member, true)) {
|
if (!canActOn(pluginData, msg.member, member, true)) {
|
||||||
return sendErrorMessage(
|
sendErrorMessage(
|
||||||
pluginData,
|
pluginData,
|
||||||
msg.channel,
|
msg.channel,
|
||||||
"Cannot add roles to 1 or more specified members: insufficient permissions",
|
"Cannot add roles to 1 or more specified members: insufficient permissions",
|
||||||
);
|
);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const roleId = await resolveRoleId(pluginData.client, pluginData.guild.id, args.role);
|
const roleId = await resolveRoleId(pluginData.client, pluginData.guild.id, args.role);
|
||||||
if (!roleId) {
|
if (!roleId) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "Invalid role id");
|
sendErrorMessage(pluginData, msg.channel, "Invalid role id");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const config = pluginData.config.getForMessage(msg);
|
const config = pluginData.config.getForMessage(msg);
|
||||||
if (!config.assignable_roles.includes(roleId)) {
|
if (!config.assignable_roles.includes(roleId)) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "You cannot assign that role");
|
sendErrorMessage(pluginData, msg.channel, "You cannot assign that role");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const role = pluginData.guild.roles.get(roleId);
|
const role = pluginData.guild.roles.get(roleId);
|
||||||
|
@ -51,7 +54,8 @@ export const MassAddRoleCmd = rolesCmd({
|
||||||
pluginData.state.logs.log(LogType.BOT_ALERT, {
|
pluginData.state.logs.log(LogType.BOT_ALERT, {
|
||||||
body: `Unknown role configured for 'roles' plugin: ${roleId}`,
|
body: `Unknown role configured for 'roles' plugin: ${roleId}`,
|
||||||
});
|
});
|
||||||
return sendErrorMessage(pluginData, msg.channel, "You cannot assign that role");
|
sendErrorMessage(pluginData, msg.channel, "You cannot assign that role");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const membersWithoutTheRole = members.filter(m => !m.roles.includes(roleId));
|
const membersWithoutTheRole = members.filter(m => !m.roles.includes(roleId));
|
||||||
|
|
|
@ -28,22 +28,25 @@ export const MassRemoveRoleCmd = rolesCmd({
|
||||||
|
|
||||||
for (const member of members) {
|
for (const member of members) {
|
||||||
if (!canActOn(pluginData, msg.member, member, true)) {
|
if (!canActOn(pluginData, msg.member, member, true)) {
|
||||||
return sendErrorMessage(
|
sendErrorMessage(
|
||||||
pluginData,
|
pluginData,
|
||||||
msg.channel,
|
msg.channel,
|
||||||
"Cannot add roles to 1 or more specified members: insufficient permissions",
|
"Cannot add roles to 1 or more specified members: insufficient permissions",
|
||||||
);
|
);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const roleId = await resolveRoleId(pluginData.client, pluginData.guild.id, args.role);
|
const roleId = await resolveRoleId(pluginData.client, pluginData.guild.id, args.role);
|
||||||
if (!roleId) {
|
if (!roleId) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "Invalid role id");
|
sendErrorMessage(pluginData, msg.channel, "Invalid role id");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const config = pluginData.config.getForMessage(msg);
|
const config = pluginData.config.getForMessage(msg);
|
||||||
if (!config.assignable_roles.includes(roleId)) {
|
if (!config.assignable_roles.includes(roleId)) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "You cannot remove that role");
|
sendErrorMessage(pluginData, msg.channel, "You cannot remove that role");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const role = pluginData.guild.roles.get(roleId);
|
const role = pluginData.guild.roles.get(roleId);
|
||||||
|
@ -51,7 +54,8 @@ export const MassRemoveRoleCmd = rolesCmd({
|
||||||
pluginData.state.logs.log(LogType.BOT_ALERT, {
|
pluginData.state.logs.log(LogType.BOT_ALERT, {
|
||||||
body: `Unknown role configured for 'roles' plugin: ${roleId}`,
|
body: `Unknown role configured for 'roles' plugin: ${roleId}`,
|
||||||
});
|
});
|
||||||
return sendErrorMessage(pluginData, msg.channel, "You cannot remove that role");
|
sendErrorMessage(pluginData, msg.channel, "You cannot remove that role");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const membersWithTheRole = members.filter(m => m.roles.includes(roleId));
|
const membersWithTheRole = members.filter(m => m.roles.includes(roleId));
|
||||||
|
|
|
@ -17,17 +17,20 @@ export const RemoveRoleCmd = rolesCmd({
|
||||||
|
|
||||||
async run({ message: msg, args, pluginData }) {
|
async run({ message: msg, args, pluginData }) {
|
||||||
if (!canActOn(pluginData, msg.member, args.member, true)) {
|
if (!canActOn(pluginData, msg.member, args.member, true)) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "Cannot remove roles from this user: insufficient permissions");
|
sendErrorMessage(pluginData, msg.channel, "Cannot remove roles from this user: insufficient permissions");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const roleId = await resolveRoleId(pluginData.client, pluginData.guild.id, args.role);
|
const roleId = await resolveRoleId(pluginData.client, pluginData.guild.id, args.role);
|
||||||
if (!roleId) {
|
if (!roleId) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "Invalid role id");
|
sendErrorMessage(pluginData, msg.channel, "Invalid role id");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const config = pluginData.config.getForMessage(msg);
|
const config = pluginData.config.getForMessage(msg);
|
||||||
if (!config.assignable_roles.includes(roleId)) {
|
if (!config.assignable_roles.includes(roleId)) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "You cannot remove that role");
|
sendErrorMessage(pluginData, msg.channel, "You cannot remove that role");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sanity check: make sure the role is configured properly
|
// Sanity check: make sure the role is configured properly
|
||||||
|
@ -36,11 +39,13 @@ export const RemoveRoleCmd = rolesCmd({
|
||||||
pluginData.state.logs.log(LogType.BOT_ALERT, {
|
pluginData.state.logs.log(LogType.BOT_ALERT, {
|
||||||
body: `Unknown role configured for 'roles' plugin: ${roleId}`,
|
body: `Unknown role configured for 'roles' plugin: ${roleId}`,
|
||||||
});
|
});
|
||||||
return sendErrorMessage(pluginData, msg.channel, "You cannot remove that role");
|
sendErrorMessage(pluginData, msg.channel, "You cannot remove that role");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!args.member.roles.includes(roleId)) {
|
if (!args.member.roles.includes(roleId)) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "Member doesn't have that role");
|
sendErrorMessage(pluginData, msg.channel, "Member doesn't have that role");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
pluginData.state.logs.ignoreLog(LogType.MEMBER_ROLE_REMOVE, args.member.id);
|
pluginData.state.logs.ignoreLog(LogType.MEMBER_ROLE_REMOVE, args.member.id);
|
||||||
|
|
|
@ -126,11 +126,8 @@ export const SlowmodeSetCmd = slowmodeCmd({
|
||||||
rateLimitPerUser: rateLimitSeconds,
|
rateLimitPerUser: rateLimitSeconds,
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return sendErrorMessage(
|
sendErrorMessage(pluginData, msg.channel, `Failed to set native slowmode: ${disableInlineCode(e.message)}`);
|
||||||
pluginData,
|
return;
|
||||||
msg.channel,
|
|
||||||
`Failed to set native slowmode: ${disableInlineCode(e.message)}`,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// If there is an existing native slowmode, disable that first
|
// If there is an existing native slowmode, disable that first
|
||||||
|
|
|
@ -83,18 +83,21 @@ export async function displaySearch(
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (e instanceof SearchError) {
|
if (e instanceof SearchError) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, e.message);
|
sendErrorMessage(pluginData, msg.channel, e.message);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e instanceof InvalidRegexError) {
|
if (e instanceof InvalidRegexError) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, e.message);
|
sendErrorMessage(pluginData, msg.channel, e.message);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (searchResult.totalResults === 0) {
|
if (searchResult.totalResults === 0) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "No results found");
|
sendErrorMessage(pluginData, msg.channel, "No results found");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const resultWord = searchResult.totalResults === 1 ? "matching member" : "matching members";
|
const resultWord = searchResult.totalResults === 1 ? "matching member" : "matching members";
|
||||||
|
@ -203,18 +206,21 @@ export async function archiveSearch(
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (e instanceof SearchError) {
|
if (e instanceof SearchError) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, e.message);
|
sendErrorMessage(pluginData, msg.channel, e.message);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e instanceof InvalidRegexError) {
|
if (e instanceof InvalidRegexError) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, e.message);
|
sendErrorMessage(pluginData, msg.channel, e.message);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (results.totalResults === 0) {
|
if (results.totalResults === 0) {
|
||||||
return sendErrorMessage(pluginData, msg.channel, "No results found");
|
sendErrorMessage(pluginData, msg.channel, "No results found");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const resultList = args.ids ? formatSearchResultIdList(results.results) : formatSearchResultList(results.results);
|
const resultList = args.ids ? formatSearchResultIdList(results.results) : formatSearchResultList(results.results);
|
||||||
|
|
Loading…
Add table
Reference in a new issue