grim/wasdead

21336f609455
LICENSE created online with Bitbucket
package main
import (
"flag"
"fmt"
"log"
"os"
"os/signal"
"strings"
"syscall"
"github.com/bwmarrin/discordgo"
)
var (
Token string
logger *log.Logger
)
func init() {
logger = log.New(os.Stderr, " ", log.Ldate|log.Ltime)
flag.StringVar(&Token, "t", "", "Bot Token")
flag.Parse()
}
func logDebug(v ...interface{}) {
logger.SetPrefix("DEBUG ")
logger.Println(v...)
}
func logInfo(v ...interface{}) {
logger.SetPrefix("INFO ")
logger.Println(v...)
}
func main() {
logDebug("Bot Token:", Token)
dg, err := discordgo.New("Bot " + strings.TrimSpace(Token))
if err != nil {
fmt.Println("error creating Discord session,", err)
return
}
dg.AddHandler(newPresenceEvent)
dg.AddHandler(messageCreate)
err = dg.Open()
if err != nil {
log.Panic(err)
return
}
fmt.Println("Bot is 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
dg.Close()
}
func newPresenceEvent(sess *discordgo.Session, evt *discordgo.PresenceUpdate) {
logDebug("PRESENSE UPDATE fired for user-ID:", evt.User.ID)
logDebug(fmt.Sprintf("PRESENSE UPDATE data: %#v", evt))
if evt.Game != nil {
logDebug(fmt.Sprintf("PRESENSE UPDATE game: %#v", evt.Game))
}
}
func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) {
logDebug("Message: ", m.Content)
// Ignore all messages created by the bot itself
// This isn't required in this specific example but it's a good practice.
if m.Author.ID == s.State.User.ID {
return
}
// If the message is "ping" reply with "Pong!"
if m.Content == "ping" {
s.ChannelMessageSend(m.ChannelID, "Pong!")
}
// If the message is "pong" reply with "Ping!"
if m.Content == "pong" {
s.ChannelMessageSend(m.ChannelID, "Ping!")
}
}