initial
[badbot.git] / main.go
CommitLineData
c612edd4
IS
1package main
2
3import (
4 "flag"
5 "fmt"
6 "os"
7 "os/signal"
8 "syscall"
9
10 "github.com/bwmarrin/discordgo"
11)
12
13// Variables used for command line parameters
14var (
15 Token string
16)
17
18func init() {
19
20 flag.StringVar(&Token, "t", "", "Bot Token")
21 flag.Parse()
22}
23
24func main() {
25
26 // Create a new Discord session using the provided bot token.
27 dg, err := discordgo.New("Bot " + Token)
28 if err != nil {
29 fmt.Println("error creating Discord session,", err)
30 return
31 }
32
33 // Register the messageCreate func as a callback for MessageCreate events.
34 dg.AddHandler(messageCreate)
35
36 // Open a websocket connection to Discord and begin listening.
37 err = dg.Open()
38 if err != nil {
39 fmt.Println("error opening connection,", err)
40 return
41 }
42
43 // Wait here until CTRL-C or other term signal is received.
44 fmt.Println("Bot is now running. Press CTRL-C to exit.")
45 sc := make(chan os.Signal, 1)
46 signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill)
47 <-sc
48
49 // Cleanly close down the Discord session.
50 dg.Close()
51}
52
53// This function will be called (due to AddHandler above) every time a new
54// message is created on any channel that the autenticated bot has access to.
55func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) {
56
57 // Ignore all messages created by the bot itself
58 // This isn't required in this specific example but it's a good practice.
59 if m.Author.ID == s.State.User.ID {
60 return
61 }
62 // If the message is "ping" reply with "Pong!"
63 if m.Content == "bad bot" {
64 s.ChannelMessageSend(m.ChannelID, "the worst bot")
65 }
66
67 // If the message is "pong" reply with "Ping!"
68 if m.Content == "pong" {
69 s.ChannelMessageSend(m.ChannelID, "Ping!")
70 }
71}