From 09454c7aea74f8c18bd067a0ed083d7e0c99f6d2 Mon Sep 17 00:00:00 2001 From: vaporvee Date: Wed, 10 Apr 2024 13:51:17 +0200 Subject: [PATCH] got forms half way working with disgo --- cmd_form.go | 348 ++++++++++++++++++++++------------------------------ cmd_info.go | 29 ++--- go.mod | 2 +- go.sum | 2 + handlers.go | 2 +- main.go | 2 +- tool.go | 16 +-- 7 files changed, 177 insertions(+), 224 deletions(-) diff --git a/cmd_form.go b/cmd_form.go index 6ad58ff..8aa150c 100644 --- a/cmd_form.go +++ b/cmd_form.go @@ -5,7 +5,7 @@ import ( "fmt" "strings" - "github.com/bwmarrin/discordgo" + "github.com/disgoorg/disgo/bot" "github.com/disgoorg/disgo/discord" "github.com/disgoorg/disgo/events" "github.com/disgoorg/json" @@ -98,19 +98,22 @@ var cmd_form Command = Command{ var title, formID, overwriteTitle, acceptChannelID string var modsCanAnswer bool var resultChannelID string - moderator := e.Member().User.ID.String() data := e.SlashCommandInteractionData() - resultChannelID = data.Channel("result_channel").ID.String() - moderator = data.Role("moderator").ID.String() - if moderator == "" { - moderator = data.User("moderator").ID.String() + if data.Channel("result_channel").ID.String() != "0" { + resultChannelID = data.Channel("result_channel").ID.String() + } + moderator := data.Role("moderator").ID.String() + if moderator == "0" { + moderator = e.User().ID.String() } formID = data.String("type") overwriteTitle = data.String("title") if overwriteTitle != "" { title = overwriteTitle } - acceptChannelID = data.Channel("accept_channel").ID.String() + if data.Channel("accept_channel").ID.String() != "0" { + acceptChannelID = data.Channel("accept_channel").ID.String() + } modsCanAnswer = data.Bool("mods_can_answer") if formID == "" { @@ -153,6 +156,7 @@ var cmd_form Command = Command{ } category = c.ID().String() } + addFormButton(e.GuildID().String(), e.Channel().ID().String(), message.ID.String(), formManageID.String(), formID, resultChannelID, overwriteTitle, acceptChannelID, category, moderator) err = e.CreateMessage(discord.NewMessageCreateBuilder().SetContent("Successfully added form button!").SetEphemeral(true).Build()) if err != nil { @@ -175,7 +179,7 @@ var cmd_form Command = Command{ e.CreateMessage(discord.NewMessageCreateBuilder().SetContent("Submission declined!").SetEphemeral(true).Build()) case "approve": embed := e.Message.Embeds[0] - embed.Description = fmt.Sprintf("This submission was approved by <@%s>.", e.Member().User.ID) + embed.Description = fmt.Sprintf("This submission was approved by <@%s>.", e.User().ID) _, err := e.Client().Rest().CreateMessage(snowflake.MustParse(getFormResultValues(form_manage_id).ResultChannelID), discord.NewMessageCreateBuilder(). SetEmbeds(embed). Build()) @@ -190,149 +194,117 @@ var cmd_form Command = Command{ case "comment": author := strings.TrimSuffix(strings.Split(e.Message.Embeds[0].Fields[len(e.Message.Embeds[0].Fields)-1].Value, "<@")[1], ">") embed := e.Message.Embeds[0] - moderator := e.Member().User.ID - createFormComment(form_manage_id, author, moderator, "answer", embed, e) + moderator := e.User().ID + channel := createFormComment(form_manage_id, snowflake.MustParse(author), moderator, "answer", embed, *e.GuildID(), e.Client()) + e.CreateMessage(discord.NewMessageCreateBuilder().SetContent("Created channel " + discord.ChannelMention(channel.ID())).SetEphemeral(true).Build()) } } else { - if strings.HasPrefix(i.Interaction.MessageComponentData().CustomID, "form:") { - var formManageID string = strings.TrimPrefix(i.Interaction.MessageComponentData().CustomID, "form:") - jsonStringShowModal(i.Interaction, i.Interaction.MessageComponentData().CustomID, getFormType(formManageID), getFormOverwriteTitle(formManageID)) - } else if i.Interaction.MessageComponentData().CustomID == "form_demo" { - jsonStringShowModal(i.Interaction, "form_demo", "form_demo") + if strings.HasPrefix(e.ButtonInteractionData().CustomID(), "form:") { + var formManageID string = strings.TrimPrefix(e.ButtonInteractionData().CustomID(), "form:") + e.Modal(jsonStringBuildModal(e.User().ID.String(), formManageID, getFormType(formManageID), getFormOverwriteTitle(formManageID))) + } else if e.ButtonInteractionData().CustomID() == "form_demo" { + e.Modal(jsonStringBuildModal(e.User().ID.String(), "form_demo", "form_demo")) } } } }, - ModalSubmit: func(s *discordgo.Session, i *discordgo.InteractionCreate) { - if !strings.HasPrefix(i.ModalSubmitData().CustomID, "form_demo") { - var form_manage_id string = strings.Split(i.ModalSubmitData().CustomID, ":")[1] + ModalSubmit: func(e *events.ModalSubmitInteractionCreate) { + if !strings.HasPrefix(e.Data.CustomID, "form_demo") { + var form_manage_id string = strings.Split(e.Data.CustomID, ":")[1] var result FormResult = getFormResultValues(form_manage_id) - var fields []*discordgo.MessageEmbedField + var fields []discord.EmbedField var modal ModalJson = getModalByFormID(getFormType(form_manage_id)) var overwrite_title string = getFormOverwriteTitle(form_manage_id) if overwrite_title != "" { modal.Title = overwrite_title } - for index, component := range i.ModalSubmitData().Components { - var input *discordgo.TextInput = component.(*discordgo.ActionsRow).Components[0].(*discordgo.TextInput) - fields = append(fields, &discordgo.MessageEmbedField{ + var inline bool + var index int = 0 + for _, component := range e.Data.Components { + var input discord.TextInputComponent = component.(discord.TextInputComponent) + inline = input.Style == discord.TextInputStyleShort + fields = append(fields, discord.EmbedField{ Name: modal.Form[index].Label, Value: input.Value, - Inline: input.Style == discordgo.TextInputShort, + Inline: &inline, }) + index++ } - channel, _ := s.Channel(i.ChannelID) - fields = append(fields, &discordgo.MessageEmbedField{ - Value: "From <#" + channel.ID + "> by <@" + i.Member.User.ID + ">", + fields = append(fields, discord.EmbedField{ + Value: "From <#" + e.Channel().ID().String() + "> by " + e.User().Mention(), }) if result.ResultChannelID == "" { if result.CommentCategoryID != "" { - createFormComment(form_manage_id, i.Member.User.ID, result.ModeratorID, "answer", &discordgo.MessageEmbed{ - Author: &discordgo.MessageEmbedAuthor{ - Name: i.Member.User.Username, - IconURL: i.Member.AvatarURL("256"), - }, - Title: "\"" + modal.Title + "\"", - Color: hexToDecimal(color["primary"]), - Description: "This is the submitted result", - Fields: fields, - }, i) + channel := createFormComment(form_manage_id, e.User().ID, snowflake.MustParse(result.ModeratorID), "answer", discord.NewEmbedBuilder(). + SetAuthorName(*e.User().GlobalName).SetAuthorIcon(*e.User().AvatarURL()).SetTitle("\""+modal.Title+"\"").SetDescription("This is the submitted result"). + SetColor(hexToDecimal(color["primary"])).SetFields(fields...). + Build(), *e.GuildID(), e.Client()) + err := e.CreateMessage(discord.NewMessageCreateBuilder().SetContent("Created channel " + discord.ChannelMention(channel.ID())).SetEphemeral(true).Build()) + if err != nil { + logrus.Error(err) + } } else { - respond(i.Interaction, "You need to provide either a `result_channel` or enable `mods_can_answer` to create a valid form.", true) + e.CreateMessage(discord.NewMessageCreateBuilder(). + SetContent("You need to provide either a `result_channel` or enable `mods_can_answer` to create a valid form.").SetEphemeral(true). + Build()) } } else { if result.AcceptChannelID == "" { - var buttons []discordgo.MessageComponent + var buttons []discord.ButtonComponent + var components []discord.ContainerComponent if result.CommentCategoryID != "" { - buttons = []discordgo.MessageComponent{ - discordgo.ActionsRow{ - Components: []discordgo.MessageComponent{ - discordgo.Button{ - Style: discordgo.PrimaryButton, - Emoji: discordgo.ComponentEmoji{ - Name: "👥", - }, - Label: "Comment", - CustomID: "form:" + form_manage_id + ";comment", - }, - }, - }, + buttons = []discord.ButtonComponent{discord. + NewButton(discord.ButtonStylePrimary, "Comment", "form:"+form_manage_id+";comment", ""). + WithEmoji(discord.ComponentEmoji{Name: "👥"})} + for _, button := range buttons { + components = append(components, discord.NewActionRow(button)) } } - _, err := s.ChannelMessageSendComplex(result.ResultChannelID, &discordgo.MessageSend{ - Embed: &discordgo.MessageEmbed{ - Author: &discordgo.MessageEmbedAuthor{ - Name: i.Member.User.Username, - IconURL: i.Member.AvatarURL("256"), - }, - Title: "\"" + modal.Title + "\"", - Color: hexToDecimal(color["primary"]), - Description: "This is the submitted result", - Fields: fields, - }, - Components: buttons, - }) + _, err := e.Client().Rest().CreateMessage(snowflake.MustParse(result.ResultChannelID), discord.NewMessageCreateBuilder(). + SetEmbeds(discord.NewEmbedBuilder(). + SetAuthorName(*e.User().GlobalName).SetAuthorIcon(*e.User().AvatarURL()).SetTitle("\""+modal.Title+"\"").SetDescription("This is the submitted result"). + SetColor(hexToDecimal(color["primary"])).SetFields(fields...). + Build()). + SetContainerComponents(components...). + Build()) if err != nil { logrus.Error(err) } else { - err = respond(i.Interaction, "Submited!", true) + err = e.CreateMessage(discord.NewMessageCreateBuilder().SetContent("Submitted!").SetEphemeral(true).Build()) if err != nil { logrus.Error(err) } } } else { - var buttons []discordgo.MessageComponent + var buttons []discord.ButtonComponent if result.CommentCategoryID != "" { - buttons = []discordgo.MessageComponent{ - discordgo.Button{ - Style: discordgo.PrimaryButton, - Emoji: discordgo.ComponentEmoji{ - Name: "👥", - }, - Label: "Comment", - CustomID: "form:" + form_manage_id + ";comment", - }, - } + buttons = []discord.ButtonComponent{discord. + NewButton(discord.ButtonStylePrimary, "Comment", "form:"+form_manage_id+";comment", ""). + WithEmoji(discord.ComponentEmoji{Name: "👥"})} } - buttons = append(buttons, - discordgo.Button{ - Style: discordgo.DangerButton, - Emoji: discordgo.ComponentEmoji{ - Name: "🛑", - }, - Label: "Decline", - CustomID: "form:" + form_manage_id + ";decline", - }, - discordgo.Button{ - Style: discordgo.SuccessButton, - Emoji: discordgo.ComponentEmoji{ - Name: "🎉", - }, - Label: "Approve", - CustomID: "form:" + form_manage_id + ";approve", - }) - _, err := s.ChannelMessageSendComplex(result.AcceptChannelID, &discordgo.MessageSend{ - Embed: &discordgo.MessageEmbed{ - Author: &discordgo.MessageEmbedAuthor{ - Name: i.Member.User.Username, - IconURL: i.Member.AvatarURL("256"), - }, - Title: "\"" + modal.Title + "\"", - Color: hexToDecimal(color["primary"]), - Description: "**This submission needs approval.**", - Fields: fields, - }, - Components: []discordgo.MessageComponent{ - discordgo.ActionsRow{ - Components: buttons, - }, - }}, - ) + buttons = append(buttons, discord. + NewButton(discord.ButtonStylePrimary, "Decline", "form:"+form_manage_id+";decline", ""). + WithEmoji(discord.ComponentEmoji{Name: "🛑"}), + discord. + NewButton(discord.ButtonStylePrimary, "Approve", "form:"+form_manage_id+";approve", ""). + WithEmoji(discord.ComponentEmoji{Name: "🎉"})) + var components []discord.ContainerComponent + for _, button := range buttons { + components = append(components, discord.NewActionRow(button)) + } + _, err := e.Client().Rest().CreateMessage(snowflake.MustParse(result.AcceptChannelID), discord.NewMessageCreateBuilder(). + SetEmbeds(discord.NewEmbedBuilder(). + SetAuthorName(*e.User().GlobalName).SetAuthorIcon(*e.User().AvatarURL()).SetTitle("\""+modal.Title+"\"").SetDescription("**This submission needs approval.**"). + SetColor(hexToDecimal(color["primary"])).SetFields(fields...). + Build()). + SetContainerComponents(components...). + Build()) + if err != nil { logrus.Error(err) } else { - err = respond(i.Interaction, "Submited!", true) + err = e.CreateMessage(discord.NewMessageCreateBuilder().SetContent("Submitted!").SetEphemeral(true).Build()) if err != nil { logrus.Error(err) } @@ -340,33 +312,27 @@ var cmd_form Command = Command{ } } } else { - err := respond(i.Interaction, "The results would be submited...", true) + err := e.CreateMessage(discord.NewMessageCreateBuilder().SetContent("The results would be submited...").SetEphemeral(true).Build()) if err != nil { logrus.Error(err) } } }, - Autocomplete: func(s *discordgo.Session, i *discordgo.InteractionCreate) { - choices := []*discordgo.ApplicationCommandOptionChoice{ - { + Autocomplete: func(e *events.AutocompleteInteractionCreate) { + err := e.AutocompleteResult([]discord.AutocompleteChoice{ + &discord.AutocompleteChoiceString{ Name: "Support Ticket", Value: "template_ticket", }, - { + &discord.AutocompleteChoiceString{ Name: "Submit URL", Value: "template_url", }, - { + &discord.AutocompleteChoiceString{ Name: "General", Value: "template_general", }, - } - err := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{ - Type: discordgo.InteractionApplicationCommandAutocompleteResult, - Data: &discordgo.InteractionResponseData{ - Choices: choices, - }, }) if err != nil { logrus.Error(err) @@ -375,41 +341,31 @@ var cmd_form Command = Command{ } var cmd_ticket_form Command = Command{ - Definition: discordgo.ApplicationCommand{ + Definition: discord.SlashCommandCreate{ Name: "ticket", - DefaultMemberPermissions: int64Ptr(discordgo.PermissionManageChannels), + DefaultMemberPermissions: json.NewNullablePtr(discord.PermissionManageChannels), Description: "A quick command to create Ticketpanels. (/form for more)", - Options: []*discordgo.ApplicationCommandOption{ - { - Type: discordgo.ApplicationCommandOptionString, + Options: []discord.ApplicationCommandOption{ + &discord.ApplicationCommandOptionString{ Name: "title", Description: "The title the ticket should have", }, - { - Type: discordgo.ApplicationCommandOptionMentionable, + &discord.ApplicationCommandOptionMentionable{ Name: "moderator", Description: "Who can interact with moderating buttons.", }, }, }, - Interact: func(s *discordgo.Session, i *discordgo.InteractionCreate) { + Interact: func(e *events.ApplicationCommandInteractionCreate) { var title string = "Ticket" var moderator string - if i.ApplicationCommandData().Options != nil { - for _, opt := range i.ApplicationCommandData().Options { - switch opt.Name { - case "title": - title = opt.StringValue() - case "moderator": - moderator = opt.RoleValue(s, i.GuildID).ID - if moderator == "" { - moderator = opt.UserValue(s).ID - } - } - } + data := e.SlashCommandInteractionData() + if data.String("title") != "" { + title = data.String("title") } + moderator = data.Role("moderator").ID.String() if moderator == "" { - moderator = i.Member.User.ID + moderator = data.User("moderator").ID.String() } var exists bool = true var formManageID uuid.UUID = uuid.New() @@ -417,29 +373,16 @@ var cmd_ticket_form Command = Command{ formManageID = uuid.New() exists = getFormManageIdExists(formManageID) } - message, err := s.ChannelMessageSendComplex(i.ChannelID, &discordgo.MessageSend{ - Embed: &discordgo.MessageEmbed{ - Color: hexToDecimal(color["primary"]), - Title: title, - Description: "Press the bottom button to open a form popup.", - }, - Components: []discordgo.MessageComponent{ - discordgo.ActionsRow{ - Components: []discordgo.MessageComponent{ - discordgo.Button{ - CustomID: "form:" + formManageID.String(), - Style: discordgo.SuccessButton, - Label: "Submit", - Emoji: discordgo.ComponentEmoji{ - Name: "anim_rocket", - ID: "1215740398706757743", - Animated: true, - }, - }, - }, - }, - }, - }) + messagebuild := discord.NewMessageCreateBuilder().SetEmbeds(discord.NewEmbedBuilder(). + SetTitle(title).SetDescription("Press the bottom button to open a form popup.").SetColor(hexToDecimal(color["primary"])). + Build()).SetContainerComponents(discord.ActionRowComponent{ + discord.NewSuccessButton("Submit", "form:"+formManageID.String()).WithEmoji(discord.ComponentEmoji{ + Name: "anim_rocket", + ID: snowflake.MustParse("1215740398706757743"), + Animated: true, + })}). + Build() + message, err := e.Client().Rest().CreateMessage(e.Channel().ID(), messagebuild) if err != nil { logrus.Error(err) return @@ -448,17 +391,17 @@ var cmd_ticket_form Command = Command{ title = "Ticket" } var category string - c, err := s.GuildChannelCreate(i.GuildID, title+" mod answers", discordgo.ChannelTypeGuildCategory) + c, err := e.Client().Rest().CreateGuildChannel(*e.GuildID(), discord.GuildCategoryChannelCreate{Name: title + " mod answers"}) if err != nil { logrus.Error(err) } - category = c.ID + category = c.ID().String() if title == "Ticket" { title = "" } - addFormButton(i.GuildID, i.ChannelID, message.ID, formManageID.String(), "template_ticket", "", title, "", category, moderator) - err = respond(i.Interaction, "Successfully added ticket panel!\n(`/form` for more options or custom ticket forms.)", true) + addFormButton(e.GuildID().String(), e.Channel().ID().String(), message.ID.String(), formManageID.String(), "template_ticket", "", title, "", category, moderator) + err = e.CreateMessage(discord.NewMessageCreateBuilder().SetContent("Successfully added ticket panel!\n(`/form` for more options or custom ticket forms.)").SetEphemeral(true).Build()) if err != nil { logrus.Error(err) } @@ -466,53 +409,60 @@ var cmd_ticket_form Command = Command{ } // moderator can be userID as well as roleID -func createFormComment(form_manage_id string, author string, moderator snowflake.ID, commentName string, embed discord.Embed, e *events.ComponentInteractionCreate) { +func createFormComment(form_manage_id string, author snowflake.ID, moderator snowflake.ID, commentName string, embed discord.Embed, guildID snowflake.ID, client bot.Client) discord.Channel { var category snowflake.ID - _, err := e.Client().Rest().GetChannel(snowflake.MustParse(getFormResultValues(form_manage_id).CommentCategoryID)) + _, err := client.Rest().GetChannel(snowflake.MustParse(getFormResultValues(form_manage_id).CommentCategoryID)) if err != nil { - c, err := e.Client().Rest().CreateGuildChannel(*e.GuildID(), discord.GuildCategoryChannelCreate{Name: strings.Trim(embed.Title, "\"") + " mod " + commentName + "s"}) + c, err := client.Rest().CreateGuildChannel(guildID, discord.GuildCategoryChannelCreate{Name: strings.Trim(embed.Title, "\"") + " mod " + commentName + "s"}) if err != nil { logrus.Error(err) } category = c.ID() updateFormCommentCategory(form_manage_id, category.String()) } - ch, err := e.Client().Rest().CreateGuildChannel(*e.GuildID(), discord.GuildTextChannelCreate{ + ch, err := client.Rest().CreateGuildChannel(guildID, discord.GuildTextChannelCreate{ ParentID: category, Name: strings.ToLower(embed.Author.Name) + "-" + commentName, }) if err != nil { logrus.Error(err) } - err = bot.ChannelPermissionSet(ch.ID, i.GuildID, discordgo.PermissionOverwriteTypeRole, 0, discordgo.PermissionViewChannel) - _, err = e.Client().Rest().UpdateChannel(ch.ID(), discord.GuildTextChannelUpdate{PermissionOverwrites: &[]discord.PermissionOverwrite{}}) - if err != nil { - logrus.Error(err) + var permissionOverwrites []discord.PermissionOverwrite = []discord.PermissionOverwrite{ + discord.RolePermissionOverwrite{ + RoleID: guildID, + Deny: discord.PermissionViewChannel, + }} + + if isIDRole(client, guildID, moderator) { + permissionOverwrites = append(permissionOverwrites, discord.RolePermissionOverwrite{ + RoleID: moderator, + Allow: discord.PermissionViewChannel, + }) + } else { + permissionOverwrites = append(permissionOverwrites, discord.MemberPermissionOverwrite{ + UserID: moderator, + Allow: discord.PermissionViewChannel, + }) } - modType := discordgo.PermissionOverwriteTypeMember - if isIDRole(i.GuildID, moderator) { - modType = discordgo.PermissionOverwriteTypeRole - } - err = bot.ChannelPermissionSet(ch.ID, moderator, modType, discordgo.PermissionViewChannel, 0) - if err != nil { - logrus.Error(err) - } - err = bot.ChannelPermissionSet(ch.ID, author, discordgo.PermissionOverwriteTypeMember, discordgo.PermissionViewChannel, 0) - if err != nil { - logrus.Error(err) - } - modTypeChar := "&" - if modType == discordgo.PermissionOverwriteTypeMember { - modTypeChar = "" - } - _, err = bot.ChannelMessageSendComplex(ch.ID, &discordgo.MessageSend{ - Content: "<@" + modTypeChar + moderator + "> <@" + author + ">", - Embed: embed, + permissionOverwrites = append(permissionOverwrites, discord.RolePermissionOverwrite{ + RoleID: author, + Allow: discord.PermissionViewChannel, }) + _, err = client.Rest().UpdateChannel(ch.ID(), discord.GuildTextChannelUpdate{PermissionOverwrites: &permissionOverwrites}) if err != nil { logrus.Error(err) } - respond(i.Interaction, "Created channel <#"+ch.ID+">", true) + modTypeChar := "" + if isIDRole(client, guildID, moderator) { + modTypeChar = "&" + } + _, err = client.Rest().CreateMessage(ch.ID(), discord.NewMessageCreateBuilder(). + SetContent("<@"+modTypeChar+moderator.String()+"> <@"+author.String()+">").SetEmbeds(embed). + Build()) + if err != nil { + logrus.Error(err) + } + return ch } func getFormButtonIDs() []string { diff --git a/cmd_info.go b/cmd_info.go index e2e44a6..d0b455e 100644 --- a/cmd_info.go +++ b/cmd_info.go @@ -92,14 +92,15 @@ var cmd_userinfo Command = Command{ embedBuilder.AddField("Accent color", strconv.Itoa(*user.AccentColor), true) } if user.AvatarDecorationURL() != nil { - decoration := strings.TrimSuffix(*user.AvatarDecorationURL(), ".gif") - value := fmt.Sprintf("[PNG (animated)](%s)\n[PNG](%s)", decoration, decoration+"?passthrough=false") + value := fmt.Sprintf("[PNG (animated)](%s)\n[PNG](%s)", *user.AvatarDecorationURL(), *user.AvatarDecorationURL()+"?passthrough=false") embedBuilder.AddField("Avatar decoration", value, true) } creation := "<:discord_member:1224717530078253166> " + discord.TimestampStyleLongDateTime.FormatTime(user.CreatedAt()) + "-" + discord.TimestampStyleRelative.FormatTime(user.CreatedAt()) embedBuilder.AddField("Created at", creation, false) + if user.BannerURL() != nil { - embedBuilder.SetImage(*user.BannerURL()) + value := fmt.Sprint(*user.BannerURL()) + embedBuilder.SetImage(value) } embedBuilder.SetTitle("User info") embedBuilder.SetDescription(user.Mention()) @@ -134,22 +135,22 @@ func fetchFlagStrings(user discord.User) string { userHasFlagsString += flagName + ", " } } - if noNullString(user.AvatarDecorationData.Asset) == "a_5e1210779d99ece1c0b4f438a5bc6e72" { + if user.AvatarDecorationData != nil && user.AvatarDecorationData.Asset == "a_5e1210779d99ece1c0b4f438a5bc6e72" { userHasFlagsString += "<:Limited_Lootbox_Clown:1224714172705804300>[`Lootbox Clown`](https://discord.com/settings/Lootboxes)" } /* if user.PremiumType > 0 { userHasFlagsString += "<:Nitro:1224708672492666943>[`Nitro`](https://discord.com/settings/premium), " - } - if user.Bot { - appuser := bot.State.Application - if appuser.Flags&1<<23 != 0 { - userHasFlagsString += "<:Supports_Commands:1224848976201646100>[`Supports Commands`](https://discord.com/blog/welcome-to-the-new-era-of-discord-apps?ref=badge)" - } - if appuser.Flags&1<<6 != 0 { - userHasFlagsString += "<:Uses_Automod:1224862880982106202>`Uses Automod`" - } - } + } + if user.Bot { + appuser := bot.State.Application + if appuser.Flags&1<<23 != 0 { + userHasFlagsString += "<:Supports_Commands:1224848976201646100>[`Supports Commands`](https://discord.com/blog/welcome-to-the-new-era-of-discord-apps?ref=badge)" + } + if appuser.Flags&1<<6 != 0 { + userHasFlagsString += "<:Uses_Automod:1224862880982106202>`Uses Automod`" + } + } */ returnString := strings.TrimSuffix(userHasFlagsString, ", ") return returnString diff --git a/go.mod b/go.mod index db9aef6..1c2fd31 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/vaporvee/acecore go 1.21.6 require ( - github.com/disgoorg/disgo v0.18.0 + github.com/disgoorg/disgo v0.18.1-0.20240408224120-2676e29d6e86 github.com/disgoorg/json v1.1.0 github.com/disgoorg/snowflake/v2 v2.0.1 github.com/google/uuid v1.6.0 diff --git a/go.sum b/go.sum index 33ab55a..e32c6d1 100644 --- a/go.sum +++ b/go.sum @@ -5,6 +5,8 @@ github.com/disgoorg/disgo v0.17.2 h1:RxiLq8guMtk+9tArFwve02iya2APQ9yZVtV30ySKNtw github.com/disgoorg/disgo v0.17.2/go.mod h1:8r3h9fXSz7BbACxLPsPbtB6LX8gaQFUETgPKV/0gAKQ= github.com/disgoorg/disgo v0.18.0 h1:EviKy/OiGofYW2X4kLjgxAUYrqjmBEMpVp/MMXHP1pY= github.com/disgoorg/disgo v0.18.0/go.mod h1:gkl6DBdbKUvmOOJayWPSvS52KPN/8uJGJ2f13gCEB1o= +github.com/disgoorg/disgo v0.18.1-0.20240408224120-2676e29d6e86 h1:hSRIjnKWL07TYxvZRxdSBpS78gJNf+JkAuzXY3O1Kos= +github.com/disgoorg/disgo v0.18.1-0.20240408224120-2676e29d6e86/go.mod h1:gkl6DBdbKUvmOOJayWPSvS52KPN/8uJGJ2f13gCEB1o= github.com/disgoorg/json v1.1.0 h1:7xigHvomlVA9PQw9bMGO02PHGJJPqvX5AnwlYg/Tnys= github.com/disgoorg/json v1.1.0/go.mod h1:BHDwdde0rpQFDVsRLKhma6Y7fTbQKub/zdGO5O9NqqA= github.com/disgoorg/snowflake/v2 v2.0.1 h1:CuUxGLwggUxEswZOmZ+mZ5i0xSumQdXW9tXW7uGqe+0= diff --git a/handlers.go b/handlers.go index 0eef560..9888652 100644 --- a/handlers.go +++ b/handlers.go @@ -26,7 +26,7 @@ type Command struct { AllowDM bool } -var commands []Command = []Command{cmd_tag, cmd_tag_short, context_tag, cmd_sticky, context_sticky, cmd_ping, cmd_userinfo, cmd_form, cmd_ask, cmd_cat, cmd_dadjoke /*, cmd_ticket_form, cmd_autojoinroles, cmd_autopublish*/} +var commands []Command = []Command{cmd_tag, cmd_tag_short, context_tag, cmd_sticky, context_sticky, cmd_ping, cmd_userinfo, cmd_form, cmd_ask, cmd_cat, cmd_dadjoke, cmd_ticket_form /*, cmd_autojoinroles, cmd_autopublish*/} func ready(e *events.Ready) { logrus.Info("Starting up...") diff --git a/main.go b/main.go index 4f2430f..1c00241 100644 --- a/main.go +++ b/main.go @@ -49,8 +49,8 @@ func main() { bot.WithEventListenerFunc(componentInteractionCreate), bot.WithEventListenerFunc(modalSubmitInteractionCreate), bot.WithEventListenerFunc(messageCreate), + bot.WithEventListenerFunc(messageDelete), /* - bot.WithEventListenerFunc(messageDelete), bot.WithEventListenerFunc(guildMemberJoin), */ ) diff --git a/tool.go b/tool.go index 2024bb8..a664af9 100644 --- a/tool.go +++ b/tool.go @@ -51,7 +51,7 @@ func noNullString(in interface{}) string { return s } -func jsonStringShowModal(userID string, manageID string, formID string, overwrite ...string) discord.InteractionResponse { +func jsonStringBuildModal(userID string, manageID string, formID string, overwrite ...string) discord.ModalCreate { var modal ModalJson = getModalByFormID(formID) var components []discord.ContainerComponent for index, component := range modal.Form { @@ -76,13 +76,10 @@ func jsonStringShowModal(userID string, manageID string, formID string, overwrit modal.Title = overwrite[0] } - return discord.InteractionResponse{ - Type: discord.InteractionResponseTypeModal, - Data: &discord.ModalCreate{ - CustomID: manageID + ":" + userID, - Title: modal.Title, - Components: components, - }, + return discord.ModalCreate{ + CustomID: "form:" + manageID + ":" + userID, + Title: modal.Title, + Components: components, } } @@ -94,6 +91,9 @@ var formTemplates embed.FS func getModalByFormID(formID string) ModalJson { var modal ModalJson + if formID == "" { + return modal + } entries, err := formTemplates.ReadDir("form_templates") if err != nil { logrus.Error(err)