package disgord

// Code generated - This file has been automatically generated by generate/events/main.go - DO NOT EDIT.
// Warning: This file is overwritten at "go generate", instead adapt events.go and event/cache.go and run go generate

import "github.com/andersfylling/disgord/json"

// Cache interface for event handling and REST methods
// commented out fields are simply not supported yet. PR's are welcome
//
// Note that on events you are expected to return a unmarshalled object. For delete methods
// you should return nil, and a nil error if the objected to be deleted was not found (nop!).
// Note that the error might change to a "CacheMiss" or something similar such that we can
//
//	get more metrics!
type Cache interface {
	CacheUpdater
	CacheGetter
}

type CacheGetter interface {
	// REST API

	// GetGuildAuditLogs(guildID Snowflake) *guildAuditLogsBuilder // TODO
	GetMessages(channelID Snowflake, params *GetMessages) ([]*Message, error)
	GetMessage(channelID, messageID Snowflake) (ret *Message, err error)
	//GetUsersWhoReacted(channelID, messageID Snowflake, emoji interface{}, params URLQueryStringer) (reactors []*User, err error)
	//GetPinnedMessages(channelID Snowflake) (ret []*Message, err error)
	GetChannel(id Snowflake) (ret *Channel, err error)
	//GetChannelInvites(id Snowflake) (ret []*Invite, err error)
	GetGuildEmoji(guildID, emojiID Snowflake) (*Emoji, error)
	GetGuildEmojis(id Snowflake) ([]*Emoji, error)
	GetGuild(id Snowflake) (*Guild, error)
	GetGuildChannels(id Snowflake) ([]*Channel, error)
	GetMember(guildID, userID Snowflake) (*Member, error)
	GetMembers(guildID Snowflake, params *GetMembers) ([]*Member, error)
	//GetGuildBans(id Snowflake) ([]*Ban, error)
	//GetGuildBan(guildID, userID Snowflake) (*Ban, error)
	GetGuildRoles(guildID Snowflake) ([]*Role, error)
	//GetMemberPermissions(guildID, userID Snowflake) (permissions PermissionBit, err error)
	//GetGuildVoiceRegions(id Snowflake) ([]*VoiceRegion, error)
	//GetGuildInvites(id Snowflake) ([]*Invite, error)
	//GetGuildIntegrations(id Snowflake) ([]*Integration, error)
	//GetGuildEmbed(guildID Snowflake) (*GuildEmbed, error)
	//GetGuildVanityURL(guildID Snowflake) (*PartialInvite, error)
	//GetInvite(inviteCode string, params URLQueryStringer) (*Invite, error)
	GetCurrentUser() (*User, error)
	GetUser(id Snowflake) (*User, error)
	GetCurrentUserGuilds(params *GetCurrentUserGuilds) (ret []*Guild, err error)
	//GetUserDMs() (ret []*Channel, err error)
	//GetUserConnections() (ret []*UserConnection, err error)
	//GetVoiceRegions() ([]*VoiceRegion, error)
	//GetChannelWebhooks(channelID Snowflake) (ret []*Webhook, err error)
	//GetGuildWebhooks(guildID Snowflake) (ret []*Webhook, err error)
	//GetWebhook(id Snowflake) (ret *Webhook, err error)
}

type CacheUpdater interface {
	// Gateway events
	ChannelCreate(data []byte) (*ChannelCreate, error)
	ChannelDelete(data []byte) (*ChannelDelete, error)
	ChannelPinsUpdate(data []byte) (*ChannelPinsUpdate, error)
	ChannelUpdate(data []byte) (*ChannelUpdate, error)
	GuildBanAdd(data []byte) (*GuildBanAdd, error)
	GuildBanRemove(data []byte) (*GuildBanRemove, error)
	GuildCreate(data []byte) (*GuildCreate, error)
	GuildDelete(data []byte) (*GuildDelete, error)
	GuildEmojisUpdate(data []byte) (*GuildEmojisUpdate, error)
	GuildIntegrationsUpdate(data []byte) (*GuildIntegrationsUpdate, error)
	GuildMemberAdd(data []byte) (*GuildMemberAdd, error)
	GuildMemberRemove(data []byte) (*GuildMemberRemove, error)
	GuildMemberUpdate(data []byte) (*GuildMemberUpdate, error)
	GuildMembersChunk(data []byte) (*GuildMembersChunk, error)
	GuildRoleCreate(data []byte) (*GuildRoleCreate, error)
	GuildRoleDelete(data []byte) (*GuildRoleDelete, error)
	GuildRoleUpdate(data []byte) (*GuildRoleUpdate, error)
	GuildScheduledEventCreate(data []byte) (*GuildScheduledEventCreate, error)
	GuildScheduledEventDelete(data []byte) (*GuildScheduledEventDelete, error)
	GuildScheduledEventUpdate(data []byte) (*GuildScheduledEventUpdate, error)
	GuildScheduledEventUserAdd(data []byte) (*GuildScheduledEventUserAdd, error)
	GuildScheduledEventUserRemove(data []byte) (*GuildScheduledEventUserRemove, error)
	GuildStickersUpdate(data []byte) (*GuildStickersUpdate, error)
	GuildUpdate(data []byte) (*GuildUpdate, error)
	InteractionCreate(data []byte) (*InteractionCreate, error)
	InviteCreate(data []byte) (*InviteCreate, error)
	InviteDelete(data []byte) (*InviteDelete, error)
	MessageCreate(data []byte) (*MessageCreate, error)
	MessageDelete(data []byte) (*MessageDelete, error)
	MessageDeleteBulk(data []byte) (*MessageDeleteBulk, error)
	MessageReactionAdd(data []byte) (*MessageReactionAdd, error)
	MessageReactionRemove(data []byte) (*MessageReactionRemove, error)
	MessageReactionRemoveAll(data []byte) (*MessageReactionRemoveAll, error)
	MessageReactionRemoveEmoji(data []byte) (*MessageReactionRemoveEmoji, error)
	MessageUpdate(data []byte) (*MessageUpdate, error)
	PresenceUpdate(data []byte) (*PresenceUpdate, error)
	Ready(data []byte) (*Ready, error)
	Resumed(data []byte) (*Resumed, error)
	ThreadCreate(data []byte) (*ThreadCreate, error)
	ThreadDelete(data []byte) (*ThreadDelete, error)
	ThreadListSync(data []byte) (*ThreadListSync, error)
	ThreadMemberUpdate(data []byte) (*ThreadMemberUpdate, error)
	ThreadMembersUpdate(data []byte) (*ThreadMembersUpdate, error)
	ThreadUpdate(data []byte) (*ThreadUpdate, error)
	TypingStart(data []byte) (*TypingStart, error)
	UserUpdate(data []byte) (*UserUpdate, error)
	VoiceServerUpdate(data []byte) (*VoiceServerUpdate, error)
	VoiceStateUpdate(data []byte) (*VoiceStateUpdate, error)
	WebhooksUpdate(data []byte) (*WebhooksUpdate, error)
}

func cacheDispatcher(c Cache, event string, data []byte) (evt EventType, err error) {
	switch event {
	case EvtChannelCreate:
		evt, err = c.ChannelCreate(data)
	case EvtChannelDelete:
		evt, err = c.ChannelDelete(data)
	case EvtChannelPinsUpdate:
		evt, err = c.ChannelPinsUpdate(data)
	case EvtChannelUpdate:
		evt, err = c.ChannelUpdate(data)
	case EvtGuildBanAdd:
		evt, err = c.GuildBanAdd(data)
	case EvtGuildBanRemove:
		evt, err = c.GuildBanRemove(data)
	case EvtGuildCreate:
		evt, err = c.GuildCreate(data)
	case EvtGuildDelete:
		evt, err = c.GuildDelete(data)
	case EvtGuildEmojisUpdate:
		evt, err = c.GuildEmojisUpdate(data)
	case EvtGuildIntegrationsUpdate:
		evt, err = c.GuildIntegrationsUpdate(data)
	case EvtGuildMemberAdd:
		evt, err = c.GuildMemberAdd(data)
	case EvtGuildMemberRemove:
		evt, err = c.GuildMemberRemove(data)
	case EvtGuildMemberUpdate:
		evt, err = c.GuildMemberUpdate(data)
	case EvtGuildMembersChunk:
		evt, err = c.GuildMembersChunk(data)
	case EvtGuildRoleCreate:
		evt, err = c.GuildRoleCreate(data)
	case EvtGuildRoleDelete:
		evt, err = c.GuildRoleDelete(data)
	case EvtGuildRoleUpdate:
		evt, err = c.GuildRoleUpdate(data)
	case EvtGuildScheduledEventCreate:
		evt, err = c.GuildScheduledEventCreate(data)
	case EvtGuildScheduledEventDelete:
		evt, err = c.GuildScheduledEventDelete(data)
	case EvtGuildScheduledEventUpdate:
		evt, err = c.GuildScheduledEventUpdate(data)
	case EvtGuildScheduledEventUserAdd:
		evt, err = c.GuildScheduledEventUserAdd(data)
	case EvtGuildScheduledEventUserRemove:
		evt, err = c.GuildScheduledEventUserRemove(data)
	case EvtGuildStickersUpdate:
		evt, err = c.GuildStickersUpdate(data)
	case EvtGuildUpdate:
		evt, err = c.GuildUpdate(data)
	case EvtInteractionCreate:
		evt, err = c.InteractionCreate(data)
	case EvtInviteCreate:
		evt, err = c.InviteCreate(data)
	case EvtInviteDelete:
		evt, err = c.InviteDelete(data)
	case EvtMessageCreate:
		evt, err = c.MessageCreate(data)
	case EvtMessageDelete:
		evt, err = c.MessageDelete(data)
	case EvtMessageDeleteBulk:
		evt, err = c.MessageDeleteBulk(data)
	case EvtMessageReactionAdd:
		evt, err = c.MessageReactionAdd(data)
	case EvtMessageReactionRemove:
		evt, err = c.MessageReactionRemove(data)
	case EvtMessageReactionRemoveAll:
		evt, err = c.MessageReactionRemoveAll(data)
	case EvtMessageReactionRemoveEmoji:
		evt, err = c.MessageReactionRemoveEmoji(data)
	case EvtMessageUpdate:
		evt, err = c.MessageUpdate(data)
	case EvtPresenceUpdate:
		evt, err = c.PresenceUpdate(data)
	case EvtReady:
		evt, err = c.Ready(data)
	case EvtResumed:
		evt, err = c.Resumed(data)
	case EvtThreadCreate:
		evt, err = c.ThreadCreate(data)
	case EvtThreadDelete:
		evt, err = c.ThreadDelete(data)
	case EvtThreadListSync:
		evt, err = c.ThreadListSync(data)
	case EvtThreadMemberUpdate:
		evt, err = c.ThreadMemberUpdate(data)
	case EvtThreadMembersUpdate:
		evt, err = c.ThreadMembersUpdate(data)
	case EvtThreadUpdate:
		evt, err = c.ThreadUpdate(data)
	case EvtTypingStart:
		evt, err = c.TypingStart(data)
	case EvtUserUpdate:
		evt, err = c.UserUpdate(data)
	case EvtVoiceServerUpdate:
		evt, err = c.VoiceServerUpdate(data)
	case EvtVoiceStateUpdate:
		evt, err = c.VoiceStateUpdate(data)
	case EvtWebhooksUpdate:
		evt, err = c.WebhooksUpdate(data)
	default:
		evt = nil
		err = nil
	}

	return evt, err
}

// nop cache
type CacheNop struct{}

var _ CacheUpdater = (*CacheNop)(nil)
var _ CacheGetter = (*CacheNop)(nil)
var _ Cache = (*CacheNop)(nil)

func (c *CacheNop) Patch(v interface{}) {
	if v == nil {
		return
	}
	if deficient, ok := v.(internalUpdater); ok {
		deficient.updateInternals()
	}
}
func (c *CacheNop) ChannelCreate(data []byte) (evt *ChannelCreate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) ChannelDelete(data []byte) (evt *ChannelDelete, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) ChannelPinsUpdate(data []byte) (evt *ChannelPinsUpdate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) ChannelUpdate(data []byte) (evt *ChannelUpdate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildBanAdd(data []byte) (evt *GuildBanAdd, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildBanRemove(data []byte) (evt *GuildBanRemove, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildCreate(data []byte) (evt *GuildCreate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildDelete(data []byte) (evt *GuildDelete, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildEmojisUpdate(data []byte) (evt *GuildEmojisUpdate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildIntegrationsUpdate(data []byte) (evt *GuildIntegrationsUpdate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildMemberAdd(data []byte) (evt *GuildMemberAdd, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildMemberRemove(data []byte) (evt *GuildMemberRemove, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildMemberUpdate(data []byte) (evt *GuildMemberUpdate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildMembersChunk(data []byte) (evt *GuildMembersChunk, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildRoleCreate(data []byte) (evt *GuildRoleCreate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildRoleDelete(data []byte) (evt *GuildRoleDelete, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildRoleUpdate(data []byte) (evt *GuildRoleUpdate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildScheduledEventCreate(data []byte) (evt *GuildScheduledEventCreate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildScheduledEventDelete(data []byte) (evt *GuildScheduledEventDelete, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildScheduledEventUpdate(data []byte) (evt *GuildScheduledEventUpdate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildScheduledEventUserAdd(data []byte) (evt *GuildScheduledEventUserAdd, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildScheduledEventUserRemove(data []byte) (evt *GuildScheduledEventUserRemove, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildStickersUpdate(data []byte) (evt *GuildStickersUpdate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) GuildUpdate(data []byte) (evt *GuildUpdate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) InteractionCreate(data []byte) (evt *InteractionCreate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) InviteCreate(data []byte) (evt *InviteCreate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) InviteDelete(data []byte) (evt *InviteDelete, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) MessageCreate(data []byte) (evt *MessageCreate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) MessageDelete(data []byte) (evt *MessageDelete, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) MessageDeleteBulk(data []byte) (evt *MessageDeleteBulk, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) MessageReactionAdd(data []byte) (evt *MessageReactionAdd, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) MessageReactionRemove(data []byte) (evt *MessageReactionRemove, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) MessageReactionRemoveAll(data []byte) (evt *MessageReactionRemoveAll, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) MessageReactionRemoveEmoji(data []byte) (evt *MessageReactionRemoveEmoji, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) MessageUpdate(data []byte) (evt *MessageUpdate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) PresenceUpdate(data []byte) (evt *PresenceUpdate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) Ready(data []byte) (evt *Ready, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) Resumed(data []byte) (evt *Resumed, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) ThreadCreate(data []byte) (evt *ThreadCreate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) ThreadDelete(data []byte) (evt *ThreadDelete, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) ThreadListSync(data []byte) (evt *ThreadListSync, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) ThreadMemberUpdate(data []byte) (evt *ThreadMemberUpdate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) ThreadMembersUpdate(data []byte) (evt *ThreadMembersUpdate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) ThreadUpdate(data []byte) (evt *ThreadUpdate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) TypingStart(data []byte) (evt *TypingStart, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) UserUpdate(data []byte) (evt *UserUpdate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) VoiceServerUpdate(data []byte) (evt *VoiceServerUpdate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) VoiceStateUpdate(data []byte) (evt *VoiceStateUpdate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}
func (c *CacheNop) WebhooksUpdate(data []byte) (evt *WebhooksUpdate, err error) {
	if err = json.Unmarshal(data, &evt); err != nil {
		return nil, err
	}
	c.Patch(evt)
	return evt, nil
}

// REST lookup
func (c *CacheNop) GetMessage(channelID, messageID Snowflake) (*Message, error) {
	return nil, ErrCacheMiss
}
func (c *CacheNop) GetChannel(id Snowflake) (*Channel, error) { return nil, ErrCacheMiss }
func (c *CacheNop) GetGuildEmoji(guildID, emojiID Snowflake) (*Emoji, error) {
	return nil, ErrCacheMiss
}
func (c *CacheNop) GetGuildEmojis(id Snowflake) ([]*Emoji, error)        { return nil, ErrCacheMiss }
func (c *CacheNop) GetGuild(id Snowflake) (*Guild, error)                { return nil, ErrCacheMiss }
func (c *CacheNop) GetGuildChannels(id Snowflake) ([]*Channel, error)    { return nil, ErrCacheMiss }
func (c *CacheNop) GetMember(guildID, userID Snowflake) (*Member, error) { return nil, ErrCacheMiss }
func (c *CacheNop) GetGuildRoles(guildID Snowflake) ([]*Role, error)     { return nil, ErrCacheMiss }
func (c *CacheNop) GetCurrentUser() (*User, error)                       { return nil, ErrCacheMiss }
func (c *CacheNop) GetUser(id Snowflake) (*User, error)                  { return nil, ErrCacheMiss }
func (c *CacheNop) GetCurrentUserGuilds(p *GetCurrentUserGuilds) ([]*Guild, error) {
	return nil, ErrCacheMiss
}
func (c *CacheNop) GetMessages(channel Snowflake, p *GetMessages) ([]*Message, error) {
	return nil, ErrCacheMiss
}
func (c *CacheNop) GetMembers(guildID Snowflake, p *GetMembers) ([]*Member, error) {
	return nil, ErrCacheMiss
}
