grim/wasdead

split the commands into individual files
draft
2019-06-08, Gary Kramlich
a864eaa9eb45
Parents 19450730e319
Children 2d812e007daa
split the commands into individual files
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discord/cmdhelp.go Sat Jun 08 03:46:31 2019 -0500
@@ -0,0 +1,31 @@
+package discord
+
+import (
+ "fmt"
+
+ "github.com/alecthomas/kong"
+)
+
+type HelpCmd struct {
+ Command []string `kong:"arg,optional,help='command to get help on'"`
+}
+
+func (c *HelpCmd) Run(g *Globals) error {
+ ctx, err := kong.Trace(g.ctx.Kong, c.Command)
+ if err != nil {
+ return err
+ }
+
+ if ctx.Error != nil {
+ return ctx.Error
+ }
+
+ err = ctx.PrintUsage(true)
+ if err != nil {
+ return err
+ }
+
+ fmt.Fprintln(g.ctx.Stdout)
+
+ return nil
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discord/cmdsetchannel.go Sat Jun 08 03:46:31 2019 -0500
@@ -0,0 +1,29 @@
+package discord
+
+import (
+ "fmt"
+
+ "bitbucket.org/rw_grim/wasdead/database"
+)
+
+type SetChannelCmd struct{}
+
+func (c *SetChannelCmd) Run(g *Globals) error {
+ guild, err := database.LoadGuild(g.msg.GuildID)
+ if err != nil {
+ return err
+ }
+
+ resp := fmt.Sprintf("<#%s> is already set as the announcement channel", g.msg.ChannelID)
+
+ if guild.Channel != g.msg.ChannelID {
+ guild.Channel = g.msg.ChannelID
+ guild.Save()
+
+ resp = fmt.Sprintf("Set <#%s> as the announcement channel", g.msg.ChannelID)
+ }
+
+ g.client.sendChannel(g.msg.ChannelID, resp)
+
+ return nil
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discord/cmdshowconfig.go Sat Jun 08 03:46:31 2019 -0500
@@ -0,0 +1,35 @@
+package discord
+
+import (
+ "github.com/bwmarrin/discordgo"
+
+ "bitbucket.org/rw_grim/wasdead/database"
+)
+
+type ShowConfigCmd struct{}
+
+func (c *ShowConfigCmd) Run(g *Globals) error {
+ guild, err := database.LoadGuild(g.msg.GuildID)
+ if err != nil {
+ return err
+ }
+
+ channel, err := g.client.client.Channel(guild.Channel)
+ if err != nil {
+ return err
+ }
+
+ embed := &discordgo.MessageEmbed{
+ Title: "@wasdead configuration",
+ Fields: []*discordgo.MessageEmbedField{
+ &discordgo.MessageEmbedField{
+ Name: "Announcement Channel",
+ Value: channel.Mention(),
+ },
+ },
+ }
+
+ g.client.sendEmbedChannel(g.msg.ChannelID, embed)
+
+ return nil
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discord/cmdstatus.go Sat Jun 08 03:46:31 2019 -0500
@@ -0,0 +1,45 @@
+package discord
+
+import (
+ "fmt"
+ "strings"
+
+ "github.com/bwmarrin/discordgo"
+
+ "bitbucket.org/rw_grim/wasdead/presence"
+)
+
+type StatusCmd struct {
+ Target string `kong:"arg"`
+}
+
+func (c *StatusCmd) Run(g *Globals) error {
+ uri := ""
+
+ if strings.HasPrefix(c.Target, "<@") {
+ mentionID := c.Target[2 : len(c.Target)-1]
+
+ for _, mentioned := range g.msg.Mentions {
+ if mentioned.ID == mentionID {
+ p := g.client.getPresence(g.msg.GuildID, mentioned.ID)
+
+ if p != nil && p.Game != nil && p.Game.Type == discordgo.GameTypeStreaming {
+ uri = p.Game.URL
+ } else {
+ return fmt.Errorf("%s is not currently streaming", c.Target)
+ }
+ }
+ }
+ }
+
+ if uri == "" {
+ uri = "https://twitch.tv/" + c.Target
+ }
+
+ presence, err := presence.GetPresence(uri)
+ if err != nil {
+ return err
+ }
+
+ return g.client.sendEmbedChannel(g.msg.ChannelID, presenceEmbed(presence))
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discord/cmduptime.go Sat Jun 08 03:46:31 2019 -0500
@@ -0,0 +1,18 @@
+package discord
+
+import (
+ "fmt"
+
+ "github.com/dustin/go-humanize"
+)
+
+type UptimeCmd struct{}
+
+func (c *UptimeCmd) Run(g *Globals) error {
+ g.client.sendChannel(
+ g.msg.ChannelID,
+ fmt.Sprintf("Started %s", humanize.Time(g.client.started)),
+ )
+
+ return nil
+}
--- a/discord/commands.go Thu Jun 06 01:52:01 2019 -0500
+++ b/discord/commands.go Sat Jun 08 03:46:31 2019 -0500
@@ -6,10 +6,6 @@
"github.com/alecthomas/kong"
"github.com/bwmarrin/discordgo"
- "github.com/dustin/go-humanize"
-
- "bitbucket.org/rw_grim/wasdead/database"
- "bitbucket.org/rw_grim/wasdead/presence"
)
type Globals struct {
@@ -29,30 +25,6 @@
Uptime UptimeCmd `kong:"cmd,help='display how long the bot has been running for'"`
}
-type HelpCmd struct {
- Command []string `kong:"arg,optional,help='command to get help on'"`
-}
-
-func (c *HelpCmd) Run(g *Globals) error {
- ctx, err := kong.Trace(g.ctx.Kong, c.Command)
- if err != nil {
- return err
- }
-
- if ctx.Error != nil {
- return ctx.Error
- }
-
- err = ctx.PrintUsage(true)
- if err != nil {
- return err
- }
-
- fmt.Fprintln(g.ctx.Stdout)
-
- return nil
-}
-
type Order66Cmd struct{}
func (c *Order66Cmd) Run(g *Globals) error {
@@ -60,102 +32,6 @@
return nil
}
-type SetChannelCmd struct{}
-
-func (c *SetChannelCmd) Run(g *Globals) error {
- guild, err := database.LoadGuild(g.msg.GuildID)
- if err != nil {
- return err
- }
-
- resp := fmt.Sprintf("<#%s> is already set as the announcement channel", g.msg.ChannelID)
-
- if guild.Channel != g.msg.ChannelID {
- guild.Channel = g.msg.ChannelID
- guild.Save()
-
- resp = fmt.Sprintf("Set <#%s> as the announcement channel", g.msg.ChannelID)
- }
-
- g.client.sendChannel(g.msg.ChannelID, resp)
-
- return nil
-}
-
-type ShowConfigCmd struct{}
-
-func (c *ShowConfigCmd) Run(g *Globals) error {
- guild, err := database.LoadGuild(g.msg.GuildID)
- if err != nil {
- return err
- }
-
- channel, err := g.client.client.Channel(guild.Channel)
- if err != nil {
- return err
- }
-
- embed := &discordgo.MessageEmbed{
- Title: "@wasdead configuration",
- Fields: []*discordgo.MessageEmbedField{
- &discordgo.MessageEmbedField{
- Name: "Announcement Channel",
- Value: channel.Mention(),
- },
- },
- }
-
- g.client.sendEmbedChannel(g.msg.ChannelID, embed)
-
- return nil
-}
-
-type StatusCmd struct {
- Target string `kong:"arg"`
-}
-
-func (c *StatusCmd) Run(g *Globals) error {
- uri := ""
-
- if strings.HasPrefix(c.Target, "<@") {
- mentionID := c.Target[2 : len(c.Target)-1]
-
- for _, mentioned := range g.msg.Mentions {
- if mentioned.ID == mentionID {
- p := g.client.getPresence(g.msg.GuildID, mentioned.ID)
-
- if p != nil && p.Game != nil && p.Game.Type == discordgo.GameTypeStreaming {
- uri = p.Game.URL
- } else {
- return fmt.Errorf("%s is not currently streaming", c.Target)
- }
- }
- }
- }
-
- if uri == "" {
- uri = "https://twitch.tv/" + c.Target
- }
-
- presence, err := presence.GetPresence(uri)
- if err != nil {
- return err
- }
-
- return g.client.sendEmbedChannel(g.msg.ChannelID, presenceEmbed(presence))
-}
-
-type UptimeCmd struct{}
-
-func (c *UptimeCmd) Run(g *Globals) error {
- g.client.sendChannel(
- g.msg.ChannelID,
- fmt.Sprintf("Started %s", humanize.Time(g.client.started)),
- )
-
- return nil
-}
-
func (c *DiscordClient) processCommand(args []string, m *discordgo.MessageCreate) error {
cmd := Commands{
Globals: Globals{