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()