session.go 2.9 KB

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