aboutsummaryrefslogtreecommitdiff
path: root/lib/models/permissions.ml
blob: 1521a0e355c9d9734d90d64fa4e996f43d345581 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
type elt =
| CREATE_INSTANT_INVITE
| KICK_MEMBERS 
| BAN_MEMBERS 
| ADMINISTRATOR 
| MANAGE_CHANNELS 
| MANAGE_GUILD 
| ADD_REACTIONS 
| VIEW_AUDIT_LOG 
| PRIORITY_SPEAKER 
| READ_MESSAGES
| SEND_MESSAGES 
| SEND_TTS_MESSAGES 
| MANAGE_MESSAGES 
| EMBED_LINKS 
| ATTACH_FILES 
| READ_MESSAGE_HISTORY 
| MENTION_EVERYONE 
| USE_EXTERNAL_EMOJIS 
| CONNECT 
| SPEAK 
| MUTE_MEMBERS 
| DEAFEN_MEMBERS 
| MOVE_MEMBERS 
| USE_VAD 
| CHANGE_NICKNAME 
| MANAGE_NICKNAMES 
| MANAGE_ROLES 
| MANAGE_WEBHOOKS 
| MANAGE_EMOJIS

include BitMaskSet.Make(struct
    include BitMaskSet.Int
    type t = elt
    let mask = 0b0111_1111_1111_1111_0111_1101_1111_1111
end)

let of_seq seq = List.of_seq seq |> of_list

let to_seq mask = elements mask |> List.to_seq

let to_seq_from elt init =
    let _, _, r = split elt init in
    elt :: elements r |> List.to_seq

let add_seq seq init =
    List.of_seq seq
    |> of_list
    |> (lor) init