Added user notes (#361)

* Added user notes

* Added note websocket event (thanks iopred :D)

* Added ready event (thanks again, iopred)

* Renamed function
This commit is contained in:
legolord208 2017-04-28 21:22:02 +02:00 committed by Chris Rhodes
parent 2a4314dbdc
commit 43c8b518ad
4 changed files with 46 additions and 0 deletions

View file

@ -63,6 +63,7 @@ var (
EndpointUserChannels = func(uID string) string { return EndpointUsers + uID + "/channels" } EndpointUserChannels = func(uID string) string { return EndpointUsers + uID + "/channels" }
EndpointUserDevices = func(uID string) string { return EndpointUsers + uID + "/devices" } EndpointUserDevices = func(uID string) string { return EndpointUsers + uID + "/devices" }
EndpointUserConnections = func(uID string) string { return EndpointUsers + uID + "/connections" } EndpointUserConnections = func(uID string) string { return EndpointUsers + uID + "/connections" }
EndpointUserNotes = func(uID string) string { return EndpointUsers + "@me/notes/" + uID }
EndpointGuild = func(gID string) string { return EndpointGuilds + gID } EndpointGuild = func(gID string) string { return EndpointGuilds + gID }
EndpointGuildInivtes = func(gID string) string { return EndpointGuilds + gID + "/invites" } EndpointGuildInivtes = func(gID string) string { return EndpointGuilds + gID + "/invites" }

View file

@ -45,6 +45,7 @@ const (
resumedEventType = "RESUMED" resumedEventType = "RESUMED"
typingStartEventType = "TYPING_START" typingStartEventType = "TYPING_START"
userGuildSettingsUpdateEventType = "USER_GUILD_SETTINGS_UPDATE" userGuildSettingsUpdateEventType = "USER_GUILD_SETTINGS_UPDATE"
userNoteUpdateEventType = "USER_NOTE_UPDATE"
userSettingsUpdateEventType = "USER_SETTINGS_UPDATE" userSettingsUpdateEventType = "USER_SETTINGS_UPDATE"
userUpdateEventType = "USER_UPDATE" userUpdateEventType = "USER_UPDATE"
voiceServerUpdateEventType = "VOICE_SERVER_UPDATE" voiceServerUpdateEventType = "VOICE_SERVER_UPDATE"
@ -791,6 +792,26 @@ func (eh userGuildSettingsUpdateEventHandler) Handle(s *Session, i interface{})
} }
} }
// userNoteUpdateEventHandler is an event handler for UserNoteUpdate events.
type userNoteUpdateEventHandler func(*Session, *UserNoteUpdate)
// Type returns the event type for UserNoteUpdate events.
func (eh userNoteUpdateEventHandler) Type() string {
return userNoteUpdateEventType
}
// New returns a new instance of UserNoteUpdate.
func (eh userNoteUpdateEventHandler) New() interface{} {
return &UserNoteUpdate{}
}
// Handle is the handler for UserNoteUpdate events.
func (eh userNoteUpdateEventHandler) Handle(s *Session, i interface{}) {
if t, ok := i.(*UserNoteUpdate); ok {
eh(s, t)
}
}
// userSettingsUpdateEventHandler is an event handler for UserSettingsUpdate events. // userSettingsUpdateEventHandler is an event handler for UserSettingsUpdate events.
type userSettingsUpdateEventHandler func(*Session, *UserSettingsUpdate) type userSettingsUpdateEventHandler func(*Session, *UserSettingsUpdate)
@ -951,6 +972,8 @@ func handlerForInterface(handler interface{}) EventHandler {
return typingStartEventHandler(v) return typingStartEventHandler(v)
case func(*Session, *UserGuildSettingsUpdate): case func(*Session, *UserGuildSettingsUpdate):
return userGuildSettingsUpdateEventHandler(v) return userGuildSettingsUpdateEventHandler(v)
case func(*Session, *UserNoteUpdate):
return userNoteUpdateEventHandler(v)
case func(*Session, *UserSettingsUpdate): case func(*Session, *UserSettingsUpdate):
return userSettingsUpdateEventHandler(v) return userSettingsUpdateEventHandler(v)
case func(*Session, *UserUpdate): case func(*Session, *UserUpdate):
@ -999,6 +1022,7 @@ func init() {
registerInterfaceProvider(resumedEventHandler(nil)) registerInterfaceProvider(resumedEventHandler(nil))
registerInterfaceProvider(typingStartEventHandler(nil)) registerInterfaceProvider(typingStartEventHandler(nil))
registerInterfaceProvider(userGuildSettingsUpdateEventHandler(nil)) registerInterfaceProvider(userGuildSettingsUpdateEventHandler(nil))
registerInterfaceProvider(userNoteUpdateEventHandler(nil))
registerInterfaceProvider(userSettingsUpdateEventHandler(nil)) registerInterfaceProvider(userSettingsUpdateEventHandler(nil))
registerInterfaceProvider(userUpdateEventHandler(nil)) registerInterfaceProvider(userUpdateEventHandler(nil))
registerInterfaceProvider(voiceServerUpdateEventHandler(nil)) registerInterfaceProvider(voiceServerUpdateEventHandler(nil))

View file

@ -48,6 +48,7 @@ type Ready struct {
UserGuildSettings []*UserGuildSettings `json:"user_guild_settings"` UserGuildSettings []*UserGuildSettings `json:"user_guild_settings"`
Relationships []*Relationship `json:"relationships"` Relationships []*Relationship `json:"relationships"`
Presences []*Presence `json:"presences"` Presences []*Presence `json:"presences"`
Notes map[string]string `json:"notes"`
} }
// ChannelCreate is the data for a ChannelCreate event. // ChannelCreate is the data for a ChannelCreate event.
@ -227,6 +228,12 @@ type UserGuildSettingsUpdate struct {
*UserGuildSettings *UserGuildSettings
} }
// UserNoteUpdate is the data for a UserNoteUpdate event.
type UserNoteUpdate struct {
ID string `json:"id"`
Note string `json:"note"`
}
// VoiceServerUpdate is the data for a VoiceServerUpdate event. // VoiceServerUpdate is the data for a VoiceServerUpdate event.
type VoiceServerUpdate struct { type VoiceServerUpdate struct {
Token string `json:"token"` Token string `json:"token"`

View file

@ -1846,6 +1846,20 @@ func (s *Session) MessageReactions(channelID, messageID, emojiID string, limit i
return return
} }
// ------------------------------------------------------------------------------------------------
// Functions specific to user notes
// ------------------------------------------------------------------------------------------------
// UserNoteSet sets the note for a specific user.
func (s *Session) UserNoteSet(userID string, message string) (err error) {
data := struct {
Note string `json:"note"`
}{message}
_, err = s.RequestWithBucketID("PUT", EndpointUserNotes(userID), data, EndpointUserNotes(""))
return
}
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Functions specific to Discord Relationships (Friends list) // Functions specific to Discord Relationships (Friends list)
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------