* Initial commit: add 5 initial managers
- Base manager
- GuildChannelManager
- MessageManager
- PresenceManager
- Reaction Manager
- Added LimitedCollection
* Add GuildEmojiManager, various fixes
* Modify some managers and add guildmembermanager
* Initial integration
* Delete old stores
* Integration part two, removed LRUCollection
- Most of the integration has been finished
- TODO typings
- Removed LRUCollection, needless sweeping
* Typings + stuff i somehow missed in ChannelManager
* LimitedCollection typings/ final changes
* Various jsdoc and syntactical fixes, Removed Util.mixin()
* tslint fix
* Grammatical and logical changes
* Delete temporary file placed by mistake
* Grammatical changes
* Add missing type
* Update jsdoc examples
* fix: ChannelManager#remove should call cache#delete not cache#remove
* fix recursive require
* Fix missed cache in util
* fix: more missed cache
* Remove accidental _fetchMany change from #3645
* fix: use .cache.delete() over .remove()
* fix: missing cache in ReactionCollector
* fix: missed cache in client
* fix: members is a collection not a manager
Co-Authored-By: Sugden <28943913+NotSugden@users.noreply.github.com>
* fix: various docs and cache fixes
* fix: missed cache
* fix: missing _roles
* Final testing and debugging
* LimitedCollection: return the Collection instead of undefined on .set
* Add cache to BaseManager in typings
* Commit fixes i forgot to stage yesterday
* Update invite events
* Account for new commit
* fix: MessageReactionRemoveAll should call .cache.clear()
* fix: add .cache at various places, correct return type
* docs: remove mentions of 'store'
* Add extra documented properties to typings
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
* Add support for MessageReaction#remove and MESSAGE_REACTION_REMOVE_EMOJI
* Remove reaction from cache
Co-Authored-By: matthewfripp <50251454+matthewfripp@users.noreply.github.com>
* fix: message may be partial
* Clarify what the event entails
* Document client in MessageReaction
Co-Authored-By: SpaceEEC <spaceeec@yahoo.com>
* await the REST call
* Add MessageReaction#remove to typings
Co-authored-by: matthewfripp <50251454+matthewfripp@users.noreply.github.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
* Add support for new Invite events
* Merge typings for events
Co-Authored-By: Sugden <leoaustin675@gmail.com>
* Add warning about requiring permissions
* Null check channel and guild
* fix: .guilds not .channels
* src: Implement store and news channels!
* src: Remove code dupe
* src: Add missing guild properties
* docs: Add a small notice that the channel type may also change
* src: Remove re-creation of the MessageStore
* lint: Unused Import
* src: Requested changes for StoreChannels
* typings: Fix typings
* src: Moar guild updates
* src: Set maximumPresence to the data prop, the already existent one, or default to 5000
* typings: afkChannel is a VC
I keep confusing them, ffs
Co-Authored-By: vladfrangu <kingdgrizzle@gmail.com>
* docs: Document that maximumMembers and maximumPresences may be inaccurate before fetching
* src Appels requested changes
* Remove GroupDMChannels
they sparked no joy
* Start partials for message deletion
* MessageUpdate partials
* Add partials as an opt-in client option
* Add fetch() to Message
* Message.author should never be undefined
* Fix channels being the wrong type
* Allow fetching channels
* Refactor and add reaction add partials
* Reaction remove partials
* Check for emoji first
* fix message fetching
janky
* User partials in audit logs
* refactor overwrite code
* guild member partials
* partials as a whitelist
* document GuildMember#fetch
* fix: check whether a structure is a partial, not whether cache is true
* typings: Updated for latest commit (#3075)
* partials: fix messageUpdate behaviour (now "old" message can be partial)
* partials: add warnings and docs
* partials: add partials to index.yml
* partials: tighten "partial" definitions
* partials: fix embed-only messages counting as partials
* internal sharding
* ready event
* the square deal
* the new deal
* the second new deal
* add actual documentation
* the new freedom
* the great society
* federal intervention
* some of requested changes
* i ran out of things to call these
* destroy this
* fix: Client#uptime went missing
* fix(Client): destroy the client on login failure
This may happen duo invalid sharding config / invalid token / user requested destroy
* fix(Client): reject login promise when the client is destroyed before ready
* fix(WebSocketManager): remove redundancy in destroy method (#2491)
* typo(ErrorMessages): duo -> duo to
* typo(ErrorMessages): duo -> due
* fix: docs and options
* docs(WebSocketManager): WebSockethard -> WebSocketShard (#2502)
* fix(ClientUser): lazily load to account for extended user structure (#2501)
* docs(WebSocketShard): document class to make it visible in documentation (#2504)
* fix: WebSocketShard#reconnect
* fix: presenceUpdate & userUpdate
* presenceUpdate wasn't really being handled at all
* userUpdate handled incorrectly because as of v7 in the Discord API, it comes inside presenceUpdate
* re-add raw event
* member is now part of message create payload
* feat: Add functionality to support multiple servers with different shards (#2395)
* Added functionallity to spawn multiple sharding managers due to adding start and end shards
* Small fixes and limiting shard amount to max recommended
* Forgot a check in spawn()
* Fixed indentation
* Removed optiosn object documentation for totalShards
* More fixes and a check that the startShard + amount doesnt go over the recommended shard amount
* fix getting max recommended
* Removed async from constructor (my fault)
* Changed start and end shard to a shardList or "auto" + fixed some brainfarts with isNaN
* Changed the loop and totalShard count calculation
* shards are actually 0 based
* Fixed a problem with the gateway and handled some range errors and type errors
* Changed Number.isNan to isNaN and changed a few Integer checks to use Number.isInteger
* Added check if shardList contains smth greater than totalShards; made spawn use totalShards again; shardList will be ignored and rebuild if totalShards is 'auto'; fixed docs
* ShardingManager#spawn now uses a for..of loop; fixed the if statement inside the new for..of loop to still work as intended; made the totalShards be set to a new amount if smth manual is put into ShardingManager#spawn just like before; Fixed some spelling
* internal sharding
* ready event
* the square deal
* the new deal
* the second new deal
* add actual documentation
* the new freedom
* the great society
* federal intervention
* some of requested changes
* i ran out of things to call these
* destroy this
* fix: Client#uptime went missing
* fix(Client): destroy the client on login failure
This may happen duo invalid sharding config / invalid token / user requested destroy
* fix(Client): reject login promise when the client is destroyed before ready
* fix(WebSocketManager): remove redundancy in destroy method (#2491)
* typo(ErrorMessages): duo -> duo to
* typo(ErrorMessages): duo -> due
* fix: docs and options
* docs(WebSocketManager): WebSockethard -> WebSocketShard (#2502)
* fix(ClientUser): lazily load to account for extended user structure (#2501)
* docs(WebSocketShard): document class to make it visible in documentation (#2504)
* fix: WebSocketShard#reconnect
* fix: presenceUpdate & userUpdate
* presenceUpdate wasn't really being handled at all
* userUpdate handled incorrectly because as of v7 in the Discord API, it comes inside presenceUpdate
* Internal Sharding adaptation
Adapted to internal sharding
Fixed a bug where non ready invalidated sessions wouldnt respawn
* Fixed shardCount not retrieving
* Fixing style
removed unnecessary parenthesis
* Fixing and rebasing
lets hope i didnt dun hecklered it
* Fixing my own retardation
* Thanks git rebase
* fix: assigning member in message create payload
* fix: resumes
* fix: IS wont give up reconnecting now
* docs: add missing docs mostly
* fix: found lost methods
* fix: WebSocketManager#broadcast check if shard exists
* fix: ShardClientUtil#id returning undefined
* feat: handle new session rate limits (#2796)
* feat: handle new session rate limits
* i have no idea what i was doing last night
* fix if statement weirdness
* fix: re-add presence parsing from ClientOptions (#2893)
* resolve conflicts
* typings: missing typings
* re-add missing linter rule
* fix: replacing ClientUser wrongly
* address unecessary performance waste
* docs: missing disconnect event
* fix(typings): Fix 2 issues with typings (#2909)
* (Typings) Update typings to reflect current ClientOptions
* fix(Typings) fixes a bug with Websockets and DOM Types
* fix travis
* feat: allow setting presence per shard
* add WebSocketManager#shardX events
* adjust typings, docs and performance issues
* readjust shard events, now provide shardId parameter instead
* fix: ready event should check shardCount, not actualShardCount
* fix: re-add replayed parameter of Client#resume
* fix(Sharding): fixes several things in Internal Sharding (#2914)
* fix(Sharding) fixes several things in Internal Sharding
* add default value for shards property
* better implement checking for shards array
* fix travis & some casing
* split shard count into 2 words
* update to latest Internal Sharding, fix requested changes
* make sure totalShardCount is a number
* fix comment
* fix small typo
* dynamically set totalShardCount if either shards or shardCount is provided
* consistency: rename shardID to shardId
* remove Client#shardIds
* fix: typo in GuildIntegrationsUpdate handler
* fix: incorrect packet data being passed in some events (#2919)
* fix: edgecase of ShardingManager and totalShardCount (#2918)
* fix: Client#userUpdate being passed wrong parameter
and fix a potential edgecase of returning null in ClientUser#edit from this event
* fix consistency and typings issues
* consistency: shardId instances renamed to shardID
* typings: fix typings regarding WebSocket
* style(.eslintrc): remove additional whitespace
* fix(Client): remove ondisconnect handler on timeout
* docs(BaseClient): fix typo of Immediate
* nitpick: typings, private fields and methods
* typo: improve grammar a bit
* fix: error assigning client in WebSocketManager
* typo: actually spell milliseconds properly
* [WIP] Remove user bots
* more backend userbot removal
* Add mfaEnabled back
* revert client presences store removal
* partially revert getAuth changes
* remove more no longer used children of ClientUserGuildSettings
* fix a bug with this pr and TextBasedChannel.applyToClass
* remove a syncGuilds reference
* more user bot data handling
* various guildSync cleanup
* bots can't call logout
Had the user/bot portions of the code mixed up. Though, does this need to be a promise anymore?
* make ClientManager#destroy() sync
It nolonger needs to be a promise, and nothing depended on it being a promise that I can tell.
* requested change
* Fix massive error
* no longer used as it's userbot only
This leads to GuildMemberStore#_fetchMany to always reject
because it expects more member than possible.
Also no longer call the GuildMemberRemove handler locally
to not decrement twice.
The UserGetAction was never used.
The GuildMemberGetAction was only once used.
Easily replaced with a shorter and more comprehensible line. (Also consistent with the rest of the library)