diff --git a/types/enums.ts b/types/enums.ts new file mode 100644 index 0000000..ac2daba --- /dev/null +++ b/types/enums.ts @@ -0,0 +1,11 @@ +export const enum Permission { + SendMessage = 1, + ManageChannel = 2, + ManageRole = 4, + CreateInvite = 8, + ManageInvite = 16, + ManageGuild = 32, + ManageMember = 64, + BanMember = 128, + KickMember = 256 +} \ No newline at end of file diff --git a/types/interfaces.ts b/types/interfaces.ts index 276c4dc..d175d76 100644 --- a/types/interfaces.ts +++ b/types/interfaces.ts @@ -19,16 +19,17 @@ export interface GuildResponse { description: string | null, icon: string | null, owner_uuid: string, - roles: [], + roles: RoleResponse[], member_count: number } export interface GuildMemberResponse { uuid: string, nickname: string, - user_uuid: string, guild_uuid: string, - user: UserResponse + is_owner: boolean, + user: UserResponse, + roles: RoleResponse[] } export interface GuildMembersResponse { diff --git a/utils/hasPermission.ts b/utils/hasPermission.ts new file mode 100644 index 0000000..750716e --- /dev/null +++ b/utils/hasPermission.ts @@ -0,0 +1,11 @@ +import type { Permission } from "~/types/enums"; +import type { GuildMemberResponse } from "~/types/interfaces"; + +export default (member: GuildMemberResponse, permission: Permission) => { + for (const role of member.roles) { + if (role.permissions & permission) { + return true; + } + } + return false; +}