-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclient.go
More file actions
65 lines (60 loc) · 1.9 KB
/
Copy pathclient.go
File metadata and controls
65 lines (60 loc) · 1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package discord
import (
"errors"
"github.com/gorilla/websocket"
)
//Client wraps all Discord methods
type Client struct {
User
Token string
GatewayURL string `json:"url"`
wsConn *websocket.Conn
Guilds []Guild
PrivateChannel []PrivateChannel
OnReady func(Event, Ready)
OnTypingStart func(Event, TypingEvent)
OnMessageCreate func(Event, Message)
OnMessageUpdate func(Event, Message)
OnMessageDelete func(Event, Message)
OnPresenceStart func(Event, Presence)
OnPresenceUpdate func(Event, Presence)
OnUserSettingsUpdate func(Event, UserSettings)
OnGuildCreate func(Event, GuildCreateEvent)
OnGuildUpdate func(Event, Guild)
OnGuildDelete func(Event, GuildDeleteEvent)
OnGuildIntegrationsUpdate func(Event, GuildMemberEvent)
OnGuildMemberAdd func(Event, GuildMemberEvent)
OnGuildMemberUpdate func(Event, GuildMemberEvent)
OnGuildMemberRemove func(Event, GuildMemberEvent)
OnGuildRoleDelete func(Event, GuildRoleDeleteEvent)
OnGuildRoleUpdate func(Event, Guild)
OnGuildRoleCreate func(Event, GuildRoleEvent)
OnVoiceStateUpdate func(Event, VoiceState)
isListening bool
}
//Login Method for Discord
func (c *Client) Login(email string, pass string) (err error) {
//Basic validation
if len(email) < 3 {
err = errors.New("email too short")
return
}
if len(pass) < 3 {
err = errors.New("password too short")
return
}
//If user is not logged in, authorize and fetch a token
if !c.IsLoggedIn() {
err = c.authLogin(email, pass)
if err != nil {
return
}
}
//sets User data on client
c.UserMe()
return
}
//IsLoggedIn returns if client is logged in to discord
func (c *Client) IsLoggedIn() (isLoggedIn bool) {
return c.Token != ""
}