public DiscordClientState(DiscordClientBase client, MessageCache messageCache) { _client = client; _messageCache = messageCache ?? DummyMessageCache.Instance; _guilds = new LockedDictionary <Snowflake, CachedGuild>(); _users = new LockedDictionary <Snowflake, CachedSharedUser>(); _privateChannels = new LockedDictionary <Snowflake, CachedPrivateChannel>(); Guilds = new ReadOnlyDictionary <Snowflake, CachedGuild>(_guilds); Users = new ReadOnlyUpcastingDictionary <Snowflake, CachedSharedUser, CachedUser>(_users); PrivateChannels = new ReadOnlyDictionary <Snowflake, CachedPrivateChannel>(_privateChannels); DmChannels = new ReadOnlyOfTypeDictionary <Snowflake, CachedPrivateChannel, CachedDmChannel>(_privateChannels); GroupChannels = new ReadOnlyOfTypeDictionary <Snowflake, CachedPrivateChannel, CachedGroupChannel>(_privateChannels); }
private DiscordClient(DiscordClientConfiguration configuration) { SetStatus(configuration.Status); SetActivity(configuration.Activity); MessageCacheSize = configuration.MessageCacheSize; _guildSubscriptions = configuration.GuildSubscriptions; Users = new ReadOnlyUpcastingDictionary <Snowflake, CachedSharedUser, CachedUser>(_users); PrivateChannels = new ReadOnlyDictionary <Snowflake, CachedPrivateChannel>(_privateChannels); DmChannels = new ReadOnlyOfTypeDictionary <Snowflake, CachedPrivateChannel, CachedDmChannel>(_privateChannels); GroupChannels = new ReadOnlyOfTypeDictionary <Snowflake, CachedPrivateChannel, CachedGroupChannel>(_privateChannels); Guilds = new ReadOnlyDictionary <Snowflake, CachedGuild>(_guilds); _ws = new WebSocketClient(); _ws.MessageReceived += WebSocketMessageReceivedAsync; _ws.Closed += WebSocketClosedAsync; }