discordmuffin/session.go

81 lines
2.9 KiB
Go

/******************************************************************************
* A Discord API for Golang.
*/
package discordgo
import "github.com/gorilla/websocket"
// A Session represents a connection to the Discord REST API.
// token : The authentication token returned from Discord
// Debug : If set to ture debug logging will be displayed.
type Session struct {
Token string // Authentication token for this session
Gateway string // Websocket Gateway for this session
Debug bool // Debug for printing JSON request/responses
Cache int // number in X to cache some responses
// Settable Callback functions for Websocket Events
OnEvent func(*Session, Event) // should Event be *Event?
OnReady func(*Session, Ready)
OnMessageCreate func(*Session, Message)
OnTypingStart func(*Session, Event)
OnMessageAck func(*Session, Event)
OnMessageUpdate func(*Session, Event)
OnMessageDelete func(*Session, Event)
OnPresenceUpdate func(*Session, Event)
OnChannelCreate func(*Session, Event)
OnChannelUpdate func(*Session, Event)
OnChannelDelete func(*Session, Event)
OnGuildCreate func(*Session, Event)
OnGuildDelete func(*Session, Event)
OnGuildMemberAdd func(*Session, Event)
OnGuildMemberRemove func(*Session, Event)
OnGuildMemberDelete func(*Session, Event) // which is it?
OnGuildMemberUpdate func(*Session, Event)
OnGuildRoleCreate func(*Session, Event)
OnGuildRoleDelete func(*Session, Event)
OnGuildIntegrationsUpdate func(*Session, Event)
// OnMessageCreate func(Session, Event, Message)
// ^^ Any value to passing session, event, message?
// probably just the Message is all one would need.
// but having the sessin could be handy?
wsConn *websocket.Conn
//TODO, add bools for like.
// are we connnected to websocket?
// have we authenticated to login?
// lets put all the general session
// tracking and infos here.. clearly
}
/******************************************************************************
* The below functions are "shortcut" methods for functions in restapi.go
* Reference the client.go file for more documentation.
*/
func (session *Session) Login(email string, password string) (token string, err error) {
token, err = Login(session, email, password)
return
}
func (session *Session) Self() (user User, err error) {
user, err = Users(session, "@me")
return
}
func (session *Session) PrivateChannels() (channels []Channel, err error) {
channels, err = PrivateChannels(session, "@me")
return
}
func (session *Session) Servers() (servers []Server, err error) {
servers, err = Servers(session, "@me")
return
}
// Logout ends a session and logs out from the Discord REST API.
func (session *Session) Logout() (err error) {
err = Logout(session)
return
}