github.com/diamondburned/arikawa@v1.3.14/_example/undeleter/main.go (about) 1 package main 2 3 import ( 4 "log" 5 "os" 6 7 "github.com/diamondburned/arikawa/gateway" 8 "github.com/diamondburned/arikawa/state" 9 "github.com/diamondburned/arikawa/utils/handler" 10 ) 11 12 // To run, do `BOT_TOKEN="TOKEN HERE" go run .` 13 14 func main() { 15 var token = os.Getenv("BOT_TOKEN") 16 if token == "" { 17 log.Fatalln("No $BOT_TOKEN given.") 18 } 19 20 s, err := state.New("Bot " + token) 21 if err != nil { 22 log.Fatalln("Session failed:", err) 23 } 24 25 // Make a pre-handler 26 s.PreHandler = handler.New() 27 s.PreHandler.Synchronous = true 28 s.PreHandler.AddHandler(func(c *gateway.MessageDeleteEvent) { 29 // Grab from the state 30 m, err := s.Message(c.ChannelID, c.ID) 31 if err != nil { 32 log.Println("Not found:", c.ID) 33 } else { 34 log.Println(m.Author.Username, "deleted", m.Content) 35 } 36 }) 37 38 if err := s.Open(); err != nil { 39 log.Fatalln("Failed to connect:", err) 40 } 41 defer s.Close() 42 43 u, err := s.Me() 44 if err != nil { 45 log.Fatalln("Failed to get myself:", err) 46 } 47 48 log.Println("Started as", u.Username) 49 50 // Block forever. 51 select {} 52 }