session.go 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. OnTypingStart func(*Session, TypingStart)
  18. OnMessageCreate func(*Session, Message)
  19. OnMessageUpdate func(*Session, Message)
  20. OnMessageDelete func(*Session, MessageDelete)
  21. OnMessageAck func(*Session, MessageAck)
  22. OnPresenceUpdate func(*Session, PresenceUpdate)
  23. OnVoiceStateUpdate func(*Session, VoiceState)
  24. OnChannelCreate func(*Session, Channel)
  25. OnChannelUpdate func(*Session, Channel)
  26. OnChannelDelete func(*Session, Channel)
  27. OnGuildCreate func(*Session, Guild)
  28. OnGuildDelete func(*Session, Guild)
  29. OnGuildMemberAdd func(*Session, Member)
  30. OnGuildMemberRemove func(*Session, Member)
  31. OnGuildMemberDelete func(*Session, Member) // which is it?
  32. OnGuildMemberUpdate func(*Session, Member)
  33. OnGuildRoleCreate func(*Session, Role)
  34. OnGuildRoleDelete func(*Session, Role)
  35. OnGuildIntegrationsUpdate func(*Session, GuildIntegrationsUpdate)
  36. // OnMessageCreate func(Session, Event, Message)
  37. // ^^ Any value to passing session, event, message?
  38. // probably just the Message is all one would need.
  39. // but having the sessin could be handy?
  40. wsConn *websocket.Conn
  41. //TODO, add bools for like.
  42. // are we connnected to websocket?
  43. // have we authenticated to login?
  44. // lets put all the general session
  45. // tracking and infos here.. clearly
  46. }
  47. /******************************************************************************
  48. * The below functions are "shortcut" methods for functions in restapi.go
  49. * Reference the client.go file for more documentation.
  50. */
  51. func (session *Session) Login(email string, password string) (token string, err error) {
  52. token, err = Login(session, email, password)
  53. return
  54. }
  55. func (session *Session) Self() (user User, err error) {
  56. user, err = Users(session, "@me")
  57. return
  58. }
  59. func (session *Session) PrivateChannels() (channels []Channel, err error) {
  60. channels, err = PrivateChannels(session, "@me")
  61. return
  62. }
  63. func (session *Session) Guilds() (servers []Guild, err error) {
  64. servers, err = Guilds(session, "@me")
  65. return
  66. }
  67. // Logout ends a session and logs out from the Discord REST API.
  68. func (session *Session) Logout() (err error) {
  69. err = Logout(session)
  70. return
  71. }