forked from Galactic/galactic-bot
fixes, changed error log to use plain text when missing embed perms
This commit is contained in:
parent
449a6dc408
commit
e28b2f2890
@ -306,7 +306,7 @@ class ModerationManager {
|
||||
if (target instanceof GuildMember) {
|
||||
// The cached member is sometimes outdated, ensure we get the latest member so the perm checks don't fail
|
||||
// Would help if members had a cached timestamp, might have to change this to work with a wrapper
|
||||
target = await guild.members.fetch({ user: target, force: true });
|
||||
target = await guild.members.fetch({ user: target, force: true }).catch(() => null);
|
||||
} else if (!(target instanceof User)) {
|
||||
target = await wrapper.channels.fetch(target.id, { force: true });
|
||||
}
|
||||
|
@ -137,7 +137,8 @@ module.exports = class AutoModeration extends Observer {
|
||||
|
||||
if (!enabled || roles.some((r) => bypass.includes(r)) || ignore.includes(channel.id)) return;
|
||||
|
||||
const missing = channel.permissionsFor(this.client.user)?.missing('ManageMessages') || [];
|
||||
const perms = channel.permissionsFor(this.client.user);
|
||||
const missing = perms?.missing('ManageMessages') || [];
|
||||
if (missing.length) {
|
||||
this.client.emit('filterMissingPermissions', { channel, guild: wrapper, filter: 'word', permissions: missing });
|
||||
return;
|
||||
@ -209,7 +210,7 @@ module.exports = class AutoModeration extends Observer {
|
||||
log += `\nFilter result: ${inspect(filterResult)}`;
|
||||
|
||||
|
||||
if (!silent && channel.permissionsFor(this.client.user)?.has('SendMessages')) {
|
||||
if (!silent && perms?.has('SendMessages')) {
|
||||
const res = await this.client.rateLimiter.limitSend(msg.channel, wrapper.format('W_FILTER_DELETE', { user: author.id }), undefined, 'wordFilter').catch(() => null);
|
||||
//const res = await msg.formattedRespond('W_FILTER_DELETE', { params: { user: author.id } });
|
||||
//if (res) res.delete({ timeout: 10000 }).catch(catcher(240));
|
||||
@ -439,7 +440,8 @@ module.exports = class AutoModeration extends Observer {
|
||||
|
||||
if (roles.some((r) => bypass.includes(r)) || ignore.includes(channel.id)) return;
|
||||
|
||||
const missing = channel.permissionsFor(this.client.user)?.missing('ManageMessages') || [];
|
||||
const perms = channel.permissionsFor(this.client.user);
|
||||
const missing = perms?.missing('ManageMessages') || [];
|
||||
if (missing.length) {
|
||||
this.client.emit('filterMissingPermissions', { channel, guild: wrapper, filter: 'link', permissions: missing });
|
||||
return;
|
||||
@ -516,7 +518,7 @@ module.exports = class AutoModeration extends Observer {
|
||||
msg.filtered = filterResult;
|
||||
filterResult.filter = 'link';
|
||||
|
||||
if (!silent) {
|
||||
if (!silent && perms?.has('SendMessages')) {
|
||||
const res = await this.client.rateLimiter.limitSend(msg.channel, wrapper.format('L_FILTER_DELETE', { user: author.id }), undefined, 'linkFilter');
|
||||
//const res = await msg.formattedRespond(`L_FILTER_DELETE`, { params: { user: author.id } });
|
||||
//if (res) res.delete({ timeout: 10000 });
|
||||
@ -566,7 +568,8 @@ module.exports = class AutoModeration extends Observer {
|
||||
|
||||
if (roles.some((r) => bypass?.includes(r)) || ignore?.includes(channel.id)) return;
|
||||
|
||||
const missing = channel.permissionsFor(this.client.user)?.missing('ManageMessages') || [];
|
||||
const perms = channel.permissionsFor(this.client.user);
|
||||
const missing = perms?.missing('ManageMessages') || [];
|
||||
if (missing.length) {
|
||||
this.client.emit('filterMissingPermissions', { channel, guild: wrapper, filter: 'invite', permissions: missing });
|
||||
return;
|
||||
@ -594,7 +597,7 @@ module.exports = class AutoModeration extends Observer {
|
||||
filter: 'invite'
|
||||
};
|
||||
if (!action) return this.client.rateLimiter.queueDelete(msg.channel, msg).catch(() => null); //msg.delete();
|
||||
if (!silent) {
|
||||
if (!silent && perms?.has('SendMessages')) {
|
||||
const res = await this.client.rateLimiter.limitSend(msg.channel, wrapper.format('I_FILTER_DELETE', { user: author.id }), undefined, 'inviteFilter');
|
||||
//if (res) res.delete({ timeout: 10000 });
|
||||
setTimeout(() => {
|
||||
@ -626,7 +629,8 @@ module.exports = class AutoModeration extends Observer {
|
||||
|
||||
if (!enabled || roles.some((r) => bypass.includes(r)) || ignore.includes(channel.id)) return;
|
||||
|
||||
const missing = channel.permissionsFor(this.client.user)?.missing('ManageMessages') || [];
|
||||
const perms = channel.permissionsFor(this.client.user);
|
||||
const missing = perms?.missing('ManageMessages') || [];
|
||||
if (missing.length) {
|
||||
this.client.emit('filterMissingPermissions', { channel, guild: wrapper, filter: 'mention', permissions: missing });
|
||||
return;
|
||||
@ -646,7 +650,7 @@ module.exports = class AutoModeration extends Observer {
|
||||
}
|
||||
|
||||
if (ids.length < limit) return;
|
||||
if (!silent) {
|
||||
if (!silent && perms?.has('SendMessages')) {
|
||||
const res = await this.client.rateLimiter.limitSend(channel, wrapper.format('M_FILTER_DELETE', { user: author.id }), undefined, 'mentionFilter');
|
||||
setTimeout(() => {
|
||||
res.delete?.().catch(() => { /**/ });
|
||||
@ -678,4 +682,8 @@ module.exports = class AutoModeration extends Observer {
|
||||
|
||||
}
|
||||
|
||||
async raidProtection(member) {
|
||||
|
||||
}
|
||||
|
||||
};
|
@ -153,12 +153,17 @@ class ErrorLog extends Observer {
|
||||
async post(guild, embed, type) {
|
||||
const settings = await guild.settings();
|
||||
const { errors } = settings;
|
||||
|
||||
// TODO add types to error logging
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
const { channel: _channel, types } = errors;
|
||||
if (!_channel) return;
|
||||
|
||||
const channel = await guild.resolveChannel(_channel);
|
||||
if (!channel || channel.permissionsFor(guild.me).missing('SendMessages', 'EmbedLinks')) return;
|
||||
this.client.rateLimiter.limitSend(channel, { embeds: [embed] }, null, type);
|
||||
const perms = channel.permissionsFor(guild.me);
|
||||
|
||||
if (!channel || perms.missing('SendMessages').length) return;
|
||||
if (!perms.missing('EmbedLinks').length) this.client.rateLimiter.limitSend(channel, { content: embed.description });
|
||||
else this.client.rateLimiter.limitSend(channel, { embeds: [embed] }, null, type);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user