✨ added .overwriteChannel function to permissions
This commit is contained in:
		
							parent
							
								
									1889798b98
								
							
						
					
					
						commit
						d26785b098
					
				| @ -117,6 +117,16 @@ export class Permissions extends BitField { | |||||||
| 		throw new HTTPError(`You are missing the following permissions ${permission}`, 403); | 		throw new HTTPError(`You are missing the following permissions ${permission}`, 403); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	overwriteChannel(overwrites: ChannelPermissionOverwrite[]) { | ||||||
|  | 		if (!this.cache) throw new Error("permission chache not available"); | ||||||
|  | 		overwrites = overwrites.filter((x) => { | ||||||
|  | 			if (x.type === 0 && this.cache.roles?.some((r) => r.id === x.id)) return true; | ||||||
|  | 			if (x.type === 1 && x.id == this.cache.user_id) return true; | ||||||
|  | 			return false; | ||||||
|  | 		}); | ||||||
|  | 		return new Permissions(Permissions.channelPermission(overwrites, this.bitfield)); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	static channelPermission(overwrites: ChannelPermissionOverwrite[], init?: bigint) { | 	static channelPermission(overwrites: ChannelPermissionOverwrite[], init?: bigint) { | ||||||
| 		// TODO: do not deny any permissions if admin
 | 		// TODO: do not deny any permissions if admin
 | ||||||
| 		return overwrites.reduce((permission, overwrite) => { | 		return overwrites.reduce((permission, overwrite) => { | ||||||
| @ -186,7 +196,7 @@ export class Permissions extends BitField { | |||||||
| 			return new Permissions(); | 			return new Permissions(); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		return permission; | 		return new Permissions(permission); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -195,6 +205,7 @@ export type PermissionCache = { | |||||||
| 	member?: MemberDocument | null; | 	member?: MemberDocument | null; | ||||||
| 	guild?: GuildDocument | null; | 	guild?: GuildDocument | null; | ||||||
| 	roles?: RoleDocument[] | null; | 	roles?: RoleDocument[] | null; | ||||||
|  | 	user_id?: string; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export async function getPermission( | export async function getPermission( | ||||||
| @ -245,7 +256,7 @@ export async function getPermission( | |||||||
| 	const obj = new Permissions(permission); | 	const obj = new Permissions(permission); | ||||||
| 
 | 
 | ||||||
| 	// pass cache to permission for possible future getPermission calls
 | 	// pass cache to permission for possible future getPermission calls
 | ||||||
| 	obj.cache = { guild, member, channel, roles }; | 	obj.cache = { guild, member, channel, roles, user_id }; | ||||||
| 
 | 
 | ||||||
| 	return obj; | 	return obj; | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Flam3rboy
						Flam3rboy