function checkPermissions()

in src/listeners/interactionCreate.ts [32:77]


function checkPermissions(interaction: BaseInteraction): string | null {
  if (!interaction.inGuild()) {
    // no DM's, change if needed
    if (LOG_ERRORS) {
      console.log("Permissions error: No guild.");
    }
    return "**Error:** You don't have permission to do that.";
  }

  if (
    interaction.guildId &&
    !ALLOWED_SERVER_IDS.includes(interaction.guildId)
  ) {
    if (LOG_ERRORS) {
      console.log(
        `Permissions error: Guild ${interaction.guildId} not allowed.`
      );
    }
    return "**Error:** You don't have permission to do that.";
  }

  if (
    !interaction.appPermissions ||
    !interaction.appPermissions.has(PermissionsBitField.Flags.ViewChannel)
  ) {
    // Even though commands don't need ViewChannel, you can't selectively allow
    // commands in certain channels, so we implement permissions by using ViewChannel.
    if (LOG_ERRORS) {
      console.log(`Permissions error: Bot has no view perms in channel.`);
    }
    return "**Error:** You don't have permission to do that.";
  }

  if (
    !interaction.memberPermissions ||
    !interaction.memberPermissions.has(PermissionsBitField.Flags.SendMessages)
  ) {
    // Match bot perms to whether user has message perm
    if (LOG_ERRORS) {
      console.log(`Permissions error: User has no send perms in channel.`);
    }
    return "**Error:** You don't have permission to do that.";
  }

  return null;
}