* 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: comprehensive permissionOverwrites refactor
* PermissionOverwrites.resolve should Promise.reject()
where a promise is the expected return value
* On second thought, async rewrite to automatically reject on throw
* Fix some docs
* Fix a bug
* fix 2 more bugs
* typings: Updated for latest commit
* typings: Add missing method in GuildChannel
* typings: Add missing `| null` in PermissionOverwriteOption type
* Suggested changes
* Docs: merge PermissionOverwriteOptions and OverwriteData
* fix user-member and replace eslint-disable with linebreaks
* consistency fix
* Fix: remove empty line between jsdocs and method
* Fix: allowed/denied to allow/deny to conform with recent master changes
* abstract BitField from Permissions
* reduce useless code, improve docs
* add a ReadOnly identifier to the return type of Bitfield#freeze()
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html#partial-readonly-record-and-pick
* fix the RangeError
* update docs, convert Speaking and ActivityFlags to bitfields
* fix some docs
* Fix Speaking BitField oops
* docs for oops
* more incorrect docs
* Fix incorrectly named property
* add new classes to index
* fix missing @extends docs
* default bitfield resolve to 0, and cleanup defaulting everywhere
Also removes GuildMember#missiongPermissions() alias that had incorrect behavior
* Breaking: Rename Overwrite allowed and denied to allow and deny
To be consistent with the api's naming
* fix setSpeaking usage to bitfields instead of booleans
* fix speaking bug in playChunk
* docs: Updated typings
* fix: BitFieldResolvable should use RecursiveArray
* bugfix/requested change
* typings: Cleanup (#2)
* typings: Fix BitField#{toArray,@@iterator} output type
* typings: correct PermissionOverwrites property names and nitpicks
* [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
* refactor: reduced duplication in role stores
* fix docs
* fix: typo
* most of requested changes
* rest of changes
* ACTUAL rest of changes
* docs
* doooocs
* reason
* docs/feat(WebsocketOptions): Parse ws options presence
Allow the `presence` property in `WebsocketOptions` to be used the same way
as `ClientUser#setPresence`.
* Move presence options to top level
* Prepare to work on moving all role functions to a Store
And yes, this is *another* patch branch cause I messed up my master branch to hell
* Move all emoji role related functions to its own store
Tested everything and it works! (With a reload of the client)
Also had to change a value in DataStore#holds
holds.name for GuildEmojis would return the emoji name instead of the class name
* New Line
* Thanks JS for circular dependency!
Because we can't have nice things...
* Do space's request
* Fix equals
* Fix space's point.
Raw API data has the role property as an array of IDs
* Ignore this I need a patch branch for Git
* Move all member role related stuff to a new DataStore
GuildMemberRoleStore is a new store that holds all member role related stuffs
Because its consistent!
* Minorest doc fix ever
To whoever did this object, they forgot a `{`
* Fix the spacing in the docs
* Resue the stores resolve rather than copy paste
Cause I'm dum and it overwrite resolve to the guild role stores resolve soo
* Fix some requests
- Removed the bs private functions
- Set the roles in the constructor
But, I need feedback. There is no way, that I saw, to make a member have roles whenever GuildMmber#_patch is called,
due to the roles being null on the guild. So the only way might be the for loop and getter.
* Fix an issue that I caused in #add
I was testing some other things, and changed that to test. Forgot to change it back
* Actually make the store generate just once when the member is created by first initializing the roles in the guild
Also replaces GuildMember#_roles with GuildMemberRoleStore#_roles
Tested all functions to make sure the expected result happens.
* I missed this from moving remove from GuildMember to GuildMemberRoleStore
* Fix RoleStore#create docs
For real this time
* Do all the requested changes
- Rename all `somethingRole` to `something` (hoistRole => hoist)
- Refactor add and remove to be cleaner and re-use set
* Fix a bug where the store would loose some roles due to null roles that can throw an error in the for loop after they've been deleted
* Remove the `role.id || role` part of the add and remove functions as Appel suggested
* Replace roles.resolve with roles.resolveID for GuildMemberRoleStore#remove
* Don't use Array.isArray in checks
Use instanceof instead
* Woops, I forgot to change this
Renamed colorRole to color
* The docs have dots, so we place the dots back
* make EmojiStore not Private anymore.
because why have something private if there is priority functionality on that class? also that causes that the docs wont show it directly
* make GuildChannelStore not private anymore
because why have something private if there is priority functionality on that class? also that causes that the docs wont show it directly
* make RoleStore not private anymore
because why have something private if there is priority functionality on that class? also that causes that the docs wont show it directly
* make ReactionStore not private anymore
because why have something private if there is priority functionality on that class? also that causes that the docs wont show it directly
* make all non private to stay consistent
* fix merge conflicts because of other PRs.
* Permissions#resolve fix
* Travis failed because >120 chars per line
* better fix
Permissions#resolve reverted
removed destructuring in GuildChannelStore and RoleStore