The new logbot, not committed from the wrong terminal window this time.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
1.4 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. package bot
  2. import (
  3. "log"
  4. "strings"
  5. "git.aiterp.net/gisle/irc"
  6. "git.aiterp.net/rpdata/logbot3/internal/config"
  7. )
  8. func handler(event *irc.Event, client *irc.Client) {
  9. bot, ok := client.Value(botKey).(*Bot)
  10. if !ok {
  11. return
  12. }
  13. switch event.Name() {
  14. // Handle bot loop
  15. case "hook.ready":
  16. {
  17. log.Println("Client is ready!")
  18. go bot.loop()
  19. }
  20. case "client.disconnect":
  21. {
  22. log.Println("Client disconnected!")
  23. bot.stopLoop()
  24. conf := config.Get().Server
  25. go bot.Connect(conf.Address, conf.SSL, 0)
  26. }
  27. // Log joins and leaves
  28. case "packet.join":
  29. {
  30. if client.Nick() == event.Nick {
  31. // TODO: Open channel handler
  32. }
  33. log.Println("(JOIN)", event.Nick, "joined", event.Arg(0))
  34. }
  35. case "packet.part":
  36. {
  37. if client.Nick() == event.Nick {
  38. // TODO: Close channel handler
  39. }
  40. log.Println("(PART)", event.Nick, "left", event.Arg(0))
  41. }
  42. case "packet.quit":
  43. {
  44. log.Println("(QUIT)", event.Nick, "quit")
  45. }
  46. // Log initial numerics for debugging's sake
  47. case "packet.001", "packet.002", "packet.003", "packet.251", "packet.255", "packet.265", "packet.266", "packet.250", "packet.375", "packet.372", "packet.376":
  48. {
  49. log.Printf("(%s) %s\n", event.Verb(), event.Text)
  50. }
  51. case "packet.005", "packet.254":
  52. {
  53. log.Printf("(%s) %s %s\n", event.Verb(), strings.Join(event.Args, " "), event.Text)
  54. }
  55. }
  56. }
  57. func init() {
  58. irc.Handle(handler)
  59. }