mirror of
https://github.com/ReVanced/revanced-bots.git
synced 2026-02-01 07:11:04 +00:00
feat(bots/discord): blacklist and whitelist for filters
This commit is contained in:
@@ -113,24 +113,18 @@ export const getResponseFromText = async (
|
||||
return responseConfig
|
||||
}
|
||||
|
||||
export const shouldScanMessage = (
|
||||
export const messageMatchesFilter = (
|
||||
message: Message,
|
||||
filter: NonNullable<Config['messageScan']>['filter'],
|
||||
): message is Message<true> => {
|
||||
if (message.author.bot) return false
|
||||
if (!message.guild) return false
|
||||
) => {
|
||||
if (!filter) return true
|
||||
|
||||
const filters = [
|
||||
filter.users?.includes(message.author.id),
|
||||
message.member?.roles.cache.some(x => filter.roles?.includes(x.id)),
|
||||
filter.channels?.includes(message.channel.id),
|
||||
]
|
||||
const memberRoles = new Set(message.member?.roles.cache.keys())
|
||||
const blFilter = filter.blacklist
|
||||
|
||||
if (filter.whitelist && filters.every(x => !x)) return false
|
||||
if (!filter.whitelist && filters.some(x => x)) return false
|
||||
|
||||
return true
|
||||
// If matches blacklist, will return false
|
||||
// Any other case, will return true
|
||||
return !(blFilter && (blFilter.channels?.includes(message.channelId) || blFilter.roles?.some(role => memberRoles.has(role)) || blFilter.users?.includes(message.author.id)))
|
||||
}
|
||||
|
||||
export const handleUserResponseCorrection = async (
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import { GuildMember, type User } from 'discord.js'
|
||||
import type { Config } from 'config.schema'
|
||||
import config from '../../../config'
|
||||
|
||||
export const isAdmin = (userOrMember: User | GuildMember, adminConfig: Config['admin']) => {
|
||||
return adminConfig?.users?.includes(userOrMember.id) || (userOrMember instanceof GuildMember && isMemberAdmin(userOrMember, adminConfig))
|
||||
export const isAdmin = (userOrMember: User | GuildMember) => {
|
||||
return config.admin?.users?.includes(userOrMember.id) || (userOrMember instanceof GuildMember && isMemberAdmin(userOrMember))
|
||||
}
|
||||
|
||||
export const isMemberAdmin = (member: GuildMember, adminConfig: Config['admin']) => {
|
||||
export const isMemberAdmin = (member: GuildMember) => {
|
||||
const roles = new Set(member.roles.cache.keys())
|
||||
return Boolean(adminConfig?.roles?.[member.guild.id]?.some(role => roles.has(role)))
|
||||
return Boolean(config?.admin?.roles?.[member.guild.id]?.some(role => roles.has(role)))
|
||||
}
|
||||
Reference in New Issue
Block a user