session.go 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /******************************************************************************
  2. * A Discord API for Golang.
  3. *
  4. * This file has structs and functions specific to a session.
  5. *
  6. * A session is a single connection to Discord for a given
  7. * user and all REST and Websock API functions exist within
  8. * a session.
  9. *
  10. * See the restapi.go and wsapi.go for more information.
  11. */
  12. package discordgo
  13. import "github.com/gorilla/websocket"
  14. // A Session represents a connection to the Discord REST API.
  15. // token : The authentication token returned from Discord
  16. // Debug : If set to ture debug logging will be displayed.
  17. type Session struct {
  18. Token string // Authentication token for this session
  19. Debug bool // Debug for printing JSON request/responses
  20. Cache int // number in X to cache some responses
  21. // Settable Callback functions for Websocket Events
  22. OnEvent func(*Session, Event) // should Event be *Event?
  23. OnReady func(*Session, Ready)
  24. OnTypingStart func(*Session, TypingStart)
  25. OnMessageCreate func(*Session, Message)
  26. OnMessageUpdate func(*Session, Message)
  27. OnMessageDelete func(*Session, MessageDelete)
  28. OnMessageAck func(*Session, MessageAck)
  29. OnPresenceUpdate func(*Session, PresenceUpdate)
  30. OnVoiceStateUpdate func(*Session, VoiceState)
  31. OnChannelCreate func(*Session, Channel)
  32. OnChannelUpdate func(*Session, Channel)
  33. OnChannelDelete func(*Session, Channel)
  34. OnGuildCreate func(*Session, Guild)
  35. OnGuildUpdate func(*Session, Guild)
  36. OnGuildDelete func(*Session, Guild)
  37. OnGuildMemberAdd func(*Session, Member)
  38. OnGuildMemberRemove func(*Session, Member)
  39. OnGuildMemberDelete func(*Session, Member) // which is it?
  40. OnGuildMemberUpdate func(*Session, Member)
  41. OnGuildRoleCreate func(*Session, Role)
  42. OnGuildRoleUpdate func(*Session, GuildRoleUpdate)
  43. OnGuildRoleDelete func(*Session, Role)
  44. OnGuildIntegrationsUpdate func(*Session, GuildIntegrationsUpdate)
  45. // OnMessageCreate func(Session, Event, Message)
  46. // ^^ Any value to passing session, event, message?
  47. // probably just the Message is all one would need.
  48. // but having the sessin could be handy?
  49. wsConn *websocket.Conn
  50. //TODO, add bools for like.
  51. // are we connnected to websocket?
  52. // have we authenticated to login?
  53. // lets put all the general session
  54. // tracking and infos here.. clearly
  55. }
  56. /******************************************************************************
  57. * The below functions are "shortcut" methods for functions in restapi.go
  58. * Reference the client.go file for more documentation.
  59. */
  60. func (s *Session) Self() (user User, err error) {
  61. user, err = s.User("@me")
  62. return
  63. }
  64. func (s *Session) MyPrivateChannels() (channels []Channel, err error) {
  65. channels, err = s.UserChannels("@me")
  66. return
  67. }
  68. func (s *Session) MyGuilds() (servers []Guild, err error) {
  69. servers, err = s.UserGuilds("@me")
  70. return
  71. }