diff --git a/bot/button/handlers/viewsurvey.go b/bot/button/handlers/viewsurvey.go index b30397f..e90a206 100644 --- a/bot/button/handlers/viewsurvey.go +++ b/bot/button/handlers/viewsurvey.go @@ -120,7 +120,7 @@ func (h *ViewSurveyHandler) Execute(ctx *context.ButtonContext) { buttons = append(buttons, logic.TranscriptLinkElement(ticket.HasTranscript)(ctx.Worker(), ticket)...) buttons = append(buttons, logic.ThreadLinkElement(ticket.ChannelId != nil && ticket.IsThread)(ctx.Worker(), ticket)...) - comps := []component.Component{ + innerComponents := []component.Component{ component.BuildTextDisplay(component.TextDisplay{Content: fmt.Sprintf("## Exit Survey for %s", opener.GlobalName)}), component.BuildSeparator(component.Separator{}), component.BuildTextDisplay(component.TextDisplay{ @@ -129,11 +129,11 @@ func (h *ViewSurveyHandler) Execute(ctx *context.ButtonContext) { } if len(buttons) > 0 { - comps = append(comps, component.BuildActionRow(buttons...)) + innerComponents = append(innerComponents, component.BuildActionRow(buttons...)) } ctx.ReplyWith(command.NewMessageResponseWithComponents(utils.Slice(component.BuildContainer(component.Container{ AccentColor: utils.Ptr(ctx.GetColour(customisation.Green)), - Components: comps, + Components: innerComponents, })))) } diff --git a/bot/command/impl/admin/adminlistguildentitlements.go b/bot/command/impl/admin/adminlistguildentitlements.go index 767b282..0bb4dc7 100644 --- a/bot/command/impl/admin/adminlistguildentitlements.go +++ b/bot/command/impl/admin/adminlistguildentitlements.go @@ -97,7 +97,7 @@ func (AdminListGuildEntitlementsCommand) Execute(ctx registry.CommandContext, gu return } - values := []component.Component{} + innerComponents := []component.Component{} for _, entitlement := range entitlements { value := fmt.Sprintf( @@ -110,7 +110,7 @@ func (AdminListGuildEntitlementsCommand) Execute(ctx registry.CommandContext, gu entitlement.SkuPriority, ) - values = append(values, component.BuildTextDisplay(component.TextDisplay{Content: value})) + innerComponents = append(innerComponents, component.BuildTextDisplay(component.TextDisplay{Content: value})) } ctx.ReplyWith(command.NewMessageResponseWithComponents([]component.Component{ @@ -118,7 +118,7 @@ func (AdminListGuildEntitlementsCommand) Execute(ctx registry.CommandContext, gu ctx, customisation.Orange, i18n.Admin, - values, + innerComponents, ), })) } diff --git a/bot/command/impl/admin/adminlistuserentitlements.go b/bot/command/impl/admin/adminlistuserentitlements.go index 12885d4..13b5e24 100644 --- a/bot/command/impl/admin/adminlistuserentitlements.go +++ b/bot/command/impl/admin/adminlistuserentitlements.go @@ -50,7 +50,7 @@ func (AdminListUserEntitlementsCommand) Execute(ctx registry.CommandContext, use return } - values := []component.Component{} + innerComponents := []component.Component{} for _, entitlement := range entitlements { @@ -64,7 +64,7 @@ func (AdminListUserEntitlementsCommand) Execute(ctx registry.CommandContext, use entitlement.SkuPriority, ) - values = append(values, component.BuildTextDisplay(component.TextDisplay{Content: value})) + innerComponents = append(innerComponents, component.BuildTextDisplay(component.TextDisplay{Content: value})) } ctx.ReplyWith(command.NewMessageResponseWithComponents([]component.Component{ @@ -72,7 +72,7 @@ func (AdminListUserEntitlementsCommand) Execute(ctx registry.CommandContext, use ctx, customisation.Orange, i18n.Admin, - values, + innerComponents, ), })) } diff --git a/bot/command/impl/admin/adminwhitelabeldata.go b/bot/command/impl/admin/adminwhitelabeldata.go index f47b949..7d16832 100644 --- a/bot/command/impl/admin/adminwhitelabeldata.go +++ b/bot/command/impl/admin/adminwhitelabeldata.go @@ -127,7 +127,7 @@ func (AdminWhitelabelDataCommand) Execute(ctx registry.CommandContext, userId ui tds += fmt.Sprintf("**%s:** %s\n", fields[i].Name, fields[i].Value) } - comps := []component.Component{ + innerComponents := []component.Component{ component.BuildTextDisplay(component.TextDisplay{Content: "## Whitelabel"}), component.BuildSeparator(component.Separator{}), component.BuildTextDisplay(component.TextDisplay{ @@ -137,6 +137,6 @@ func (AdminWhitelabelDataCommand) Execute(ctx registry.CommandContext, userId ui ctx.ReplyWith(command.NewMessageResponseWithComponents(utils.Slice(component.BuildContainer(component.Container{ AccentColor: utils.Ptr(ctx.GetColour(customisation.Green)), - Components: comps, + Components: innerComponents, })))) } diff --git a/bot/command/impl/general/jumptotop.go b/bot/command/impl/general/jumptotop.go index 8c5a5b8..336c961 100644 --- a/bot/command/impl/general/jumptotop.go +++ b/bot/command/impl/general/jumptotop.go @@ -52,7 +52,7 @@ func (JumpToTopCommand) Execute(ctx registry.CommandContext) { } messageLink := fmt.Sprintf("https://discord.com/channels/%d/%d/%d", ctx.GuildId(), ctx.ChannelId(), *ticket.WelcomeMessageId) - components := []component.Component{ + innerComponents := []component.Component{ component.BuildTextDisplay(component.TextDisplay{Content: ctx.GetMessage(i18n.MessageJumpToTopContent)}), component.BuildSeparator(component.Separator{Divider: utils.Ptr(false)}), component.BuildActionRow(component.BuildButton(component.Button{ @@ -64,7 +64,7 @@ func (JumpToTopCommand) Execute(ctx registry.CommandContext) { } if _, err := ctx.ReplyWith(command.NewEphemeralMessageResponseWithComponents([]component.Component{ - utils.BuildContainerWithComponents(ctx, customisation.Green, i18n.TitleJumpToTop, components), + utils.BuildContainerWithComponents(ctx, customisation.Green, i18n.TitleJumpToTop, innerComponents), })); err != nil { ctx.HandleError(err) return diff --git a/bot/command/impl/settings/blacklist.go b/bot/command/impl/settings/blacklist.go index f30d052..81f29ff 100644 --- a/bot/command/impl/settings/blacklist.go +++ b/bot/command/impl/settings/blacklist.go @@ -52,138 +52,148 @@ func (BlacklistCommand) Execute(ctx registry.CommandContext, id uint64) { return } - if mentionableType == context.MentionableTypeUser { - member, err := ctx.Worker().GetGuildMember(ctx.GuildId(), id) - if err != nil { - ctx.HandleError(err) - return - } + switch mentionableType { + case context.MentionableTypeUser: + BlacklistCommand{}.handleUserBlacklist(ctx, id, usageEmbed) + case context.MentionableTypeRole: + BlacklistCommand{}.handleRoleBlacklist(ctx, id, usageEmbed) + default: + ctx.HandleError(fmt.Errorf("invalid mentionable type")) + } +} + +func (BlacklistCommand) handleUserBlacklist(ctx registry.CommandContext, id uint64, usageEmbed model.Field) { + member, err := ctx.Worker().GetGuildMember(ctx.GuildId(), id) + if err != nil { + ctx.HandleError(err) + return + } + + if ctx.UserId() == id { + ctx.ReplyWithFields(customisation.Red, i18n.Error, i18n.MessageBlacklistSelf, utils.ToSlice(usageEmbed)) + return + } - if ctx.UserId() == id { - ctx.ReplyWithFields(customisation.Red, i18n.Error, i18n.MessageBlacklistSelf, utils.ToSlice(usageEmbed)) + permLevel, err := permission.GetPermissionLevel(ctx, utils.ToRetriever(ctx.Worker()), member, ctx.GuildId()) + if err != nil { + ctx.HandleError(err) + return + } + + if permLevel > permission.Everyone { + ctx.ReplyWithFields(customisation.Red, i18n.Error, i18n.MessageBlacklistStaff, utils.ToSlice(usageEmbed)) + return + } + + isBlacklisted, err := dbclient.Client.Blacklist.IsBlacklisted(ctx, ctx.GuildId(), id) + if err != nil { + sentry.ErrorWithContext(err, ctx.ToErrorContext()) + return + } + + if isBlacklisted { + if err := dbclient.Client.Blacklist.Remove(ctx, ctx.GuildId(), id); err != nil { + ctx.HandleError(err) return } - - permLevel, err := permission.GetPermissionLevel(ctx, utils.ToRetriever(ctx.Worker()), member, ctx.GuildId()) + } else { + // Check user blacklist limit + count, err := dbclient.Client.Blacklist.GetBlacklistedCount(ctx, ctx.GuildId()) if err != nil { ctx.HandleError(err) return } - if permLevel > permission.Everyone { - ctx.ReplyWithFields(customisation.Red, i18n.Error, i18n.MessageBlacklistStaff, utils.ToSlice(usageEmbed)) + if count >= 250 { + ctx.Reply(customisation.Red, i18n.Error, i18n.MessageBlacklistLimit, 250) return } - isBlacklisted, err := dbclient.Client.Blacklist.IsBlacklisted(ctx, ctx.GuildId(), id) - if err != nil { - sentry.ErrorWithContext(err, ctx.ToErrorContext()) + if err := dbclient.Client.Blacklist.Add(ctx, ctx.GuildId(), member.User.Id); err != nil { + ctx.HandleError(err) return } + } - blacklistMsg := i18n.MessageBlacklistRemove - - if isBlacklisted { - if err := dbclient.Client.Blacklist.Remove(ctx, ctx.GuildId(), id); err != nil { - ctx.HandleError(err) - return - } - } else { - // Limit of 250 *users* - count, err := dbclient.Client.Blacklist.GetBlacklistedCount(ctx, ctx.GuildId()) - if err != nil { - ctx.HandleError(err) - return - } - - if count >= 250 { - ctx.Reply(customisation.Red, i18n.Error, i18n.MessageBlacklistLimit, 250) - return - } - - if err := dbclient.Client.Blacklist.Add(ctx, ctx.GuildId(), member.User.Id); err != nil { - ctx.HandleError(err) - return - } - blacklistMsg = i18n.MessageBlacklistAdd - } + BlacklistCommand{}.sendBlacklistResponse(ctx, id, isBlacklisted, true) +} - ctx.ReplyWith( - command.NewEphemeralMessageResponseWithComponents( - utils.Slice( - utils.BuildContainerRaw(ctx.GetColour(customisation.Green), ctx.GetMessage(i18n.TitleBlacklist), ctx.GetMessage(blacklistMsg, id), ctx.PremiumTier()), - ), - ), - ) - } else if mentionableType == context.MentionableTypeRole { - // Check if role is staff - isSupport, err := dbclient.Client.RolePermissions.IsSupport(ctx, id) - if err != nil { - ctx.HandleError(err) - return - } +func (BlacklistCommand) handleRoleBlacklist(ctx registry.CommandContext, id uint64, usageEmbed model.Field) { + // Check if role is support role + isSupport, err := dbclient.Client.RolePermissions.IsSupport(ctx, id) + if err != nil { + ctx.HandleError(err) + return + } + + if isSupport { + ctx.ReplyWithFields(customisation.Red, i18n.Error, i18n.MessageBlacklistStaff, utils.ToSlice(usageEmbed)) + return + } - if isSupport { - ctx.ReplyWithFields(customisation.Red, i18n.Error, i18n.MessageBlacklistStaff, utils.ToSlice(usageEmbed)) // TODO: Does this need a new message? + // Check if role is part of any support team + isSupport, err = dbclient.Client.SupportTeamRoles.IsSupport(ctx, ctx.GuildId(), id) + if err != nil { + ctx.HandleError(err) + return + } + + if isSupport { + ctx.ReplyWithFields(customisation.Red, i18n.Error, i18n.MessageBlacklistStaff, utils.ToSlice(usageEmbed)) + return + } + + isBlacklisted, err := dbclient.Client.RoleBlacklist.IsBlacklisted(ctx, ctx.GuildId(), id) + if err != nil { + ctx.HandleError(err) + return + } + + if isBlacklisted { + if err := dbclient.Client.RoleBlacklist.Remove(ctx, ctx.GuildId(), id); err != nil { + ctx.HandleError(err) return } - - // Check if staff is part of any team - isSupport, err = dbclient.Client.SupportTeamRoles.IsSupport(ctx, ctx.GuildId(), id) + } else { + // Check role blacklist limit - use RoleBlacklist instead of Blacklist + count, err := dbclient.Client.RoleBlacklist.GetBlacklistedCount(ctx, ctx.GuildId()) if err != nil { ctx.HandleError(err) return } - if isSupport { - ctx.ReplyWithFields(customisation.Red, i18n.Error, i18n.MessageBlacklistStaff, utils.ToSlice(usageEmbed)) // TODO: Does this need a new message? + if count >= 50 { + ctx.Reply(customisation.Red, i18n.Error, i18n.MessageBlacklistRoleLimit, 50) return } - isBlacklisted, err := dbclient.Client.RoleBlacklist.IsBlacklisted(ctx, ctx.GuildId(), id) - if err != nil { + if err := dbclient.Client.RoleBlacklist.Add(ctx, ctx.GuildId(), id); err != nil { ctx.HandleError(err) return } + } - blacklistMsg := i18n.MessageBlacklistRemoveRole - - if isBlacklisted { - if err := dbclient.Client.RoleBlacklist.Remove(ctx, ctx.GuildId(), id); err != nil { - ctx.HandleError(err) - return - } - } else { - // Limit of 50 *roles* - count, err := dbclient.Client.Blacklist.GetBlacklistedCount(ctx, ctx.GuildId()) - if err != nil { - ctx.HandleError(err) - return - } - - if count >= 50 { - ctx.Reply(customisation.Red, i18n.Error, i18n.MessageBlacklistRoleLimit, 50) - return - } - - if err := dbclient.Client.RoleBlacklist.Add(ctx, ctx.GuildId(), id); err != nil { - ctx.HandleError(err) - return - } - blacklistMsg = i18n.MessageBlacklistAddRole - - ctx.Reply(customisation.Green, i18n.TitleBlacklist, i18n.MessageBlacklistAddRole, id) - } + BlacklistCommand{}.sendBlacklistResponse(ctx, id, isBlacklisted, false) +} - ctx.ReplyWith( - command.NewEphemeralMessageResponseWithComponents( - utils.Slice( - utils.BuildContainerRaw(ctx.GetColour(customisation.Green), ctx.GetMessage(i18n.TitleBlacklist), ctx.GetMessage(blacklistMsg, id), ctx.PremiumTier()), - ), - ), - ) +func (BlacklistCommand) sendBlacklistResponse(ctx registry.CommandContext, id uint64, wasBlacklisted, isUser bool) { + blacklistMsg := i18n.MessageBlacklistAdd + if wasBlacklisted { + blacklistMsg = i18n.MessageBlacklistRemove + } + + var message string + if isUser { + message = fmt.Sprintf("<@%d> %s", id, ctx.GetMessage(blacklistMsg)) } else { - ctx.HandleError(fmt.Errorf("infallible")) - return + message = fmt.Sprintf("<@&%d> %s", id, ctx.GetMessage(blacklistMsg)) } + + ctx.ReplyWith( + command.NewEphemeralMessageResponseWithComponents( + utils.Slice( + utils.BuildContainerRaw(ctx.GetColour(customisation.Green), ctx.GetMessage(i18n.TitleBlacklist), message, ctx.PremiumTier()), + ), + ), + ) } diff --git a/bot/command/impl/settings/premium.go b/bot/command/impl/settings/premium.go index c764d96..a4634ab 100644 --- a/bot/command/impl/settings/premium.go +++ b/bot/command/impl/settings/premium.go @@ -107,7 +107,7 @@ func (PremiumCommand) Execute(ctx registry.CommandContext) { keyEmoji = utils.BuildEmoji("🔑") } - components := []component.Component{ + innerComponents := []component.Component{ component.BuildSection(component.Section{ Components: utils.Slice( component.BuildTextDisplay(component.TextDisplay{Content: fmt.Sprintf("## %s", ctx.GetMessage(i18n.TitlePremium))}), @@ -152,13 +152,13 @@ func (PremiumCommand) Execute(ctx registry.CommandContext) { } if ctx.PremiumTier() == premium.None { - components = utils.AddPremiumFooter(components) + innerComponents = utils.AddPremiumFooter(innerComponents) } ctx.ReplyWith( command.NewEphemeralMessageResponseWithComponents( utils.Slice(component.BuildContainer(component.Container{ - Components: components, + Components: innerComponents, AccentColor: utils.Ptr(ctx.GetColour(customisation.Green)), })), ), diff --git a/bot/command/impl/tickets/startticket.go b/bot/command/impl/tickets/startticket.go index f4db1e8..e77e4e3 100644 --- a/bot/command/impl/tickets/startticket.go +++ b/bot/command/impl/tickets/startticket.go @@ -9,6 +9,7 @@ import ( "github.com/TicketsBot-cloud/database" "github.com/TicketsBot-cloud/gdl/objects/channel/message" "github.com/TicketsBot-cloud/gdl/objects/interaction" + "github.com/TicketsBot-cloud/gdl/objects/interaction/component" "github.com/TicketsBot-cloud/gdl/rest" "github.com/TicketsBot-cloud/gdl/rest/request" "github.com/TicketsBot-cloud/worker/bot/command" @@ -110,12 +111,19 @@ func (StartTicketCommand) Execute(ctx registry.CommandContext) { func sendTicketStartedFromMessage(ctx registry.CommandContext, ticket database.Ticket, msg message.Message) { // format messageLink := fmt.Sprintf("https://discord.com/channels/%d/%d/%d", ctx.GuildId(), ctx.ChannelId(), msg.Id) - contentFormatted := strings.ReplaceAll(utils.StringMax(msg.Content, 2048, "..."), "`", "\\`") - msgEmbed := utils.BuildContainer( - ctx, customisation.Green, i18n.Ticket, i18n.MessageTicketStartedFrom, - messageLink, msg.Author.Id, ctx.ChannelId(), contentFormatted, - ) + var msgEmbed component.Component + if msg.Content == "" { + msgEmbed = utils.BuildContainer( + ctx, customisation.Green, i18n.Ticket, i18n.MessageTicketStartedFromNoContent, + messageLink, + ) + } else { + msgEmbed = utils.BuildContainer( + ctx, customisation.Green, i18n.Ticket, i18n.MessageTicketStartedFrom, + messageLink, msg.Author.Id, ctx.ChannelId(), strings.ReplaceAll(utils.StringMax(msg.Content, 2048, "..."), "`", "\\`"), + ) + } if _, err := ctx.Worker().CreateMessageComplex(*ticket.ChannelId, rest.CreateMessageData{ Components: utils.Slice(msgEmbed), diff --git a/bot/logic/closeembed.go b/bot/logic/closeembed.go index de4f1f6..1dd7e02 100644 --- a/bot/logic/closeembed.go +++ b/bot/logic/closeembed.go @@ -265,7 +265,7 @@ func BuildCloseContainer( } transcriptLink := fmt.Sprintf("%s/manage/%d/transcripts/view/%d", config.Conf.Bot.DashboardUrl, ticket.GuildId, ticket.Id) - cc := []component.Component{ + innerComponents := []component.Component{ component.BuildSection(component.Section{ Accessory: component.BuildButton(component.Button{ Label: "View Transcript", @@ -283,12 +283,12 @@ func BuildCloseContainer( } if cmd.PremiumTier() == premium.None { - cc = utils.AddPremiumFooter(cc) + innerComponents = utils.AddPremiumFooter(innerComponents) } container := component.BuildContainer(component.Container{ AccentColor: utils.Ptr(cmd.GetColour(customisation.Green)), - Components: cc, + Components: innerComponents, }) return &container diff --git a/bot/logic/help.go b/bot/logic/help.go index 8724668..eaac32a 100644 --- a/bot/logic/help.go +++ b/bot/logic/help.go @@ -5,20 +5,18 @@ import ( "fmt" "sort" - "github.com/TicketsBot-cloud/common/premium" "github.com/TicketsBot-cloud/gdl/objects/interaction" "github.com/TicketsBot-cloud/gdl/objects/interaction/component" "github.com/TicketsBot-cloud/worker/bot/command" "github.com/TicketsBot-cloud/worker/bot/command/registry" "github.com/TicketsBot-cloud/worker/bot/customisation" "github.com/TicketsBot-cloud/worker/bot/utils" - "github.com/TicketsBot-cloud/worker/config" "github.com/TicketsBot-cloud/worker/i18n" "github.com/elliotchance/orderedmap" ) func BuildHelpMessage(category command.Category, page int, ctx registry.CommandContext, cmds map[string]registry.Command) (*component.Component, error) { - componentList := []component.Component{} + innerComponents := []component.Component{} permLevel, _ := ctx.UserPermissionLevel(ctx) @@ -69,7 +67,7 @@ func BuildHelpMessage(category command.Category, page int, ctx registry.CommandC continue } - componentList = append(componentList, + innerComponents = append(innerComponents, component.BuildTextDisplay(component.TextDisplay{ Content: registry.FormatHelp2(cmd, ctx.GuildId(), &commandId), }), @@ -80,38 +78,27 @@ func BuildHelpMessage(category command.Category, page int, ctx registry.CommandC // get certain commands for pagination componentsPerPage := 10 - if len(componentList) > componentsPerPage { + if len(innerComponents) > componentsPerPage { startIndex := (page - 1) * componentsPerPage endIndex := startIndex + componentsPerPage - if startIndex > len(componentList) { + if startIndex > len(innerComponents) { return nil, fmt.Errorf("page %d is out of range", page) } - if endIndex > len(componentList) { - endIndex = len(componentList) + if endIndex > len(innerComponents) { + endIndex = len(innerComponents) } - componentList = componentList[startIndex:endIndex] + innerComponents = innerComponents[startIndex:endIndex] } - if ctx.PremiumTier() == premium.None { - componentList = append(componentList, - component.BuildTextDisplay(component.TextDisplay{ - Content: fmt.Sprintf("Powered by %s", config.Conf.Bot.PoweredBy), - }), - ) - } - - container := component.BuildContainer(component.Container{ - Components: append([]component.Component{ - component.BuildTextDisplay(component.TextDisplay{ - Content: fmt.Sprintf("## %s\n-# %s", ctx.GetMessage(i18n.TitleHelp), category), - }), - component.BuildSeparator(component.Separator{}), - }, componentList...), - AccentColor: utils.Ptr(ctx.GetColour(customisation.Green)), - }) + container := utils.BuildContainerNoLocale( + ctx, + customisation.Green, + fmt.Sprintf("%s\n-# %s", ctx.GetMessage(i18n.TitleHelp), category), + innerComponents, + ) return &container, nil } diff --git a/bot/logic/viewstaff.go b/bot/logic/viewstaff.go index c2bc712..26c1776 100644 --- a/bot/logic/viewstaff.go +++ b/bot/logic/viewstaff.go @@ -62,7 +62,7 @@ func buildPaginatedField(cmd registry.CommandContext, entries []uint64, page int } func BuildViewStaffMessage(ctx context.Context, cmd registry.CommandContext, page int) (component.Component, int) { - comps := []component.Component{} + innerComponents := []component.Component{} adminUsers, _ := dbclient.Client.Permissions.GetAdmins(ctx, cmd.GuildId()) adminRoles, _ := dbclient.Client.RolePermissions.GetAdminRoles(ctx, cmd.GuildId()) @@ -90,8 +90,8 @@ func BuildViewStaffMessage(ctx context.Context, cmd registry.CommandContext, pag viewStaffRoleFormat, "", ) - comps = append(comps, component.BuildTextDisplay(component.TextDisplay{Content: fmt.Sprintf("**%s**\n%s", label, value)})) - comps = append(comps, component.BuildSeparator(component.Separator{Divider: utils.Ptr(true), Spacing: utils.Ptr(1)})) + innerComponents = append(innerComponents, component.BuildTextDisplay(component.TextDisplay{Content: fmt.Sprintf("**%s**\n%s", label, value)})) + innerComponents = append(innerComponents, component.BuildSeparator(component.Separator{Divider: utils.Ptr(true), Spacing: utils.Ptr(1)})) // Admin users label, value = buildPaginatedField( @@ -101,9 +101,9 @@ func BuildViewStaffMessage(ctx context.Context, cmd registry.CommandContext, pag viewStaffUserFormat, "", ) - comps = append(comps, component.BuildTextDisplay(component.TextDisplay{Content: fmt.Sprintf("**%s**\n%s", label, value)})) + innerComponents = append(innerComponents, component.BuildTextDisplay(component.TextDisplay{Content: fmt.Sprintf("**%s**\n%s", label, value)})) - comps = append(comps, component.BuildSeparator(component.Separator{Divider: utils.Ptr(true), Spacing: utils.Ptr(1)})) + innerComponents = append(innerComponents, component.BuildSeparator(component.Separator{Divider: utils.Ptr(true), Spacing: utils.Ptr(1)})) // Support roles label, value = buildPaginatedField( @@ -113,7 +113,7 @@ func BuildViewStaffMessage(ctx context.Context, cmd registry.CommandContext, pag viewStaffRoleFormat, "", ) - comps = append(comps, component.BuildTextDisplay(component.TextDisplay{Content: fmt.Sprintf("**%s**\n%s", label, value)})) + innerComponents = append(innerComponents, component.BuildTextDisplay(component.TextDisplay{Content: fmt.Sprintf("**%s**\n%s", label, value)})) // Support users if len(supportUsers) > 0 { @@ -124,10 +124,10 @@ func BuildViewStaffMessage(ctx context.Context, cmd registry.CommandContext, pag viewStaffUserFormat, cmd.GetMessage(i18n.MessageViewStaffSupportUsersWarn), ) - comps = append(comps, component.BuildTextDisplay(component.TextDisplay{Content: fmt.Sprintf("**%s**\n%s", label, value)})) + innerComponents = append(innerComponents, component.BuildTextDisplay(component.TextDisplay{Content: fmt.Sprintf("**%s**\n%s", label, value)})) } - container := utils.BuildContainerWithComponents(cmd, customisation.Green, i18n.MessageViewStaffTitle, comps) + container := utils.BuildContainerWithComponents(cmd, customisation.Green, i18n.MessageViewStaffTitle, innerComponents) return container, totalPages } diff --git a/bot/logic/welcomemessage.go b/bot/logic/welcomemessage.go index 9762d05..1b5432a 100644 --- a/bot/logic/welcomemessage.go +++ b/bot/logic/welcomemessage.go @@ -61,19 +61,19 @@ func SendWelcomeMessage( fieldStr += fmt.Sprintf("**%s**\n%s\n", field.Name, utils.EscapeMarkdown(field.Value)) } - components := []component.Component{ + innerComponents := []component.Component{ component.BuildTextDisplay(component.TextDisplay{ Content: fieldStr, }), } if cmd.PremiumTier() == premium.None { - components = utils.AddPremiumFooter(components) + innerComponents = utils.AddPremiumFooter(innerComponents) } embeds = append(embeds, component.BuildContainer(component.Container{ AccentColor: &embedColor, - Components: components, + Components: innerComponents, })) } diff --git a/bot/utils/messageutils.go b/bot/utils/messageutils.go index 8c68211..5623374 100644 --- a/bot/utils/messageutils.go +++ b/bot/utils/messageutils.go @@ -112,7 +112,7 @@ func AddPremiumFooter(components []component.Component) []component.Component { components = append(components, component.BuildTextDisplay(component.TextDisplay{ - Content: fmt.Sprintf("-# %s Powered by %s", customisation.EmojiLogo, config.Conf.Bot.PoweredBy), + Content: fmt.Sprintf("-# %s Powered by [%s](https://%s)", customisation.EmojiLogo, config.Conf.Bot.PoweredBy, config.Conf.Bot.PoweredBy), }), ) diff --git a/i18n/messages.go b/i18n/messages.go index 025158e..b14e31e 100644 --- a/i18n/messages.go +++ b/i18n/messages.go @@ -112,16 +112,14 @@ var ( MessageAddNoPermission MessageId = "commands.add.no_permission" MessageAddSuccess MessageId = "commands.add.success" - MessageBlacklisted MessageId = "generic.error.blacklisted" - MessageBlacklistNoMembers MessageId = "commands.blacklist.no_members" - MessageBlacklistSelf MessageId = "commands.blacklist.self" - MessageBlacklistStaff MessageId = "commands.blacklist.staff" - MessageBlacklistLimit MessageId = "commands.blacklist.add.limit" - MessageBlacklistAdd MessageId = "commands.blacklist.add.success" - MessageBlacklistRoleLimit MessageId = "commands.blacklist.add_role.limit" - MessageBlacklistAddRole MessageId = "commands.blacklist.add_role.success" - MessageBlacklistRemove MessageId = "commands.blacklist.remove.success" - MessageBlacklistRemoveRole MessageId = "commands.blacklist.remove_role.success" + MessageBlacklisted MessageId = "generic.error.blacklisted" + MessageBlacklistNoMembers MessageId = "commands.blacklist.no_members" + MessageBlacklistSelf MessageId = "commands.blacklist.self" + MessageBlacklistStaff MessageId = "commands.blacklist.staff" + MessageBlacklistAdd MessageId = "commands.blacklist.add.success" + MessageBlacklistRemove MessageId = "commands.blacklist.remove.success" + MessageBlacklistLimit MessageId = "commands.blacklist.add.limit" + MessageBlacklistRoleLimit MessageId = "commands.blacklist.add_role.limit" MessageClaimed MessageId = "commands.claim.success" MessageClaimNoPermission MessageId = "commands.claim.no_permission" @@ -183,15 +181,16 @@ var ( MessageNotATicketChannel MessageId = "generic.not_ticket" MessageInvalidUser MessageId = "generic.invalid_user" - MessageTicketLimitReached MessageId = "commands.open.ticket_limit" - MessageTooManyTickets MessageId = "commands.open.too_many_tickets" - MessageGuildChannelLimitReached MessageId = "commands.open.guild_channel_limit" - MessageTicketStartedFrom MessageId = "commands.open.from" - MessageMovedToTicket MessageId = "commands.open.from.moved" - MessageFormMissingInput MessageId = "commands.open.missing_form_answer" - MessageOpenCommandDisabled MessageId = "commands.open.disabled" - MessageOpenCantSeeParentChannel MessageId = "commands.open.threads.cant_see_parent_channel" - MessageOpenCantMessageInThreads MessageId = "commands.open.threads.cant_message_in_threads" + MessageTicketLimitReached MessageId = "commands.open.ticket_limit" + MessageTooManyTickets MessageId = "commands.open.too_many_tickets" + MessageGuildChannelLimitReached MessageId = "commands.open.guild_channel_limit" + MessageTicketStartedFrom MessageId = "commands.open.from" + MessageTicketStartedFromNoContent MessageId = "commands.open.from.no_content" + MessageMovedToTicket MessageId = "commands.open.from.moved" + MessageFormMissingInput MessageId = "commands.open.missing_form_answer" + MessageOpenCommandDisabled MessageId = "commands.open.disabled" + MessageOpenCantSeeParentChannel MessageId = "commands.open.threads.cant_see_parent_channel" + MessageOpenCantMessageInThreads MessageId = "commands.open.threads.cant_message_in_threads" MessageCloseRequestNoReason MessageId = "commands.close_request.no_reason" MessageCloseRequestWithReason MessageId = "commands.close_request.with_reason"