From e5b5f3547a5e1cc3705a95e6bf06c94b9b08b60f Mon Sep 17 00:00:00 2001 From: vaporvee Date: Sun, 14 Apr 2024 23:59:21 +0200 Subject: [PATCH] added db to register plugin command --- cmd/main.go | 4 +- cmd_info.go | 168 ------------------ handlers.go | 4 +- .../{example => example_plugin}/main.go | 0 plugin_src/info/main.go | 54 ++++++ plugin_src/info/user.go | 110 ++++++++++++ 6 files changed, 169 insertions(+), 171 deletions(-) delete mode 100644 cmd_info.go rename plugin_src/{example => example_plugin}/main.go (100%) create mode 100644 plugin_src/info/main.go create mode 100644 plugin_src/info/user.go diff --git a/cmd/main.go b/cmd/main.go index b064c88..50196c7 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -1,6 +1,8 @@ package cmd import ( + "database/sql" + "github.com/disgoorg/disgo/discord" "github.com/disgoorg/disgo/events" ) @@ -20,5 +22,5 @@ type Command struct { type Plugin struct { Name string Commands []Command - Register func(e *events.Ready) error + Register func(e *events.Ready, db *sql.DB) error } diff --git a/cmd_info.go b/cmd_info.go deleted file mode 100644 index 120488b..0000000 --- a/cmd_info.go +++ /dev/null @@ -1,168 +0,0 @@ -package main - -import ( - "fmt" - "strconv" - "strings" - - "github.com/disgoorg/disgo/discord" - "github.com/disgoorg/disgo/events" - "github.com/sirupsen/logrus" - "github.com/vaporvee/acecore/cmd" - "github.com/vaporvee/acecore/custom" -) - -type UserExtend struct { - GlobalName string `json:"global_name"` - AvatarDecorationData AvatarDecoration `json:"avatar_decoration_data"` -} -type AvatarDecoration struct { - Asset string `json:"asset"` - SkuID string `json:"sku_id"` - URL string -} - -var userFlagsString map[discord.UserFlags]string = map[discord.UserFlags]string{ - discord.UserFlagDiscordEmployee: "<:Discord_Employee:1224708831419043942>[`Discord Employee`](https://discord.com/company)", - discord.UserFlagPartneredServerOwner: "<:Discord_Partner:1224708689190060092>[`Discord Partner`](https://discord.com/partners)", - discord.UserFlagHypeSquadEvents: "<:Hypesquad_Events:1224708685494747237>[`HypeSquad Events`](https://discord.com/hypesquad)", - discord.UserFlagBugHunterLevel1: "<:Bug_Hunter_Level_1:1224708828415918231>[`Bug Hunter Level 1`](https://support.discord.com/hc/en-us/articles/360046057772-Discord-Bugs)", - discord.UserFlagHouseBravery: "<:Hypesquad_Bravery:1224708678905630801>[`HypeSquad Bravery`](https://discord.com/settings/hypesquad-online)", - discord.UserFlagHouseBrilliance: "<:Hypesquad_Brilliance:1224708677584424961>[`HypeSquad Brilliance`](https://discord.com/settings/hypesquad-online)", - discord.UserFlagHouseBalance: "<:Hypequad_Balance:1224708826901516309>[`HypeSquad Balance`](https://discord.com/settings/hypesquad-online)", - discord.UserFlagEarlySupporter: "<:Early_Supporter:1224708674065272873>[`Early Supporter`](https://discord.com/settings/premium)", - discord.UserFlagTeamUser: "`TeamUser`", - discord.UserFlagBugHunterLevel2: "<:Bug_Hunter_Level_2:1224708682378383461>[`Bug Hunter Level 2`](https://support.discord.com/hc/en-us/articles/360046057772-Discord-Bugs)", - discord.UserFlagVerifiedBot: "", - discord.UserFlagEarlyVerifiedBotDeveloper: "<:Early_Verified_Bot_Developer:1224708675294203934>`Early Verified Bot Developer`", - discord.UserFlagDiscordCertifiedModerator: "<:Discord_Certified_Moderator:1224708830223532124>[`Discord Certified Moderator`](https://discord.com/safety)", - discord.UserFlagBotHTTPInteractions: "`BotHTTPInteractions`", - discord.UserFlagActiveDeveloper: "<:Active_Developer:1224708676611215380>[`Active Developer`](https://support-dev.discord.com/hc/en-us/articles/10113997751447?ref=badge)", -} - -var cmd_userinfo cmd.Command = cmd.Command{ - Definition: discord.SlashCommandCreate{ - Name: "info", - Description: "Gives you information about a user or this bot.", - Contexts: []discord.InteractionContextType{ - discord.InteractionContextTypeGuild, - discord.InteractionContextTypePrivateChannel, - discord.InteractionContextTypeBotDM, - }, - IntegrationTypes: []discord.ApplicationIntegrationType{ - discord.ApplicationIntegrationTypeGuildInstall, - discord.ApplicationIntegrationTypeUserInstall, - }, - Options: []discord.ApplicationCommandOption{ - &discord.ApplicationCommandOptionSubCommand{ - Name: "user", - Description: "Gives you information about a user and its profile images.", - Options: []discord.ApplicationCommandOption{ - &discord.ApplicationCommandOptionUser{ - Name: "user", - Description: "The user you need information about.", - Required: true, - }, - }, - }, - &discord.ApplicationCommandOptionSubCommand{ - Name: "bot-service", - Description: "Gives you information about this bot's server service.", - }, - }, - }, - Interact: func(e *events.ApplicationCommandInteractionCreate) { - switch *e.SlashCommandInteractionData().SubCommandName { - case "user": - user, err := e.Client().Rest().GetUser(e.SlashCommandInteractionData().User("user").ID) - if err != nil { - logrus.Error(err) - } - var userHasFlags string = fetchFlagStrings(*user) - var userType string = "User" - if user.Bot { - userType = "Unverified Bot" - if user.PublicFlags&discord.UserFlagVerifiedBot != 0 { - userType = "Verified Bot" - } - } else if user.System { - userType = "System" - } - embedBuilder := discord.NewEmbedBuilder() - embedBuilder.SetThumbnail(checkDefaultPb(*user) + "?size=4096") - embedBuilder.AddField("ID", user.ID.String(), false) - embedBuilder.AddField("Type", userType, true) - if user.GlobalName != nil { - embedBuilder.AddField("Global name", *user.GlobalName, true) - } - embedBuilder.AddField("Username", user.Username, true) - if userHasFlags != "" { - embedBuilder.AddField("Badges", userHasFlags, false) - } - if user.Discriminator != "0" { - embedBuilder.AddField("Discriminator", user.Discriminator, false) - } - if user.AccentColor != nil { - embedBuilder.AddField("Accent color", "#"+strconv.FormatInt(int64(*user.AccentColor), 16), true) - } - if user.AvatarDecorationURL() != nil { - 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() + "?size=4096") - } - embedBuilder.SetTitle("User info") - embedBuilder.SetDescription(user.Mention()) - embedBuilder.SetColor(custom.GetColor("primary")) - err = e.CreateMessage(discord.NewMessageCreateBuilder(). - SetEmbeds(embedBuilder.Build()). - Build()) - if err != nil { - logrus.Error(err) - } - - case "bot-service": - - } - - }, -} - -func checkDefaultPb(user discord.User) string { - if user.AvatarURL() == nil { - return "https://discord.com/assets/ac6f8cf36394c66e7651.png" - } - return *user.AvatarURL() -} - -func fetchFlagStrings(user discord.User) string { - var userHasFlagsString string - for flag, flagName := range userFlagsString { - if flag&user.PublicFlags != 0 { - userHasFlagsString += flagName + ", " - } - } - 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`" - } - } - */ - returnString := strings.TrimSuffix(userHasFlagsString, ", ") - return returnString -} diff --git a/handlers.go b/handlers.go index 13b2dc8..19e6b2d 100644 --- a/handlers.go +++ b/handlers.go @@ -18,7 +18,7 @@ import ( "github.com/vaporvee/acecore/custom" ) -var commands []cmd.Command = []cmd.Command{cmd_tag, cmd_tag_short, context_tag, cmd_sticky, context_sticky, cmd_ping, cmd_userinfo, cmd_addemoji, cmd_form, cmd_ticket_form, cmd_blockpolls, cmd_autopublish, cmd_autojoinroles} +var commands []cmd.Command = []cmd.Command{cmd_tag, cmd_tag_short, context_tag, cmd_sticky, context_sticky, cmd_ping, cmd_addemoji, cmd_form, cmd_ticket_form, cmd_blockpolls, cmd_autopublish, cmd_autojoinroles} func ready(e *events.Ready) { logrus.Info("Starting up...") @@ -105,7 +105,7 @@ func loadPlugins(directory string, e *events.Ready) error { continue } if plugin.Register != nil { - err = plugin.Register(e) + err = plugin.Register(e, db) if err != nil { logrus.Errorf("Error running plugin register %s function: %v", plugin.Name, err) continue diff --git a/plugin_src/example/main.go b/plugin_src/example_plugin/main.go similarity index 100% rename from plugin_src/example/main.go rename to plugin_src/example_plugin/main.go diff --git a/plugin_src/info/main.go b/plugin_src/info/main.go new file mode 100644 index 0000000..4187b36 --- /dev/null +++ b/plugin_src/info/main.go @@ -0,0 +1,54 @@ +package main + +import ( + "github.com/disgoorg/disgo/discord" + "github.com/disgoorg/disgo/events" + "github.com/vaporvee/acecore/cmd" +) + +var Plugin = &cmd.Plugin{ + Name: "Info", + Commands: []cmd.Command{ + { + Definition: discord.SlashCommandCreate{ + Name: "info", + Description: "Gives you information about a user or this bot.", + Contexts: []discord.InteractionContextType{ + discord.InteractionContextTypeGuild, + discord.InteractionContextTypePrivateChannel, + discord.InteractionContextTypeBotDM, + }, + IntegrationTypes: []discord.ApplicationIntegrationType{ + discord.ApplicationIntegrationTypeGuildInstall, + discord.ApplicationIntegrationTypeUserInstall, + }, + Options: []discord.ApplicationCommandOption{ + &discord.ApplicationCommandOptionSubCommand{ + Name: "user", + Description: "Gives you information about a user and its profile images.", + Options: []discord.ApplicationCommandOption{ + &discord.ApplicationCommandOptionUser{ + Name: "user", + Description: "The user you need information about.", + Required: true, + }, + }, + }, + &discord.ApplicationCommandOptionSubCommand{ + Name: "bot-service", + Description: "Gives you information about this bot's server service.", + }, + }, + }, + Interact: func(e *events.ApplicationCommandInteractionCreate) { + switch *e.SlashCommandInteractionData().SubCommandName { + case "user": + user(e) + case "bot-service": + + } + + }, + }, + }, +} diff --git a/plugin_src/info/user.go b/plugin_src/info/user.go new file mode 100644 index 0000000..74a5bec --- /dev/null +++ b/plugin_src/info/user.go @@ -0,0 +1,110 @@ +package main + +import ( + "fmt" + "strconv" + "strings" + + "github.com/disgoorg/disgo/discord" + "github.com/disgoorg/disgo/events" + "github.com/sirupsen/logrus" + "github.com/vaporvee/acecore/custom" +) + +func user(e *events.ApplicationCommandInteractionCreate) { + user, err := e.Client().Rest().GetUser(e.SlashCommandInteractionData().User("user").ID) + if err != nil { + logrus.Error(err) + } + var userHasFlags string = fetchFlagStrings(*user) + var userType string = "User" + if user.Bot { + userType = "Unverified Bot" + if user.PublicFlags&discord.UserFlagVerifiedBot != 0 { + userType = "Verified Bot" + } + } else if user.System { + userType = "System" + } + embedBuilder := discord.NewEmbedBuilder() + embedBuilder.SetThumbnail(checkDefaultPb(*user) + "?size=4096") + embedBuilder.AddField("ID", user.ID.String(), false) + embedBuilder.AddField("Type", userType, true) + if user.GlobalName != nil { + embedBuilder.AddField("Global name", *user.GlobalName, true) + } + embedBuilder.AddField("Username", user.Username, true) + if userHasFlags != "" { + embedBuilder.AddField("Badges", userHasFlags, false) + } + if user.Discriminator != "0" { + embedBuilder.AddField("Discriminator", user.Discriminator, false) + } + if user.AccentColor != nil { + embedBuilder.AddField("Accent color", "#"+strconv.FormatInt(int64(*user.AccentColor), 16), true) + } + if user.AvatarDecorationURL() != nil { + 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() + "?size=4096") + } + embedBuilder.SetTitle("User info") + embedBuilder.SetDescription(user.Mention()) + embedBuilder.SetColor(custom.GetColor("primary")) + err = e.CreateMessage(discord.NewMessageCreateBuilder(). + SetEmbeds(embedBuilder.Build()). + Build()) + if err != nil { + logrus.Error(err) + } +} + +type AvatarDecoration struct { + Asset string `json:"asset"` + SkuID string `json:"sku_id"` + URL string +} + +var userFlagsString map[discord.UserFlags]string = map[discord.UserFlags]string{ + discord.UserFlagDiscordEmployee: "<:Discord_Employee:1224708831419043942>[`Discord Employee`](https://discord.com/company)", + discord.UserFlagPartneredServerOwner: "<:Discord_Partner:1224708689190060092>[`Discord Partner`](https://discord.com/partners)", + discord.UserFlagHypeSquadEvents: "<:Hypesquad_Events:1224708685494747237>[`HypeSquad Events`](https://discord.com/hypesquad)", + discord.UserFlagBugHunterLevel1: "<:Bug_Hunter_Level_1:1224708828415918231>[`Bug Hunter Level 1`](https://support.discord.com/hc/en-us/articles/360046057772-Discord-Bugs)", + discord.UserFlagHouseBravery: "<:Hypesquad_Bravery:1224708678905630801>[`HypeSquad Bravery`](https://discord.com/settings/hypesquad-online)", + discord.UserFlagHouseBrilliance: "<:Hypesquad_Brilliance:1224708677584424961>[`HypeSquad Brilliance`](https://discord.com/settings/hypesquad-online)", + discord.UserFlagHouseBalance: "<:Hypequad_Balance:1224708826901516309>[`HypeSquad Balance`](https://discord.com/settings/hypesquad-online)", + discord.UserFlagEarlySupporter: "<:Early_Supporter:1224708674065272873>[`Early Supporter`](https://discord.com/settings/premium)", + discord.UserFlagTeamUser: "`TeamUser`", + discord.UserFlagBugHunterLevel2: "<:Bug_Hunter_Level_2:1224708682378383461>[`Bug Hunter Level 2`](https://support.discord.com/hc/en-us/articles/360046057772-Discord-Bugs)", + discord.UserFlagVerifiedBot: "", + discord.UserFlagEarlyVerifiedBotDeveloper: "<:Early_Verified_Bot_Developer:1224708675294203934>`Early Verified Bot Developer`", + discord.UserFlagDiscordCertifiedModerator: "<:Discord_Certified_Moderator:1224708830223532124>[`Discord Certified Moderator`](https://discord.com/safety)", + discord.UserFlagBotHTTPInteractions: "`BotHTTPInteractions`", + discord.UserFlagActiveDeveloper: "<:Active_Developer:1224708676611215380>[`Active Developer`](https://support-dev.discord.com/hc/en-us/articles/10113997751447?ref=badge)", +} + +func checkDefaultPb(user discord.User) string { + if user.AvatarURL() == nil { + return "https://discord.com/assets/ac6f8cf36394c66e7651.png" + } + return *user.AvatarURL() +} + +func fetchFlagStrings(user discord.User) string { + var userHasFlagsString string + for flag, flagName := range userFlagsString { + if flag&user.PublicFlags != 0 { + userHasFlagsString += flagName + ", " + } + } + if user.AvatarDecorationData != nil && user.AvatarDecorationData.Asset == "a_5e1210779d99ece1c0b4f438a5bc6e72" { + userHasFlagsString += "<:Limited_Lootbox_Clown:1224714172705804300>[`Lootbox Clown`](https://discord.com/settings/Lootboxes)" + } + returnString := strings.TrimSuffix(userHasFlagsString, ", ") + return returnString +}