Implement method for checking member permissions #68
3 changed files with 26 additions and 3 deletions
11
types/enums.ts
Normal file
11
types/enums.ts
Normal file
|
@ -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
|
||||||
|
}
|
|
@ -19,16 +19,17 @@ export interface GuildResponse {
|
||||||
description: string | null,
|
description: string | null,
|
||||||
icon: string | null,
|
icon: string | null,
|
||||||
owner_uuid: string,
|
owner_uuid: string,
|
||||||
roles: [],
|
roles: RoleResponse[],
|
||||||
member_count: number
|
member_count: number
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GuildMemberResponse {
|
export interface GuildMemberResponse {
|
||||||
uuid: string,
|
uuid: string,
|
||||||
nickname: string,
|
nickname: string,
|
||||||
user_uuid: string,
|
|
||||||
guild_uuid: string,
|
guild_uuid: string,
|
||||||
user: UserResponse
|
is_owner: boolean,
|
||||||
|
user: UserResponse,
|
||||||
|
roles: RoleResponse[]
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface GuildMembersResponse {
|
export interface GuildMembersResponse {
|
||||||
|
|
11
utils/hasPermission.ts
Normal file
11
utils/hasPermission.ts
Normal file
|
@ -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;
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue