From 7940f2f678c53deb2adab6286a9f1c7b2c8f7722 Mon Sep 17 00:00:00 2001 From: pocketjawa Date: Fri, 26 Apr 2019 22:23:04 -0400 Subject: [PATCH 1/8] Initial commit --- buttsbot.go | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 buttsbot.go diff --git a/buttsbot.go b/buttsbot.go new file mode 100644 index 0000000..0c9fa72 --- /dev/null +++ b/buttsbot.go @@ -0,0 +1,9 @@ +package main + +import ( + "fmt" +) + +func main () { + fmt.Println("butts") +} \ No newline at end of file From 51fefbf7c658e4f319f7f5403de69169a8758e26 Mon Sep 17 00:00:00 2001 From: pocketjawa Date: Fri, 26 Apr 2019 22:36:38 -0400 Subject: [PATCH 2/8] Base Drone setup --- .drone.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .drone.yml diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..60c040d --- /dev/null +++ b/.drone.yml @@ -0,0 +1,22 @@ +kind: pipeline +name: default +workspace: + base: /go + path: src/discord-buttsbot-go +steps: +- name: test + image: golang + environment: + DISCORD_TOKEN: + from_secret: discord_token + commands: + - go get + - go build + - ./discord-buttsbot-go +- name: discord + image: appleboy/drone-discord + settings: + webhook_id: + from_secret: discord_webhook_id + webhook_token: + from_secret: discord_webhook_token \ No newline at end of file From 8cf6c3b68bdef25f945f392e35841549f72c5e32 Mon Sep 17 00:00:00 2001 From: pocketjawa Date: Fri, 26 Apr 2019 23:21:46 -0400 Subject: [PATCH 3/8] Made startup message more exciting! --- buttsbot.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buttsbot.go b/buttsbot.go index 0c9fa72..e82ddd4 100644 --- a/buttsbot.go +++ b/buttsbot.go @@ -5,5 +5,5 @@ import ( ) func main () { - fmt.Println("butts") + fmt.Println("butts!") } \ No newline at end of file From 8afc7ffa58d291eae3ac45e68ef88bbb9624fee5 Mon Sep 17 00:00:00 2001 From: pocketjawa Date: Sat, 27 Apr 2019 00:12:46 -0400 Subject: [PATCH 4/8] Start a basic connection to Discord. --- buttsbot.go | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/buttsbot.go b/buttsbot.go index e82ddd4..1cc264c 100644 --- a/buttsbot.go +++ b/buttsbot.go @@ -2,8 +2,43 @@ package main import ( "fmt" + "flag" + "log" + "os" + "os/signal" + "syscall" + "github.com/bwmarrin/discordgo" ) +var Session, _ = discordgo.New() + +func init(){ + Session.Token = os.Getenv("DISCORD_TOKEN") + if Session.Token == "" { + flag.StringVar(&Session.Token, "t", "", "Discord Authentication Token") + } +} + func main () { + var err error fmt.Println("butts!") + flag.Parse() + if Session.Token == "" { + log.Println("You must provide a Discord auth token!") + return + } + + //Open a connection to Discord + err = Session.Open() + if err != nil { + log.Printf("Error opening connection to Discord, %s\n", err) + os.Exit(1) + } + + //Wait for a CTRL-C + log.Printf("Now running. Press CTRL-C to exit.") + sc := make(chan os.Signal, 1) + signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill) + <-sc + Session.Close() } \ No newline at end of file From 0c0204caa2bab00652115215bbb415b463472e84 Mon Sep 17 00:00:00 2001 From: pocketjawa Date: Sat, 27 Apr 2019 00:28:14 -0400 Subject: [PATCH 5/8] Added test flag to connect and the immediately disconnect. --- .drone.yml | 2 +- buttsbot.go | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.drone.yml b/.drone.yml index 60c040d..2024244 100644 --- a/.drone.yml +++ b/.drone.yml @@ -12,7 +12,7 @@ steps: commands: - go get - go build - - ./discord-buttsbot-go + - ./discord-buttsbot-go -test - name: discord image: appleboy/drone-discord settings: diff --git a/buttsbot.go b/buttsbot.go index 1cc264c..78a14a4 100644 --- a/buttsbot.go +++ b/buttsbot.go @@ -1,25 +1,26 @@ package main import ( - "fmt" "flag" + "fmt" + "github.com/bwmarrin/discordgo" "log" "os" "os/signal" "syscall" - "github.com/bwmarrin/discordgo" ) var Session, _ = discordgo.New() +var testPtr = flag.Bool("test", false, "Test mode") -func init(){ +func init() { Session.Token = os.Getenv("DISCORD_TOKEN") if Session.Token == "" { flag.StringVar(&Session.Token, "t", "", "Discord Authentication Token") } } -func main () { +func main() { var err error fmt.Println("butts!") flag.Parse() @@ -37,8 +38,13 @@ func main () { //Wait for a CTRL-C log.Printf("Now running. Press CTRL-C to exit.") + if *testPtr == true { + log.Printf("Test successful! Now quiting.") + Session.Close() + os.Exit(0) + } sc := make(chan os.Signal, 1) signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill) <-sc Session.Close() -} \ No newline at end of file +} From 944d6137d4f6347ef8787aaf04b00d2fb2f91774 Mon Sep 17 00:00:00 2001 From: pocketjawa Date: Sat, 27 Apr 2019 01:56:31 -0400 Subject: [PATCH 6/8] Force using a bot token. --- buttsbot.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/buttsbot.go b/buttsbot.go index 78a14a4..eee62a0 100644 --- a/buttsbot.go +++ b/buttsbot.go @@ -12,11 +12,15 @@ import ( var Session, _ = discordgo.New() var testPtr = flag.Bool("test", false, "Test mode") +var bot_token string func init() { - Session.Token = os.Getenv("DISCORD_TOKEN") - if Session.Token == "" { - flag.StringVar(&Session.Token, "t", "", "Discord Authentication Token") + if os.Getenv("DISCORD_TOKEN") != "" { + Session.Token = "Bot " + os.Getenv("DISCORD_TOKEN") + } else { + flag.StringVar(&bot_token, "t", "", "Discord Authentication Token") + flag.Parse() + Session.Token = "Bot " + bot_token } } From c6151323eead242e1ba41b8afd10dd8505a17af8 Mon Sep 17 00:00:00 2001 From: pocketjawa Date: Sat, 27 Apr 2019 02:20:18 -0400 Subject: [PATCH 7/8] Message bot channel during startup and testing. --- .drone.yml | 2 ++ buttsbot.go | 11 +++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 2024244..a04fdb2 100644 --- a/.drone.yml +++ b/.drone.yml @@ -9,6 +9,8 @@ steps: environment: DISCORD_TOKEN: from_secret: discord_token + DISCORD_BOT_CHANNEL: + from_secret: discord_bot_channel commands: - go get - go build diff --git a/buttsbot.go b/buttsbot.go index eee62a0..b1fc335 100644 --- a/buttsbot.go +++ b/buttsbot.go @@ -13,15 +13,20 @@ import ( var Session, _ = discordgo.New() var testPtr = flag.Bool("test", false, "Test mode") var bot_token string +var bot_channel string func init() { + flag.StringVar(&bot_token, "t", "", "Discord Authentication Token") + flag.StringVar(&bot_channel, "bc", "", "Bot status channel") + flag.Parse() if os.Getenv("DISCORD_TOKEN") != "" { Session.Token = "Bot " + os.Getenv("DISCORD_TOKEN") } else { - flag.StringVar(&bot_token, "t", "", "Discord Authentication Token") - flag.Parse() Session.Token = "Bot " + bot_token } + if os.Getenv("DISCORD_BOT_CHANNEL") != "" { + bot_channel = os.Getenv("DISCORD_BOT_CHANNEL") + } } func main() { @@ -43,10 +48,12 @@ func main() { //Wait for a CTRL-C log.Printf("Now running. Press CTRL-C to exit.") if *testPtr == true { + Session.ChannelMessageSend(bot_channel, "Test complete: discord-buttsbot-go") log.Printf("Test successful! Now quiting.") Session.Close() os.Exit(0) } + Session.ChannelMessageSend(bot_channel, "This isn't a butt...") sc := make(chan os.Signal, 1) signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill) <-sc From 87360672f053ebc08c8cda4871a611dec5e5032b Mon Sep 17 00:00:00 2001 From: pocketjawa Date: Sat, 27 Apr 2019 02:27:24 -0400 Subject: [PATCH 8/8] Moved startup status to ready handler. --- buttsbot.go | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/buttsbot.go b/buttsbot.go index b1fc335..17e85eb 100644 --- a/buttsbot.go +++ b/buttsbot.go @@ -38,6 +38,9 @@ func main() { return } + //Handlers + Session.AddHandler(ready) + //Open a connection to Discord err = Session.Open() if err != nil { @@ -47,15 +50,19 @@ func main() { //Wait for a CTRL-C log.Printf("Now running. Press CTRL-C to exit.") - if *testPtr == true { - Session.ChannelMessageSend(bot_channel, "Test complete: discord-buttsbot-go") - log.Printf("Test successful! Now quiting.") - Session.Close() - os.Exit(0) - } - Session.ChannelMessageSend(bot_channel, "This isn't a butt...") sc := make(chan os.Signal, 1) signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill) <-sc Session.Close() } + +func ready(s *discordgo.Session, event *discordgo.Ready) { + if *testPtr == true { + s.ChannelMessageSend(bot_channel, "Test complete: discord-buttsbot-go") + log.Printf("Test successful! Now quiting.") + s.Close() + os.Exit(0) + } + s.UpdateStatus(0, "with butts!") + s.ChannelMessageSend(bot_channel, "This isn't a butt...") +}