Geoxor / Naoko

Naoko is my main Discord Bot
GNU General Public License v3.0
15 stars 16 forks source link

Add restricted channels bypass (for devs or other role) #162

Closed otiskujawa closed 9 months ago

otiskujawa commented 1 year ago

i forgot to add import in #161

Its-treason commented 1 year ago

I think it would be better if we store all Role ID's inside a class constant, so the If doesn't get too long, and it makes it easier to add more roles later

  export default class RestrictedChannel extends AbstractPipelineElement {
    private readonly RESTRICTED_CHANNELS = [GEOXOR_GENERAL_CHANNEL_ID];
+   private readonly WHITELISTED_ROLES = [MOD_ROLE_ID, ADMIN_ROLE_ID, GEOXOR_DEV_ROLE_ID];

    execute(payload: MessageCreatePayload): Awaitable<boolean> {
      const message = payload.get("message");

      // Do not allow Commands in RestrictedChannels
      // Not Geoxor's guild or in a restricted channel -> Continue
      if (!message.member || !this.RESTRICTED_CHANNELS.includes(message.channel.id)) {
        return true;
      }

      // Check if user is a mod, admin or has admin perms if not, return
      if (
-       message.member.roles.cache.some((role) => role.id === MOD_ROLE_ID || role.id === ADMIN_ROLE_ID || role.id === RESTRICT_BYPASS_ROLE_ID) ||
+       message.member.roles.cache.some((role) => this.WHITELISTED_ROLES.includes(role.id)) ||
        message.member.permissions.has("Administrator")
      ) {
        return true;
      }
      return false;
    }
  }
Geoxor commented 9 months ago

do i merge this?