diff --git a/internal/exts/init.go b/internal/exts/init.go index 7f5b6ac..b3ba8e0 100644 --- a/internal/exts/init.go +++ b/internal/exts/init.go @@ -27,6 +27,7 @@ func AddCommandHandlers(h *disgoman.CommandManager) { _ = h.AddCommand(utils.GitCommand) _ = h.AddCommand(utils.InviteCommand) _ = h.AddCommand(utils.PingCommand) + _ = h.AddCommand(utils.SnowflakeCommand) _ = h.AddCommand(tasks.AddReminderCommand) _ = h.AddCommand(tags.AddTagCommand) _ = h.AddCommand(tags.TagCommand) diff --git a/internal/exts/utils/utils.go b/internal/exts/utils/utils.go index 461e92c..6d2d69c 100644 --- a/internal/exts/utils/utils.go +++ b/internal/exts/utils/utils.go @@ -218,3 +218,32 @@ func userCommandFunc(ctx disgoman.Context, args []string) { } } } + +var SnowflakeCommand = &disgoman.Command{ + Name: "s", + Aliases: nil, + Description: "Return the parts of a snowflake", + OwnerOnly: false, + Hidden: false, + RequiredPermissions: 0, + SanitizeEveryone: true, + Invoke: snowflakeCommandFunc, +} + +func snowflakeCommandFunc(ctx disgoman.Context, args []string) { + int64ID, err := strconv.ParseInt(args[0], 10, 64) + if err != nil { + ctx.CommandManager.ErrorChannel <- disgoman.CommandError{ + Context: ctx, + Message: "Not a valid ID", + Error: err, + } + return + } + s := discord_utils.ParseSnowflake(int64ID) + embed := &discordgo.MessageEmbed{ + Title: args[0], + Description: fmt.Sprintf("Created: %s\nWorker: %d\nProcess: %d\nCounter: %d", discord_utils.ParseDateString(s.CreationTime), s.WorkerID, s.ProcessID, s.Increment), + } + _, _ = ctx.Session.ChannelMessageSendEmbed(ctx.Channel.ID, embed) +}