Files
discordeno/examples/advanced/src/utils/permissions.ts
Fleny 919474069d chore: Migrate ESLint and prettier to Biome (#3634)
* Migrate eslint and prettier to biomejs

This does NOT include examples/bigbot as it has its own formatter

* Update to biome 1.8.0

* Readd dotenv dev dependency to rest

During a merge it got lost
2024-07-13 13:05:02 -05:00

21 lines
783 B
TypeScript

import assert from 'node:assert'
import { BitwisePermissionFlags, type Guild, type Member } from '@discordeno/bot'
export async function calculateMemberPermissions(guild: Guild, member: Member): Promise<bigint> {
if (member.id === guild.ownerId) return 8n
let permissions = guild.roles.get(guild.id)?.permissions.bitfield
const rolePerms = member.roles.map((x) => guild.roles.get(x)?.permissions.bitfield).filter((x): x is bigint => x !== undefined)
// Small hack to avoid calling assert with 0n
if (permissions === undefined) assert(permissions)
for (const rolePerm of rolePerms) {
permissions |= rolePerm
}
if ((permissions & BigInt(BitwisePermissionFlags.ADMINISTRATOR)) === BigInt(BitwisePermissionFlags.ADMINISTRATOR)) return 8n
return permissions
}