67 lines
1.5 KiB
GDScript
67 lines
1.5 KiB
GDScript
class_name Permissions extends BitField
|
|
"""
|
|
Represents a bitfield of Discord permissions.
|
|
"""
|
|
|
|
var ALL
|
|
const DEFAULT = 104324673
|
|
|
|
|
|
func _init(bits = default_bit):
|
|
default_bit = 0
|
|
|
|
if bits == null:
|
|
bits = default_bit
|
|
|
|
FLAGS = {
|
|
'CREATE_INSTANT_INVITE': 1 << 0,
|
|
'KICK_MEMBERS': 1 << 1,
|
|
'BAN_MEMBERS': 1 << 2,
|
|
'ADMINISTRATOR': 1 << 3,
|
|
'MANAGE_CHANNELS': 1 << 4,
|
|
'MANAGE_GUILD': 1 << 5,
|
|
'ADD_REACTIONS': 1 << 6,
|
|
'VIEW_AUDIT_LOG': 1 << 7,
|
|
'PRIORITY_SPEAKER': 1 << 8,
|
|
'STREAM': 1 << 9,
|
|
'VIEW_CHANNEL': 1 << 10,
|
|
'SEND_MESSAGES': 1 << 11,
|
|
'SEND_TTS_MESSAGES': 1 << 12,
|
|
'MANAGE_MESSAGES': 1 << 13,
|
|
'EMBED_LINKS': 1 << 14,
|
|
'ATTACH_FILES': 1 << 15,
|
|
'READ_MESSAGE_HISTORY': 1 << 16,
|
|
'MENTION_EVERYONE': 1 << 17,
|
|
'USE_EXTERNAL_EMOJIS': 1 << 18,
|
|
'VIEW_GUILD_INSIGHTS': 1 << 19,
|
|
'CONNECT': 1 << 20,
|
|
'SPEAK': 1 << 21,
|
|
'MUTE_MEMBERS': 1 << 22,
|
|
'DEAFEN_MEMBERS': 1 << 23,
|
|
'MOVE_MEMBERS': 1 << 24,
|
|
'USE_VAD': 1 << 25,
|
|
'CHANGE_NICKNAME': 1 << 26,
|
|
'MANAGE_NICKNAMES': 1 << 27,
|
|
'MANAGE_ROLES': 1 << 28,
|
|
'MANAGE_WEBHOOKS': 1 << 29,
|
|
'MANAGE_EMOJIS_AND_STICKERS': 1 << 30,
|
|
'USE_APPLICATION_COMMANDS': 1 << 31,
|
|
'REQUEST_TO_SPEAK': 1 << 32,
|
|
'MANAGE_THREADS': 1 << 34,
|
|
'USE_PUBLIC_THREADS': 1 << 35,
|
|
'USE_PRIVATE_THREADS': 1 << 36,
|
|
'USE_EXTERNAL_STICKERS': 1 << 37,
|
|
}
|
|
|
|
bitfield = resolve(bits)
|
|
|
|
var values = FLAGS.values()
|
|
var prev = default_bit
|
|
for value in values:
|
|
prev |= value
|
|
ALL = prev
|
|
|
|
|
|
func missing(bits):
|
|
var BF = load('res://addons/discord_gd/classes/permissions.gd')
|
|
return BF.new(bits).remove(self).to_array()
|