diff --git a/objects/channel/channeltype.go b/objects/channel/channeltype.go index 82d6ec6..bb33e7c 100644 --- a/objects/channel/channeltype.go +++ b/objects/channel/channeltype.go @@ -16,4 +16,15 @@ const ( ChannelTypeGuildStageVoice ChannelTypeGuildDirectory ChannelTypeGuildForum + ChannelTypeGuildMedia ) + +func (t ChannelType) IsThread() bool { + return t == ChannelTypeGuildPublicThread || + t == ChannelTypeGuildPrivateThread || + t == ChannelTypeGuildNewsThread +} + +func (t ChannelType) IsPostBased() bool { + return t == ChannelTypeGuildForum || t == ChannelTypeGuildMedia +} diff --git a/permission/permission.go b/permission/permission.go index 9d7e2f2..de39dbc 100644 --- a/permission/permission.go +++ b/permission/permission.go @@ -1,5 +1,7 @@ package permission +import "github.com/TicketsBot-cloud/gdl/objects/channel" + type Permission uint64 const ( @@ -75,9 +77,9 @@ func BuildPermissions(permissions ...Permission) uint64 { func (p Permission) String() string { switch p { case CreateInstantInvite: - return "Create Instant Invite" + return "Create Invite" case KickMembers: - return "Kick Members" + return "Kick, Approve and Reject Members" case BanMembers: return "Ban Members" case Administrator: @@ -93,13 +95,13 @@ func (p Permission) String() string { case PrioritySpeaker: return "Priority Speaker" case Stream: - return "Stream" + return "Video" case ViewChannel: - return "Read Messages" + return "View Channels" case SendMessages: - return "Send Messages" + return "Send Messages and Create Posts" case SendTTSMessages: - return "Send TTS Messages" + return "Send Text-to-speech Messages" case ManageMessages: return "Manage Messages" case EmbedLinks: @@ -109,7 +111,7 @@ func (p Permission) String() string { case ReadMessageHistory: return "Read Message History" case MentionEveryone: - return "Mention Everyone" + return "Mention @everyone, @here and All Roles" case UseExternalEmojis: return "Use External Emojis" case ViewGuildInsights: @@ -135,7 +137,7 @@ func (p Permission) String() string { case ManageWebhooks: return "Manage Webhooks" case ManageEmojis: - return "Manage Emojis" + return "Manage Expressions" case UseApplicationCommands: return "Use Application Commands" case RequestToSpeak: @@ -143,7 +145,7 @@ func (p Permission) String() string { case ManageEvents: return "Manage Events" case ManageThreads: - return "Manage Threads" + return "Manage Threads and Posts" case CreatePublicThreads: return "Create Public Threads" case CreatePrivateThreads: @@ -151,17 +153,17 @@ func (p Permission) String() string { case UseExternalStickers: return "Use External Stickers" case SendMessagesInThreads: - return "Send Messages in Threads" + return "Send Messages in Threads and Posts" case UseEmbeddedActivities: - return "Use Embedded Activities" + return "Use Activities" case ModerateMembers: - return "Moderate Members" + return "Time out members" case ViewCreatorMonetizationAnalytics: return "View Creator Monetization Analytics" case UseSoundboard: return "Use Soundboard" case CreateGuildExpressions: - return "Create Guild Expressions" + return "Create Expressions" case CreateEvents: return "Create Events" case UseExternalSounds: @@ -169,16 +171,61 @@ func (p Permission) String() string { case SendVoiceMessages: return "Send Voice Messages" case SendPolls: - return "Send Polls" + return "Create Polls" case UseExternalApps: return "Use External Apps" case PinMessages: return "Pin Messages" + case BypassSlowmode: + return "Bypass Slowmode" default: return "Unknown Permission" } } +func (p Permission) ChannelName(channelType channel.ChannelType) string { + if channelType == channel.ChannelTypeGuildCategory { + if p == ManageRoles { + return "Manage Permissions" + } + + return p.String() + } + + if channelType.IsPostBased() { + switch p { + case SendMessages: + return "Create Posts" + case SendMessagesInThreads: + return "Send Messages in Posts" + case ManageThreads: + return "Manage Posts" + case ReadMessageHistory: + return "Read Post History" + } + } else { + switch p { + case SendMessages: + return "Send Messages" + case SendMessagesInThreads: + return "Send Messages in Threads" + case ManageThreads: + return "Manage Threads" + } + } + + switch p { + case ViewChannel: + return "View Channel" + case ManageChannels: + return "Manage Channel" + case ManageRoles: + return "Manage Permissions" + default: + return p.String() + } +} + var AllPermissions = []Permission{ CreateInstantInvite, KickMembers, @@ -230,4 +277,5 @@ var AllPermissions = []Permission{ SendPolls, UseExternalApps, PinMessages, + BypassSlowmode, }