Compare commits

...

1212 Commits

Author SHA1 Message Date
iCrawl
bf346e7fdf chore: release 2021-12-24 12:25:12 +01:00
iCrawl
391211040a chore: deps 2021-12-24 12:21:53 +01:00
Rodry
1626dded5b types(CategoryChannel): fix createChannel return type (#7138) 2021-12-24 11:58:50 +01:00
Rodry
e6f41b578a fix(BaseMessageComponent): don't create new class instances (#7140) 2021-12-24 11:58:37 +01:00
Shubham Parihar
1316fd4c6a feat: add support for GuildScheduledEvent (#6493)
Co-authored-by: Rodry <38259440+ImRodry@users.noreply.github.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>
Co-authored-by: GoldenAngel <50855202+GoldenAngel2@users.noreply.github.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-12-23 13:39:09 +01:00
Jiralite
aa7c1b2081 feat(GuildMember): Add timeouts (#7104)
Co-authored-by: Rodry <38259440+ImRodry@users.noreply.github.com>
Co-authored-by: Tiemen <ThaTiemsz@users.noreply.github.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-12-22 17:54:44 +01:00
Jiralite
2ed02f7fc7 refactor(UserManager): Move methods to the manager (#7087)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-12-22 14:25:52 +01:00
Suneet Tipirneni
a0a5b0e4fa types(CategoryChannel): createChannel should default to a text channel (#7132) 2021-12-22 14:00:07 +01:00
RaZe
b763dabaa9 fix: Make the followUp function error more clear (#7129)
Co-authored-by: D Trombett <maxtromb.dt@gmail.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-12-22 11:13:34 +01:00
Antonio Román
7b65a04cb1 types: make channel types a lot stricter (#7120) 2021-12-22 11:13:01 +01:00
Jiralite
6bb03f2c34 fix(StickerPack): Nullify bannerId (#7119) 2021-12-21 09:16:30 +01:00
Suneet Tipirneni
645b3f84f4 fix: webhook typeguards should use string comparisons (#7127) 2021-12-21 09:16:11 +01:00
Suneet Tipirneni
77489b90fc types: forward cache types to collector filters (#7126) 2021-12-21 09:16:02 +01:00
muchnameless
b9b60a37b3 feat: export Sweepers (#7117) 2021-12-16 10:06:37 +01:00
Jiralite
55960cc778 feat: Add API error code 50109 (#7112) 2021-12-16 10:04:03 +01:00
Jiralite
8efc5c7b8d chore(GuildMemberManager): Update nick path (#7114) 2021-12-15 20:43:12 +01:00
ckohen
d1ef2f5e8b feat(Client): add global sweepers (#6825)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: Rodry <38259440+ImRodry@users.noreply.github.com>
Co-authored-by: Almeida <almeidx@pm.me>
2021-12-15 13:39:27 +01:00
Jiralite
bc6a6c539f types: Fix possibly null message properties (#7111) 2021-12-15 13:39:05 +01:00
Antonio Román
a0fe0acbf1 fix(Message): remove usage of .deleted (#7109) 2021-12-14 21:10:14 +01:00
Antonio Román
d43f68488e docs: deprecate .deleted getters (#7107) 2021-12-14 19:34:27 +01:00
Jiralite
1e00fc2001 refactor(RoleManager): Move some methods over from Role (#7096) 2021-12-14 19:04:07 +01:00
Suneet Tipirneni
49f9a18020 types: use mapped enums instead of overloads (#7088) 2021-12-14 19:03:39 +01:00
Jiralite
9cf44d1c0e fix(GuildAuditLog): Remove Promises in constructor (#7089) 2021-12-14 19:03:21 +01:00
Jiralite
2ce244b502 types(MessageComponentInteraction): Ensure component is not null (#7099) 2021-12-12 22:06:24 +01:00
Jan
717e0e963f refactor(Guild): remove duplicate methods (#7100) 2021-12-12 22:06:11 +01:00
Jiralite
ee91f5a19c docs(Sticker): Fix typo (#7085) 2021-12-10 10:09:45 +01:00
Jiralite
5a5c045534 types(GuildAuditLog): Strengthen types (#7090) 2021-12-10 10:07:57 +01:00
Antonio Román
de61fe4854 fix(ShardingManager): fix respawnAll not passing delay correctly (#7084) 2021-12-10 10:07:35 +01:00
Jiralite
6e57b65e99 docs(Constants): Document missing errors (#7086) 2021-12-08 23:50:04 +01:00
Antonio Román
25b8491235 refactor(Util): replace Util.delayFor with tp.setTimeout (#7082) 2021-12-08 21:31:01 +01:00
Jiralite
23513d1917 docs(Constants): Adjust GUILD_STORE warning placement (#7083) 2021-12-08 21:30:40 +01:00
Rodry
fdba146f9b docs(StoreChannel): add deprecation warnings (#7080)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-12-08 18:51:07 +01:00
iCrawl
4515bb1ab2 chore: deps 2021-12-08 10:53:37 +01:00
Suneet Tipirneni
1230bee9bc types(Message): guild should be non-null when message is in guild (#6933) 2021-12-08 10:49:17 +01:00
Antonio Román
b0937502d3 refactor: make Structure#deleted a getter to a WeakSet (#7074) 2021-12-08 10:47:54 +01:00
Shubham Parihar
f410536c51 feat: add API error code 20029 (#7078) 2021-12-08 10:40:49 +01:00
SethCohen
6f58e8122d docs(GuildStickerManager): fix create() example (#7060) 2021-12-07 20:15:24 +01:00
Antonio Román
5ec542d61f fix(StoreChannel): mark as deprecated (#7072) 2021-12-07 20:15:04 +01:00
Rodry
7f980e38b6 feat(ApplicationCommand): add setX methods for easier editing (#7063)
Co-authored-by: awned <65061212+ceilingfans@users.noreply.github.com>
2021-12-07 20:14:49 +01:00
Antonio Román
b5cd2884b6 fix(InteractionCollector): handle thread (and parent) deletion (#7070) 2021-12-07 11:21:26 +01:00
Jiralite
f028aea333 feat: Add API error code 50055 (#7068) 2021-12-07 11:19:45 +01:00
Antonio Román
3846f0d97c fix(ReactionCollector): check for channel.threads (#7069) 2021-12-07 11:19:36 +01:00
Elliot
b6b4570482 types: improve audit logs' typings (#6647)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: Noel <buechler.noel@outlook.com>
Co-authored-by: Suneet Tipirneni <77477100+suneettipirneni@users.noreply.github.com>
2021-12-06 08:57:12 +01:00
Antonio Román
8b200c0fee feat(SnowflakeUtil): add timestampFrom (#7058) 2021-12-06 08:56:29 +01:00
GodderE2D
1c93faa3ab chore: format .github/tsc.json (#7062) 2021-12-06 08:55:16 +01:00
Jiralite
01f8d1bed5 types(Interaction): Narrow memberPermissions (#7054) 2021-12-02 14:29:54 +01:00
That_Guy977
5fcda73d9f fix(GuildChannel): default to this.rawPosition in clone() (#7057) 2021-12-02 14:29:21 +01:00
Rodry
552d89fd4e feat(Guild): add premiumProgressbarEnabled (#6887)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-12-01 12:40:49 +01:00
Rodry
b183a8eece docs(Invite): add info blocks for missing props (#7014) 2021-12-01 12:33:28 +01:00
Suneet Tipirneni
da86bd4fa3 fix: Interaction channel type should be GuildTextBasedChannels when in guild (#6998) 2021-12-01 12:33:11 +01:00
That_Guy977
c07207f219 fix(Util): fix sorting for GuildChannels (#7002) 2021-12-01 12:32:13 +01:00
GrapeColor
4fe063f0d0 feat: add UserContextMenuInteraction and MessageContextMenuInteraction (#7003)
Co-authored-by: Rodry <38259440+ImRodry@users.noreply.github.com>
Co-authored-by: Suneet Tipirneni <77477100+suneettipirneni@users.noreply.github.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: GrapeColor <grapecolor@users.noreply.github.com>
2021-12-01 12:31:37 +01:00
Suneet Tipirneni
a39d8c4d9d Revert "types(ApplicationCommandManager): Deprecate old *Data type …usages and allow camel cased dapi types to be used (#7052) 2021-12-01 12:28:22 +01:00
Jiralite
85e6812ce2 docs(MessageReference): Fix static link (#7041) 2021-12-01 12:27:24 +01:00
Suneet Tipirneni
e305156769 chore: bump deps (#7048) 2021-11-29 19:32:26 +01:00
Antonio Román
374f970efe chore: add myself as contributor in package.json (#7037) 2021-11-29 11:20:52 +01:00
Antonio Román
e59fac3fe3 refactor(SnowflakeUtil): clean up utils and improve perf (#7036) 2021-11-29 11:20:18 +01:00
Antonio Román
fd63139b41 fix(MessageManager): do not use client.emojis (#7039) 2021-11-29 11:19:32 +01:00
Antonio Román
0193efae71 fix(ActionsManager): revert to manual requires (#7034) 2021-11-29 11:19:21 +01:00
Antonio Román
fabd34381c fix(MessagePayload): prevent spread of undefined (#7029) 2021-11-29 11:18:41 +01:00
Suneet Tipirneni
2c91c488e8 types(ApplicationCommandManager): Deprecate old *Data type usages and allow camel cased dapi types to be used (#6959) 2021-11-29 11:17:57 +01:00
Jiralite
54f937d82c fix(MessageManager): Allow a string for edit() (#7033) 2021-11-25 12:42:11 +01:00
Suneet Tipirneni
9f3bf2927c CI: Use tsd for Testing Types (#6983)
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-11-23 18:00:58 +01:00
Jiralite
2a0dedf3e9 chore: Emit deprecation messages (#6994) 2021-11-23 10:29:45 +01:00
SpaceEEC
7efeff461f fix: avoid sending bot auth on token endpoints (#7022) 2021-11-23 10:28:09 +01:00
Rodry
099536ee60 types(WebhookMessageOptions): disallow stickers (#7012) 2021-11-23 10:27:03 +01:00
dai
77aff08345 feat(Shard): add eval context (#7011)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-11-23 10:26:46 +01:00
Suneet Tipirneni
c1f2fe29ef types: remove unneeded collector types (#7008) 2021-11-23 10:26:18 +01:00
GodderE2D
a1a8ca4814 docs(Constants): fix typo "announcement" (#7016) 2021-11-23 10:24:14 +01:00
Suneet Tipirneni
48555cb8eb types: make event emitters use mapped event types (#7019) 2021-11-23 10:23:14 +01:00
Suneet Tipirneni
802a5ac228 chore: collector type cleanup (#6991) 2021-11-18 07:58:17 +01:00
Suneet Tipirneni
db09d79423 feat(ThreadChannel): add ThreadChannel#viewable (#6975) 2021-11-18 07:58:05 +01:00
Suneet Tipirneni
0c5c7210e7 chore: bump typescript to 4.5 (#6999) 2021-11-18 07:55:19 +01:00
Suneet Tipirneni
493e4f9350 feat(ThreadManager): add slowmode option on thread creation (#6989)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-11-17 22:47:50 +01:00
SpaceEEC
c0ba2d46d0 fix(Sharding): properly handle errors in fetchClientValues (#6990) 2021-11-16 18:40:45 +01:00
SpaceEEC
fdb09cbe03 fix(VoiceState): set streaming to false when the stream ended (#6992) 2021-11-16 18:40:19 +01:00
Suneet Tipirneni
ecc61f3c74 types(ApplicationSubcommandData): allow autocomplete to be true (#6981) 2021-11-16 18:32:25 +01:00
Hackerboi 69
06cd16fe97 types: fix interaction typeguards (#6976) 2021-11-16 18:32:16 +01:00
Jiralite
73854ee852 refactor(MessageEmbed): Utilise an object approach for .setAuthor() (#6966)
Co-authored-by: Almeida <almeidx@pm.me>
2021-11-16 18:31:08 +01:00
Jake Ward
5e0a7d51fc feat(MessageAttachment): description (alt text) support (#6871)
Co-authored-by: D Trombett <maxtromb.dt@gmail.com>
2021-11-11 20:29:17 +01:00
Suneet Tipirneni
7630158f59 types: Strengthen autocomplete option types (#6950)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-11-11 19:38:34 +01:00
Suneet Tipirneni
9f240ea0d1 types: fix cache type fallback types (#6961) 2021-11-11 19:37:53 +01:00
GrapeColor
b001e194f1 fix(MessageReaction): Cache myself when MessageReaction#me is true. (#6956)
Co-authored-by: GrapeColor <grapecolor@users.noreply.github.com>
2021-11-11 19:21:45 +01:00
Vlad Frangu
8e881d2b96 types: unify ApplicationCommandManager#create overloads (#6970) 2021-11-11 19:08:28 +01:00
ckohen
c30a818ca9 feat(ApplicationCommand): add support for min and max values (#6855)
Co-authored-by: Noel <buechler.noel@outlook.com>
Co-authored-by: Suneet Tipirneni <77477100+suneettipirneni@users.noreply.github.com>
2021-11-11 19:07:21 +01:00
GodderE2D
3c857a6363 docs(README): add installation instruction on @discordjs/voice (#6964) 2021-11-11 03:31:09 +01:00
iCrawl
b256ae1fa6 chore: open collective funding 2021-11-09 18:51:43 +01:00
Almeida
49e3ce2133 feat(SystemChannelFlags): add new flag (#6870)
Co-authored-by: Shubham Parihar <shubhamparihar391@gmail.com>
2021-11-06 01:00:18 +01:00
ckohen
c297829d54 types(Events): rest events can be emitted on BaseClient (#6936) 2021-11-06 00:58:54 +01:00
すずねーう
dc6454104f docs(Guild): fix setOwner() example (#6929)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-11-05 10:32:49 +01:00
Jiralite
28688e27d5 refactor: Deprecate application command events (#6937) 2021-11-02 14:43:30 +01:00
Tiemen
f43140abac feature(UserFlags): add BOT_HTTP_INTERACTIONS (#6733) 2021-11-01 18:50:42 +01:00
Almeida
47d74ebf81 feat: add new activity flags (#6699) 2021-11-01 18:50:36 +01:00
Advaith
e94073a6ab feat(ApplicationFlags): add message content intent flags (#6888) 2021-11-01 18:50:23 +01:00
iCrawl
076524a064 chore: dev version 2021-11-01 18:48:21 +01:00
iCrawl
5ec04e077b chore(Release): version 13.3.1 2021-11-01 18:46:16 +01:00
SpaceEEC
9bd3689fb1 fix: assert channel types in message actions (#6919) 2021-11-01 18:40:19 +01:00
Rodry
95d2a4d35e fix(MessageEmbed): only compare image urls in #equals (#6926) 2021-11-01 18:36:41 +01:00
Superchupu
bb245b7b35 docs(README): use correct capitalization of npm (#6930) 2021-11-01 18:36:26 +01:00
Rodry
204aee799a types: improve toJSON methods for message components & embeds (#6925) 2021-11-01 15:09:00 +01:00
Rodry
2d9ffb8c5b fix: correctly access guild IDs inside managers (#6927) 2021-11-01 15:07:55 +01:00
Indian Ocean Roleplay
b6484ac117 ci: validate typings (#6913) 2021-11-01 15:07:27 +01:00
Indian Ocean Roleplay
761a901885 chore: next dev version (#6920) 2021-10-29 22:11:00 +02:00
iCrawl
0238da45c5 chore(Release): publish 2021-10-29 20:10:45 +02:00
iCrawl
27fb5e5c6b chore: repo changes 2021-10-29 19:53:54 +02:00
Indian Ocean Roleplay
673c03f7cf types(fix): BaseCommandInteractionOptionResolver and CommandInteraction (#6910) 2021-10-29 19:38:21 +02:00
Jiralite
d6685b1c50 fix: Handle message bulk delete and thread delete in collectors (#6902) 2021-10-29 14:58:31 +02:00
Suneet Tipirneni
14716df6b6 feat(ThreadMemberManager): allow individual members to be fetched (#6889)
Co-authored-by: ckohen <chaikohen@gmail.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-10-29 14:57:53 +02:00
Jiralite
aa4d05504f docs(Constants): Document missing autocomplete interaction constants (#6916) 2021-10-29 14:57:35 +02:00
Almeida
7be9170659 types(Constants): remove deleted properties from Package (#6908) 2021-10-29 14:57:12 +02:00
Jiralite
5d987ee56e docs(InteractionCollector): Add info block about being prone to always running (#6906) 2021-10-29 01:39:24 +02:00
Indian Ocean Roleplay
49e686a721 ci: release dev version only if required (#6879) 2021-10-29 01:24:04 +02:00
Micah Benac
ddf759c811 feat: add support for autocomplete interactions (#6672)
Co-authored-by: Suneet Tipirneni <suneettipirneni@icloud.com>
2021-10-29 00:47:50 +02:00
SpaceEEC
14d9a9901b types(Shard): eval returns a promise resolving with T instead of T[] (#6901) 2021-10-29 00:47:18 +02:00
Vlad Frangu
ee93a27e15 types(ApplicationCommandManager): add missing overload for fetch (#6904) 2021-10-28 16:19:19 +02:00
Suneet Tipirneni
91a432e49d types(TextBasedChannel): text channel interaction collectors should have message option (#6903) 2021-10-28 16:19:08 +02:00
iCrawl
c278674e8a chore: change testing to tests for workflow 2021-10-28 02:02:53 +02:00
iCrawl
aa532946c9 chore: repo cleanup 2021-10-28 02:01:19 +02:00
GodderE2D
bdd841a1e7 docs(GuildStickerManager): fix create() example (#6900) 2021-10-28 01:21:52 +02:00
Rodry
fae4abf2f7 feat(MessageEmbed): add #equals (#6885) 2021-10-27 12:08:20 +02:00
Suneet Tipirneni
b2836daafe typings: cache types cleanup (#6867)
Co-authored-by: Almeida <almeidx@pm.me>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-10-27 12:08:01 +02:00
Advaith
f169c8fe46 fix(ApplicationCommandManager): update guild command cache on c/u/d (#6841) 2021-10-27 12:07:50 +02:00
Rodry
740d3f006e feat(StartThreadOptions): default autoArchiveDuration to channel's defaultAutoArchiveDuration (#6278) 2021-10-27 12:07:28 +02:00
GodderE2D
88060395d1 docs(InteractionResponses): move embed var position in example (#6896) 2021-10-27 01:08:20 +02:00
Suneet Tipirneni
acbfc5c866 chore: bump discord-api-types & builders (#6894) 2021-10-26 21:29:23 +02:00
Rodry
e12a5b6a0c refactor: move Guild setPositions methods to managers (#6875)
Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>
2021-10-26 21:28:56 +02:00
Lin
b27888455f refactor: remove gen-esm-wrapper dependency (#6884) 2021-10-26 18:12:16 +02:00
GodderE2D
76856b967a docs(Application): rename Oauth2Application to Application (#6891) 2021-10-26 18:04:10 +02:00
StefansArya
ceaf738d2e fix(TextBasedChannel): return the cached message instead of clone it (#6877) 2021-10-25 00:35:59 +02:00
Jiralite
b6c9fd691f docs(Util): Deprecate .removeMentions() (#6866) 2021-10-25 00:35:13 +02:00
chrdek
7621e9da4c fix(MessageComponentInteraction): component getter is not null anymore (#6835) 2021-10-25 00:34:53 +02:00
Almeida
672baa49e6 refactor: fix typos (#6852) 2021-10-24 21:34:37 +02:00
Suneet Tipirneni
c3948f8253 types: allow message cached props to be narrowed (#6838)
Co-authored-by: Almeida <almeidx@pm.me>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-10-24 21:31:42 +02:00
Jiralite
579569ae18 refactor(GuildManager): Remove redundant check (#6859) 2021-10-19 16:11:50 +02:00
Jiralite
399e720b92 feat: Add rtcRegion to GuildManager#create() (#6858) 2021-10-19 16:11:29 +02:00
Suneet Tipirneni
e0afcadda4 feat: add typeguards to webhooks (#6850) 2021-10-19 16:11:21 +02:00
Suneet Tipirneni
4dff279a6f fix: PartialGuildMember#id is not null (#6840) 2021-10-17 16:19:42 +02:00
Skick
487d32d303 feat(GuildChannelManager): add 'rtcRegion' option to 'create' method (#6849)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-10-17 16:18:33 +02:00
ckohen
7513b4528c feat(Permissions): add checkAdmin to permission overwrite checks (#6847) 2021-10-17 00:27:52 +02:00
Suneet Tipirneni
e8b69974dc types(CommandInteractionOptionResolver): allow narrowing of getMember() (#6831) 2021-10-17 00:19:49 +02:00
Jiralite
d27fddbf9a types(BaseMessageComponent): Remove third parameter of create() (#6833) 2021-10-17 00:19:36 +02:00
Jiralite
d193d04cea fix(Webhook): Resolve source guild only if cached (#6834) 2021-10-17 00:19:23 +02:00
ObscuritySRL
ef01b84fa8 fix(AllowedImageSizes): add new image sizes (#6844) 2021-10-17 00:18:17 +02:00
Jiralite
f7b7aac8b6 docs: Correct tags used for objects (#6846) 2021-10-17 00:17:33 +02:00
Jiralite
267a4b3f68 fix(MessageReaction): Prevent event double fire from uncached messages (#6818) 2021-10-17 00:16:05 +02:00
Jiralite
38cc89e5ae docs: Redirect to events correctly (#6845) 2021-10-16 00:18:13 +02:00
Jiralite
12ab5c8878 chore: Add missing intent to issue form (#6829) 2021-10-14 20:26:52 +02:00
Jiralite
c44ea50157 docs: Typos, consistency and grammar fixes (#6811) 2021-10-13 12:20:44 +02:00
Oscar Dominguez
046f44b807 ci(workflow): add cache to workflows using actions/setup-node (#6821) 2021-10-13 12:19:07 +02:00
Jiralite
4354c37762 docs(Message): Specify Snowflake in return type of awaitReactions() (#6822) 2021-10-13 12:18:00 +02:00
Suneet Tipirneni
b541d0a524 types: message component cached props narrowing (#6809) 2021-10-12 21:11:37 +02:00
Hackerboi 69
6898fa3b37 feat(Interaction): add isApplicationCommand check (#6801) 2021-10-12 21:11:32 +02:00
Jiralite
460df9eb4d refactor: Remove redundant user agent parsing (#6820) 2021-10-12 21:11:25 +02:00
Rodry
bd48e6df84 feat(CommandInteraction): add toString method (#6793) 2021-10-12 21:11:18 +02:00
Rodry
5566404850 types(ApplicationCommandOptionData): remove required on subcommands (#6790) 2021-10-12 21:11:11 +02:00
Alessandro Impellizzeri
29667c96e5 fix(Guild): guild.available is never set on new joins (#6769) 2021-10-12 21:10:59 +02:00
Jeroen Claassens
b47467755c fix(Types): export more types (#6808) 2021-10-12 19:38:12 +02:00
Jiralite
187581dd84 types(Integration): Add IntegrationType values (#6815) 2021-10-12 19:35:26 +02:00
Jiralite
b030130df1 docs: Replace FetchOwnerOptions type definition (#6814) 2021-10-12 19:35:16 +02:00
Jiralite
d57ec7ab68 docs: Remove dangling reference (#6810) 2021-10-11 13:57:00 +02:00
Brage
b1b9c83df0 docs(InteractionCollector): remove repeated "the" (#6802) 2021-10-11 13:54:16 +02:00
Shubham Parihar
bfb89de864 fix(GuildBanManager): send reason in the headers instead of json body (#6800) 2021-10-09 15:02:39 +02:00
ckohen
26f927b9fe feat(Client): add apiResponse and apiRequest events (#6739)
Co-authored-by: Shubham Parihar <shubhamparihar391@gmail.com>
Co-authored-by: Rodry <38259440+ImRodry@users.noreply.github.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: SpaceEEC <24881032+SpaceEEC@users.noreply.github.com>
2021-10-09 13:56:25 +02:00
Rodry
0d599a1a76 fix(User): don't generate the banner URL when not cached (#6783) 2021-10-08 12:36:14 +02:00
Bas950
e24209a8b1 refactor: remove unnecessary checks (#6777) 2021-10-08 12:35:24 +02:00
Nico Rausch
d399a28323 feat(ModuleImporter): implement import module compatible with bundlers (#6709) 2021-10-08 12:35:13 +02:00
Shubham Parihar
872e7a59b2 refactor(Role): move initialization of delete prop out of _patch (#6776) 2021-10-07 23:17:47 +02:00
MarkusRost
78124aed28 chore(GuildMemberRoleManager): Remove unnecessary !prev check (#6781)
Co-authored-by: Bas950 <bas.van.zanten007@gmail.com>
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-10-07 18:29:00 +02:00
ckohen
b1656bfb4f fix(GuildMember): more explicit partial check (#6760) 2021-10-07 18:28:32 +02:00
MarkusRost
03c4b60384 GuildMemberRoleManager: add role that sets the role icon/emoji (#6768)
Co-authored-by: Almeida <almeidx@pm.me>
2021-10-07 18:28:12 +02:00
Jiralite
45ebea3216 types(WelcomeChannelData): Allow store channels (#6778) 2021-10-07 18:24:53 +02:00
Suneet Tipirneni
a84e51b767 types: make embed author and footer props name and text required (#6779) 2021-10-07 18:24:48 +02:00
Shubham Parihar
e31c5ca1a8 fix(Role): check for presence of icon and unicode_emoji before patching (#6780) 2021-10-07 18:24:33 +02:00
J-Human
d32956c6b7 docs(MessagePayload): change the typo of "wether" to "whether" (#6771) 2021-10-06 08:40:25 +02:00
iCrawl
adc850aa67 chore: release 2021-10-05 16:17:53 +02:00
iCrawl
26340acad9 chore(Release): version 2021-10-05 16:09:40 +02:00
Souji
8bc1ece98e docs: fetchReply info + example (#6753) 2021-10-05 01:37:04 +02:00
Rodry
ba93e85d0d refactor(User): set accentColor and banner to undefined when not yet received (#6721)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2021-10-05 00:16:59 +02:00
ObscuritySRL
d0025beb7b fix(AllowedImageSizes): add new image sizes (#6754) 2021-10-05 00:10:54 +02:00
Demir
c5421af68e chore(package): change homepage (#6550) 2021-10-05 00:08:13 +02:00
Almeida
a194d9c37f refactor: use optional chaining (#6757) 2021-10-05 00:04:53 +02:00
Suneet Tipirneni
d873a19d34 types(Interaction): allow Interaction cached properties to be type narrowed (#6668)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Rodry <38259440+ImRodry@users.noreply.github.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-10-05 00:01:43 +02:00
Antonio Román
f88f4cca64 types: rename Awaited<T> to Awaitable<T> (#6756) 2021-10-04 14:11:42 +02:00
Rodry
00e1e2673b fix(User): compare flags in #equals (#6750) 2021-10-04 09:38:28 +02:00
Rodry
1db3e76054 docs(GuildMemberUpdateAction): event doesn't get emitted on user update (#6752) 2021-10-04 09:38:07 +02:00
Jiralite
7eec06145a fix(VoiceState): Patch streaming value (#6747) 2021-10-03 22:55:27 +02:00
Rodry
c3f4de4801 types(GuildBanManager): remove can return null (#6748) 2021-10-03 22:55:14 +02:00
Rodry
42acc6eef9 types: add ExcludeEnum utility for easier typings (#6746)
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
2021-10-03 22:54:43 +02:00
Jiralite
32b5c2e617 types(Webhook): More accurate type for sourceChannel (#6751) 2021-10-03 22:53:37 +02:00
Jiralite
abf158dc94 types(WebhooksUpdate): Allow NewsChannels (#6749)
Co-authored-by: Rodry <38259440+ImRodry@users.noreply.github.com>
2021-10-03 22:53:20 +02:00
Shubham Parihar
7129965423 feat: add support for role icons (#6633) 2021-10-03 18:55:29 +02:00
SpaceEEC
a8c21cd754 fix(Message): avoid overwriting properties in _patch (#6738) 2021-10-03 15:27:00 +02:00
Jiralite
6e5c768379 docs: Better links for .toJSON() of button and select menu (#6745)
Co-authored-by: Rodry <38259440+ImRodry@users.noreply.github.com>
2021-10-03 15:26:21 +02:00
SpaceEEC
d15dd5f07d fix(ReactionCollector): only call the filter function once (#6734) 2021-10-03 15:04:37 +02:00
SpaceEEC
905d100d4d fix(Shard): use provided timeout when respawning (#6735) 2021-10-03 15:04:23 +02:00
SpaceEEC
34b2ad0d8e docs: undocument private constructors (#6732) 2021-10-03 15:02:11 +02:00
Jiralite
a8e60105fb types: More accurate types instead of GuildChannelResolvable (#6744) 2021-10-03 15:01:38 +02:00
Almeida
9e421f6ccf fix(Role): toJSON() throwing due to permission bigints (#6724) 2021-10-03 15:01:24 +02:00
ObscuritySRL
28d96e344b feat(Interaction): add memberPermissions (#6741)
Co-authored-by: Rodry <38259440+ImRodry@users.noreply.github.com>
Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>
2021-10-03 15:01:07 +02:00
Rodry
3eacf7a587 feat(CategoryChannel): add createChannel shortcut method (#6614) 2021-10-03 15:00:41 +02:00
Almeida
e9daa31eaf perf: use logical assignments instead of if statements (#6693) 2021-10-03 14:59:57 +02:00
Rodry
9eb9591473 fix: don't patch set data with undefined (#6694) 2021-10-03 14:59:52 +02:00
Rodry
8b4456e0aa types(ChannelTypes): remove unknown from CHANNEL options (#6701) 2021-10-03 14:59:45 +02:00
Rodry
b76bb8a409 fix(Invite): #guild never resolving into a Guild (#6742)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-10-02 23:46:32 +02:00
Jiralite
107822d28d feat: Allow webhooks to fetch, edit and delete messages in threads (#6695)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-10-02 13:42:25 +02:00
Nyan Spaghetti
cdf65f74e1 fix(GuildManager): add missing types and converts (#6683)
Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>
2021-10-02 13:42:10 +02:00
muchnameless
a7cb314e07 types(TextBasedChannels): fix awaitMessageComponent return type (#6723) 2021-10-02 13:41:53 +02:00
Jiralite
3a978f347c types(Vanity): Make uses non-nullable (#6715) 2021-10-02 13:41:30 +02:00
Advaith
10478ad148 feat(Threads): update permissions and fix getters (#6466) 2021-10-02 13:41:05 +02:00
muchnameless
7c4d1dffb4 types(Role): Role#comparePositionTo accepts RoleResolvable (#6722) 2021-10-02 13:40:52 +02:00
Jiralite
2803db683d feat(PartialGroupDMChannel): Add recipients & fix name (#6713) 2021-10-02 13:40:40 +02:00
cherryblossom000
3f1100976f docs(Message): fix return type for reply (#6720) 2021-10-02 13:40:15 +02:00
Almeida
531b46c60d refactor: use the node: protocol (#6710) 2021-10-02 13:40:02 +02:00
Rodry
466e796a1d docs(CommandInteractionResolvedData): fix key type (#6729) 2021-10-02 13:38:59 +02:00
Almeida
8d80fec86d fix(Util): default animated to false when omitted on resolvePartialEmoji (#6725) 2021-10-02 13:38:37 +02:00
Rodry
fe9500538e types(Presence): fix ActivityOptions#type and Activity#id types (#6696) 2021-09-28 18:57:09 +02:00
ckohen
da3ae4854e types: fix missing channel type in subcommand options (#6706) 2021-09-28 18:55:39 +02:00
Rodry
dfd7b403a9 feat(GuildMember): add guild avatars (#5696)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Shubham Parihar <shubhamparihar391@gmail.com>
Co-authored-by: GoldenAngel <50855202+GoldenAngel2@users.noreply.github.com>
2021-09-28 18:53:37 +02:00
Shubham Parihar
7cba67620e docs(EmojiResolvable): update description of typedef to remove ambiguity (#6708) 2021-09-28 18:52:47 +02:00
Shubham Parihar
c5db0ff606 feat(MessageAttachment): add support for ephemeral property (#6652)
Co-authored-by: Rodry <38259440+ImRodry@users.noreply.github.com>
2021-09-28 18:52:03 +02:00
Rodry
60aa9ae478 fix(Message): throw error on missing channel (#6581)
Co-authored-by: D Trombett <73136330+DTrombett@users.noreply.github.com>
2021-09-28 18:51:42 +02:00
ckohen
3b14883e34 feat(ApplicationCommand): add support for channel_types (#6640)
Co-authored-by: Tiemen <ThaTiemsz@users.noreply.github.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2021-09-27 13:49:39 +02:00
Shubham Parihar
8426770865 fix(CachedManager): return updated data when cache is false (#6685) 2021-09-27 13:49:25 +02:00
Rodry
79b1b20562 chore(IssueForms): remove default titles (#6659)
Co-authored-by: Souji <timoqueezle@gmail.com>
2021-09-26 21:39:52 +02:00
Jiralite
60b8ba6b86 fix(GuildEmoji): Cache restricted roles and author data (#6675) 2021-09-26 21:38:58 +02:00
Rodry
d3da83368d fix(Constants): allow undefined size (#6686)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-09-26 21:38:11 +02:00
Jiralite
f8aa4bd470 fix(*RoleManager): Create set of role ids correctly (#6674)
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
2021-09-26 21:33:59 +02:00
Shubham Parihar
a06a87a7c4 feat(UserManager): allow #fetch to take UserResolvable (#6677) 2021-09-26 21:33:50 +02:00
Advaith
1ca8d2c8e8 types: add GuildEmojiManager to Caches (#6671) 2021-09-26 21:33:25 +02:00
Shubham Parihar
42fdcaa1da feat: add api error code 50101 (#6663) 2021-09-26 21:33:20 +02:00
Andreas Clausen
94ca0f599d typings(VoiceState): allow moving members to stage channels (#6684) 2021-09-26 21:33:11 +02:00
Megatank58
839974ca43 docs(ApplicationCommandPermissionsManager): fix example set method (#6658) 2021-09-23 14:04:49 +02:00
D Trombett
5070d23914 fix(Shard): eval promise never resolves (#6649) 2021-09-23 13:48:22 +02:00
Suneet Tipirneni
ecd637f7d6 feat: Add support for API command types in ApplicationCommandManager (#6621) 2021-09-23 13:47:17 +02:00
Advaith
66a90d3f89 feat(Permissions): add START_EMBEDDED_ACTIVITIES (#6622) 2021-09-23 13:47:09 +02:00
Rodry
caa3b60c30 feat(Integration): add missing props and fix docs/types (#6623)
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-09-23 13:47:01 +02:00
Rodry
29dd319b68 refactor(VoiceState): use manager edit method to remove error (#6631) 2021-09-23 13:46:55 +02:00
Rodry
124e177e91 refactor(Constants): better type error in cdn endpoints (#6637) 2021-09-23 13:46:40 +02:00
Apokalypt
034782641a types(Interaction): improve type guard for inGuild() (#6644) 2021-09-23 13:42:27 +02:00
Jiralite
b9a4899491 docs(Shard): Point to correct events (#6641) 2021-09-23 13:41:26 +02:00
tig
5d87398f9f fix(xxxable): follow more properly with discord behavior (#6551)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-09-23 13:41:18 +02:00
Shubham Parihar
603350645d fix: allow null to be passed in order to reset icon/avatar (#6646) 2021-09-23 13:40:51 +02:00
Rodry
92f6471e8e types(MessageOptions): allow APIEmbed (#6656) 2021-09-18 01:09:49 +02:00
tig
88e2622dde docs(VoiceChannel): deprecate editable (#6613) 2021-09-15 00:26:10 +02:00
Jiralite
75d85f7838 types(WelcomeChannel): Allow store channels (#6615) 2021-09-15 00:26:03 +02:00
Rodry
8add4b08f5 feat: default values for setX boolean methods (#6619) 2021-09-15 00:25:50 +02:00
Souji
0a71a4d18f chore: issue forms (#6611) 2021-09-15 00:25:19 +02:00
Shubham Parihar
183dbd7e53 feat: add api error code 30042 (#6635) 2021-09-15 00:24:16 +02:00
Rodry
256fb905fe types(MessageEmbed): allow APIEmbed type (#6629) 2021-09-15 00:19:49 +02:00
Jiralite
3c3522ae8a docs(PermissionOverwriteManager): Correct @returns of delete (#6632) 2021-09-15 00:19:04 +02:00
Suneet Tipirneni
be8912a421 feat: Give removed MessageReactions on messageReactionRemoveAll event (#6607)
Co-authored-by: D Trombett <maxtromb.dt@gmail.com>
Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2021-09-10 20:32:05 +02:00
Shubham Parihar
1b016a30c8 types(TextBasedChannelFields): add back createMessageCollector (#6616) 2021-09-10 20:31:29 +02:00
Rodry
3183b1166a fix(Message): pinnable returning false in non-DEFAULT messages (#6585) 2021-09-09 19:51:21 +02:00
Shubham Parihar
f866512e84 feat(ApplicationCommand): add version property (#6603)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-09-09 18:52:39 +02:00
Suneet Tipirneni
8cc3885739 typings: make channelId non-nullable on MessageComponentInteraction (#6600) 2021-09-08 14:42:05 +02:00
Suneet Tipirneni
c62823e43d typings: Message#createMessageComponentCollector use MessageComponentInteractionOptions<T> (#6596) 2021-09-08 14:36:15 +02:00
Jiralite
ea3695585d types(MessagePayload): Specify typings for files and resolveFile (#6608) 2021-09-08 14:34:53 +02:00
Jiralite
ea6a57e927 docs(MessagePayload): Correct return type of resolveFile() (#6605) 2021-09-08 14:34:26 +02:00
Hackerboi 69
f57791c5fe chore: remove jsdoc.json (#6587) 2021-09-05 15:40:41 +01:00
Bvdgames
8826e9ffbc fix(threadMembersUpdate): fixed typo (#6589) 2021-09-05 15:39:47 +01:00
Rodry
db73cf9255 docs(MessageButton): fix info tag (#6590) 2021-09-05 15:39:27 +01:00
Rodry
08edc0b1db fix(ThreadChannel): fetchStarterMessage bug (#6584) 2021-09-03 18:22:49 +01:00
Rodry
00bd92a451 refactor: ES2021 features (#6540)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: Voltrex <mohammadkeyvanzade94@gmail.com>
2021-09-03 12:58:01 +01:00
Advaith
d81590d566 feat(MessageTypes): add CONTEXT_MENU_COMMAND (23) (#6425) 2021-09-03 12:57:33 +01:00
Souji
06460565e4 chore: issue forms (#6583) 2021-09-03 12:53:05 +01:00
Suneet Tipirneni
08419561ed typings: Collector filter parameter inference (#6574) 2021-09-01 11:07:26 +01:00
Shubham Parihar
d16ada9708 feat: add api error code 160002 (#6566) 2021-08-31 11:38:27 +01:00
Rodry
cdb00053de typings(MessageReference): correctly add undefined type (#6563) 2021-08-31 11:38:12 +01:00
Jiralite
2c219cb982 types: @typedef for StageChannelResolvable (#6568) 2021-08-30 21:57:54 +01:00
ckohen
581921f8b7 feat(ApplicationCommand): add #equals (#6414)
Co-authored-by: Juruel Keanu Lorenzo <keanulorenzo32@gmail.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Rodry <38259440+ImRodry@users.noreply.github.com>
2021-08-30 11:56:47 +01:00
Suneet Tipirneni
f49f70a4eb fix: await message component collectors should return component interactions not collectors (#6562) 2021-08-30 11:55:39 +01:00
Souji
54b33dd7df chore: issue forms (#6560)
* workflow: issue forms

* chore: make intents and partials dropdowns

* chore: add tip about multi-select

* chore: use typescript for cb
2021-08-30 11:53:55 +01:00
GodderE2D
33f6f8211f docs(WidgetMember): fix typo for deaf (#6564) 2021-08-30 08:10:59 +01:00
Jiralite
29d5fd163c docs(Constants): Fix interaction type link (#6558) 2021-08-29 23:45:59 +01:00
Jiralite
34024f5ef6 docs: Fix JSDoc for ClientUser#edit (#6554) 2021-08-29 20:55:39 +01:00
DraftMan
9301c9b420 fix(GuildChannel): Fix manageable method for voice-channels (#6447)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Kyra <kyranet@users.noreply.github.com>
Co-authored-by: ckohen <chaikohen@gmail.com>
2021-08-29 16:26:05 +01:00
Suneet Tipirneni
03d5549461 typings: Allow message component interaction collectors to infer collected interaction types (#6476) 2021-08-29 16:25:58 +01:00
Jiralite
774e9609d2 typings(CommandInteractionOptionResolver): Document & type thread channels (#6521) 2021-08-29 13:23:20 +01:00
ckohen
a6932546e2 feat(Threads): add support for invitable in private threads (#6501)
Co-authored-by: Rodry <38259440+ImRodry@users.noreply.github.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-08-29 13:23:01 +01:00
Rodry
0fe5f88316 types(MessageComponentInteraction): fix componentType (#6536) 2021-08-29 13:22:53 +01:00
Jiralite
b89280a1dd docs(Util): Correct @param for cleanContent() (#6531) 2021-08-27 09:39:19 +01:00
Casper
fc51f61f0c feat(BaseGuildTextChannel): export BaseGuildTextChannel (#6527) 2021-08-25 23:41:15 +01:00
Jeroen Claassens
49e3a14d30 ci: setup npm auto deprecate workflow (#6520)
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-08-25 18:22:24 +01:00
Megatank58
7d4a40a26d docs(Formatters): fix typo of TimestampStyles (#6523) 2021-08-25 13:20:00 +01:00
Sugden
8a8c69a257 fix(MessageAttachment): re-assign name (#6518) 2021-08-24 21:32:56 +01:00
Advaith
839c6da03d feat(User): banners and accent colors (#6117)
* feat(User): support banners

don't mind it for now, just trying

* feat(User): support banners

* fix(Constants): declare dynamic

* fix(User): eslint

* typings: update User typings

* fix(User): add banner to equals and json bannerURL

* typings: missing dynamic

* refactor: xID to xId

* types: re-add typings

* feat: add banner color and fetch note

* feat: switch to accent color (swap hex and dec))

* Update src/structures/User.js

Co-authored-by: Rodry <38259440+ImRodry@users.noreply.github.com>

* Update typings/index.d.ts

Co-authored-by: Rodry <38259440+ImRodry@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Koyamie <koyamie1@gmail.com>
Co-authored-by: Noel <icrawltogo@gmail.com>
Co-authored-by: Rodry <38259440+ImRodry@users.noreply.github.com>
2021-08-24 21:32:18 +01:00
Justin
96e26c428d feat(MessageAttachment): allow files to be marked as spoilers (#6509)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-08-24 21:25:45 +01:00
Danny May
5c276398d6 typings: mark enums as const enums (#6394)
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-08-24 21:24:34 +01:00
Rodry
705c5a1c17 feat(ThreadChannel): add fetchStarterMessage (#6488)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-08-24 21:22:11 +01:00
Rodry
4bfd5d3e74 docs(GuildChannelCreateOptions): fix #type type (#6502) 2021-08-24 21:21:43 +01:00
Jiralite
8a95211230 docs(ThreadManager): Fix typo (#6485) 2021-08-24 21:21:22 +01:00
Kevin
141864917a fix(UserUpdateAction): rely on client.user when ids match (#6511) 2021-08-24 21:21:07 +01:00
Jiralite
57b94b9adf feat(Message): Add method to resolve a component by id (#6484) 2021-08-24 21:20:43 +01:00
Megatank58
9ca10cce06 docs: fix wrong type being displayed in docs (#6504) 2021-08-24 21:20:23 +01:00
Rodry
fb50dd9841 feat: set methods for MessageActionRow and MessageSelectMenu (#6490) 2021-08-24 21:20:03 +01:00
Jeroen Claassens
7aff15a055 typings(MessageEmbed): allow null for setTimestamp (#6514) 2021-08-24 21:19:03 +01:00
monbrey
c232baa715 typings: require component type in raw object formats (#6452) 2021-08-23 15:26:22 +01:00
Deivid
656b51875f typings(CommandInteractionOptionResolver): add missing parameter (#6497) 2021-08-23 15:23:27 +01:00
Walker Gray
c14e594d8a feat: export BaseCommandInteraction (#6478) 2021-08-23 15:22:48 +01:00
Francis Rivard
21983de3e0 feat(Guild): Add Guild#maximumBitrate getter. (#6455)
Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-08-23 15:19:55 +01:00
Francis Rivard
f39b597e31 feat(Message): prevent fetching an interaction webhook. (#6468) 2021-08-23 15:18:49 +01:00
Rodry
70cc0295f8 docs(MessageManager): fix typo (#6482) 2021-08-21 20:14:18 +01:00
MarkusRost
d6e6244336 fix(Util): allow empty strings in splitMessage (#6437) 2021-08-18 09:47:13 +01:00
Rodry
93a83c2cf7 docs(MessageReference): add possible message types (#6464) 2021-08-17 21:50:14 +01:00
Rodry
17b407935b docs(ApplicationCommandType): add DAPI link (#6463) 2021-08-17 21:49:53 +01:00
Rodry
6cac03a394 types(ClientPresence): add type declarations and docs (#6450) 2021-08-17 21:49:36 +01:00
Milo
76cf52cd0d chore(Typings): fix WebhookEditMessageOptions not having attachments (#6430) 2021-08-17 21:49:26 +01:00
Shubham Parihar
a4b8623b60 feat: add maximum prune requests reached api error (#6427) 2021-08-17 21:46:17 +01:00
Shino
5eb3553fd1 feat(Rest): expose https.Agent options (#6177)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-08-17 21:45:32 +01:00
ckohen
16493e65fd docs(BufferResolvable): add warning for URL input (#6451) 2021-08-17 21:44:37 +01:00
Synbulat Biishev
f294d1eff2 typings(GuildChannel): Added missing typing (#6454) 2021-08-17 21:44:02 +01:00
HyRo
9a833b1e0e fix(BaseClient): Remove selfbot ability (#6429) 2021-08-16 08:30:35 +01:00
monbrey
d289d5ccb7 feat(InteractionReponses): allow fetching of ephemeral messages (#6426) 2021-08-15 12:10:43 +01:00
Jiralite
2c449b6b48 fix(Sticker): Rename method correctly to _add (#6421) 2021-08-15 12:10:31 +01:00
BannerBomb
81bb68d3be typings: Message#_patch typings return type (#6433) 2021-08-15 12:09:49 +01:00
Koyamie
170c0c4985 feat: export ContextMenuInteraction (#6434) 2021-08-15 12:09:21 +01:00
ahmood
ecb6e50b46 fix(Message): fix typo (#6435) 2021-08-15 12:08:51 +01:00
Jiralite
0109ad0466 chore: Ignore .DS_Store (#6438) 2021-08-15 12:08:20 +01:00
Jiralite
84bb4f4153 docs(Formatters): Use id over ID (#6439) 2021-08-15 12:08:06 +01:00
Sugden
71fdf6fae0 refactor(Channel): make delete async (#6417) 2021-08-14 03:50:53 +01:00
Gm
759faa4174 docs(RoleManager): error in examples (#6416) 2021-08-14 03:50:44 +01:00
monbrey
615afab8bb docs: rename implementation of deferReply (#6412) 2021-08-13 01:24:05 +01:00
iCrawl
f1d5ffce04 chore: set dev version 2021-08-13 00:35:05 +02:00
iCrawl
d0bc4d7ff0 chore(Release): version 2021-08-13 00:32:27 +02:00
Ben
2bf09703c1 feat(GuildMemberManager): add 'list' method (#6403)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Ben <BenjammingKirby@users.noreply.github.com>
2021-08-12 23:05:06 +01:00
Suneet Tipirneni
dcc556c311 typings(ApplicationCommandData): make type field optional (#6405) 2021-08-12 22:12:29 +01:00
Jan
14aea12900 feat(GuildManager): allow setting with_counts to false (#6407) 2021-08-12 22:12:11 +01:00
Jan
e6f48d849f docs: remove unparsed examples (#6404) 2021-08-12 18:01:09 +01:00
Jan
933d2c5eb7 docs(GuildManager): increase fetch limit to 200 (#6406) 2021-08-12 17:29:30 +01:00
Mestery
bbda3c4beb chore(exports): allow imports of specific paths (#6367) 2021-08-12 15:10:38 +01:00
Jiralite
dce8fc7b9d fix(StageInstance): Ensure discoverableDisabled is not undefined (#6395) 2021-08-12 15:06:26 +01:00
Jiralite
44bbfa5c46 fix(WidgetMember): Default to null and not undefined (#6399) 2021-08-12 15:06:11 +01:00
Jiralite
4a64662a7d fix(Guild): preferredLocale to always be a string (#6402) 2021-08-12 15:06:03 +01:00
Suneet Tipirneni
6342430073 typings(Constants): add ApplicationCommandTypes to Constants (#6398) 2021-08-12 15:05:57 +01:00
Suneet Tipirneni
297a9118e7 typings(ApplicationCommandOptionData): Align command data options types more with discord API (#6247)
* types(ApplicationCommandData): align command data more with discord API

* types(ApplicationCommandData): clean up type definitions a bit

* types(ApplicationCommandData): fix issue where  could be used with  and

* types(ApplicationCommandOptionData): make subcommand option stronger

* test(ApplicationCommandOptionData): add typing tests
2021-08-12 15:05:41 +01:00
monbrey
fff887b2f4 feat(CommandInteractionResolvedData): access to "raw" resolved data (#6384)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2021-08-12 15:04:40 +01:00
monbrey
d9456a1a76 fix(ContextMenuInteractin): store message as raw value (#6400) 2021-08-12 11:38:42 +01:00
Jeroen Claassens
cd4029218f feat(Utils): add additional formatters (#6388) 2021-08-11 21:06:10 +01:00
Suneet Tipirneni
75b48d8d0f types(ApplicationCommandData): Stronger typings for ApplicationCommandData variants. (#6382) 2021-08-11 08:14:54 +01:00
DaStormer
de3c86f804 docs(ApplicationCommandData): fix type property (#6385) 2021-08-11 08:04:49 +01:00
monbrey
0266f28096 feat: right-clickybois (context menu support for ApplicationCommand and CommandInteraction) (#6176)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2021-08-10 23:56:12 +01:00
ckohen
779e14ef61 docs: update links for api-docs (#6380) 2021-08-10 23:52:51 +01:00
ckohen
4c8dc4cda6 docs: switch urls from upstream rearranging (#6378) 2021-08-10 21:33:32 +01:00
Jiralite
49d3c0bf87 docs: Correct wrong interaction links (#6274)
* docs: Correct wrong interaction links

* docs: fix errors and apply single option

* Update src/structures/CommandInteraction.js

Co-authored-by: Noel <buechler.noel@outlook.com>
2021-08-10 21:32:28 +01:00
Nico
3c17939fd5 fix(Util): remove truthy check before isNaN check (#6358)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-08-10 21:14:41 +01:00
Kevin
2a3e819fcf typings(Options): createDefaultOptions => createDefault (#6376) 2021-08-10 21:08:41 +01:00
Francis Rivard
006edca410 typings(Events): renamed messageReactionAdd's reaction parameter (#6371)
Nothing important but why not update it.
2021-08-10 15:33:51 +01:00
Noel
91740ecc30 chore(README): extend installation 2021-08-10 15:27:06 +01:00
Gilang Ramadhan
2985e5380f chore(README): more explanation in README.md (#6354)
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-08-10 15:25:59 +01:00
Casper
0062aa6f72 docs(Invite): MANAGE_CHANNELS instead of MANAGE_CHANNEL (#6361) 2021-08-09 17:30:30 +01:00
Koyamie
ea8d77ea62 docs(Options): defaultMakeCacheSettings typo (#6365)
fix defaultMakeCacheSettings to be consistant with the actual name.
2021-08-09 17:29:21 +01:00
Sugden
cd393fd421 chore: update conventional commit URL (#6351) 2021-08-08 18:11:45 +01:00
JeroenoBoy
efc20ff669 types(ApplicationCommandOptionData) changed options type (#6347)
* Changed ApplicationCommandOptionData interface

The options type `this[]` as a self reference causes issues when implementing this interface. Changing this to ApplicationCommandOptionData[] fixes this issue
https://imgur.com/a/0eVBoJU

* fixed ApplicationCommandOption

* Update typings/index.d.ts

Co-authored-by: Noel <buechler.noel@outlook.com>
2021-08-08 17:37:58 +01:00
Almeida
5f1def3793 types(ImageURLOptions): allow 'gif' format (#6342)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-08-08 17:36:16 +01:00
Advaith
47d2ef3e40 fix(Constants): fix CDN endpoint typings (#6332) 2021-08-08 12:45:00 +01:00
Muhimur
f13d27ca2e docs: grammar fixes (#6345) 2021-08-08 11:57:50 +01:00
Jiralite
570fba33d3 chore: Rename various stuff to "main" (#6343)
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-08-08 00:08:00 +01:00
Shino
94bb953bf1 ci(PublishDev): remove t and hardcoded dev version (#6238)
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-08-07 21:20:32 +01:00
ahmood
917e71a9ee fix(Managers): fix typo in unsupported warning (#6338) 2021-08-07 21:19:51 +01:00
Papageorgiadis Savvas
394d48649f feat(Threads): max autoArchiveDuration option (#6304)
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-08-07 21:19:29 +01:00
SinisterDeveloper
d87299ba20 fix(GuildMemberRoleManager): typo (#6335) 2021-08-07 16:50:28 +01:00
ckohen
d14a6bfe1d refactor(Options): separate default settings for make cache (#6330) 2021-08-07 16:41:12 +01:00
iCrawl
68c059165b chore: fix bug report and feature request templates 2021-08-07 13:41:41 +02:00
iCrawl
d1d740c1a5 chore: even more labels 2021-08-07 13:31:23 +02:00
iCrawl
ed0f605b23 chore: add additional topic labels 2021-08-07 13:21:37 +02:00
Noel
b2e23ca03c chore: give labels a facelift (#6333) 2021-08-07 12:07:03 +01:00
iCrawl
0d765f53d2 chore: dev version 2021-08-07 11:46:31 +02:00
iCrawl
622f398f4b chore(Release): prepare release 2021-08-07 11:39:43 +02:00
Noel
909c87353e fix(GuildMemberManager): refactor fetchMany (#6328) 2021-08-07 10:35:51 +01:00
Souji
ceae5960ed fix(Message): handle fetched messages (#6325) 2021-08-07 10:35:30 +01:00
Tiemen
60ace9a2d4 types(Util): fix cleanContent parameter type (#6321) 2021-08-07 00:59:03 +01:00
Matt (IPv4) Cowley
9e6a627a13 chore: add other maintainers to GH Sponsors config (#6329) 2021-08-06 23:09:43 +01:00
iCrawl
2b61fb5b3c ci: fix deprecation 2021-08-06 17:45:56 +02:00
Jan
cd1aefb46c docs: fix bad indentation (#6316) 2021-08-06 16:43:21 +01:00
iCrawl
3bff08acf7 chore: bump version 2021-08-06 17:38:30 +02:00
iCrawl
cfde127072 chore: prepare release 2021-08-06 15:30:54 +02:00
ckohen
1200bba7bc fix(MessageMentions): check guild exists before adding roles (#6313) 2021-08-06 14:07:31 +01:00
Noel
52817fc414 fix(GuildMemberManager): fetchMany fixes (#6314) 2021-08-06 14:07:14 +01:00
ckohen
3725dcafc0 fix(Caching): sweep archived threads in all channel caches (#6312) 2021-08-06 13:54:19 +01:00
Rodry
a0974fdbbb ci: update to node 16 (#6315) 2021-08-06 13:41:13 +01:00
Voltrex
d5e28c2298 refactor: replace dependency with initial implementation (#6310) 2021-08-06 13:15:51 +01:00
TotallyNotNero
7787a7695a docs: grammatical fix (#6311) 2021-08-06 13:15:23 +01:00
Muhimur
06644770c8 docs: grammar fixes (#6308) 2021-08-06 08:45:12 +01:00
슈리튬
913c9fa176 fix(Message): fix thread getter (#6309)
For ThreadChannel, errors occur because channel.threads do not exist.
2021-08-06 08:44:56 +01:00
iCrawl
a56ba097dc chore: deps 2021-08-06 01:25:20 +02:00
Rodry
f473f43d08 feat(Collector): return a boolean on checkEnd (#6289) 2021-08-05 20:34:17 +01:00
Rodry
b4afcf8236 docs: general cleanup and improvements (#6299)
Co-authored-by: DaStormer <40336269+DaStormer@users.noreply.github.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-08-05 20:34:06 +01:00
Jan
4241febe24 refactor(Interaction): rename defer to deferReply (#6306) 2021-08-05 17:30:13 +01:00
DaStormer
5b4efd13c9 feat(Channel): add isVoice() (#6297) 2021-08-05 16:41:06 +01:00
Timo
dd3a79eead docs: typo in ClientOptions (#6305) 2021-08-05 16:40:55 +01:00
Bluenix
b639b6c653 refactor(InteractionCollector): only keep Ids of objects (#6084)
Co-authored-by: monbrey <rsm999@uowmail.edu.au>
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-08-05 16:40:23 +01:00
monbrey
3eb41405f4 fix(BaseGuildTextChannel): call patch (#6298) 2021-08-04 23:45:26 +01:00
ckohen
a6d4035176 fix: remove support for overriding caches that break functionality (#6282)
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-08-04 22:04:40 +01:00
monbrey
5be471b47d refactor(Channels): fix incorrectly shared properties (#6262)
Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>
2021-08-04 21:55:31 +01:00
Suneet Tipirneni
ae6200e58e types(MessageButtonOptions): Clean up and export some button option type definitions (#6291) 2021-08-04 21:48:46 +01:00
Souji
6e3236ab64 fix(Message): make #channel and #guild getters (#6271) 2021-08-04 21:47:32 +01:00
Jeroen Claassens
5b0621fb3a types: make MessageTarget extend on TextBasedChannels (#6296)
@kyranet and I found the bug when updating @skyra/editable-commands
when our custom function that accepted an argument of `MessageTarget`
was suddenly no longer accepting `message.channel`. Turns out it was
because of a mistake @kyranet made lulz
2021-08-04 21:33:03 +01:00
Muhimur
90c2e072bf docs: grammar fix (#6294) 2021-08-04 09:49:28 +01:00
Pixxies Design LTD
00d5ceebf7 Fixed typos in the slash command register example (#6292)
## First "example usage" example
Added a period to the first console.log for consistency. Corrected typo in second console.log to read "Successfully".
2021-08-04 00:44:05 +01:00
Antonio Román
6b2098f7c7 feat(Constants): added more error codes (#6234)
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-08-03 23:14:25 +01:00
ckohen
09471be30e fix(WebSocketShard): mark shard ready if no guilds intent (#6284)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2021-08-03 23:13:18 +01:00
Antonio Román
61db5f7618 refactor: added TextBasedChannels type (#6286) 2021-08-03 23:12:51 +01:00
muchnameless
a72b5a355e fix(Action): getChannel interaction DM (#6280) 2021-08-03 23:10:17 +01:00
muchnameless
3c7c82292a refactor(MessageComponents): default setDisabled to true (#6279) 2021-08-03 23:10:04 +01:00
muchnameless
35fa3b3103 docs(Client): mark _finalize as private (#6281) 2021-08-03 00:45:09 +01:00
Timotej Rojko
15aea68946 types(Caches): add GuildStickerManager and GuildInviteManager (#6268) 2021-08-02 19:58:34 +01:00
Rodry
7e0618f17a fix(GuildChannel): setParent not working (#6276)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2021-08-02 19:38:30 +01:00
Superchupu
6e0ea020c0 docs: update link of the guide to v13 changes (#6273) 2021-08-02 11:58:21 +01:00
Superchupu
2c452dffb8 docs: add missing semicolon to readme (#6270) 2021-08-02 08:43:36 +01:00
Sugden
e2e4f6518b refactor(*): use async functions (#6210) 2021-08-02 00:47:43 +01:00
Superchupu
626ff85ae7 docs: change example in readme to slash command (#6250)
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-08-01 16:58:41 +01:00
Kevin
7c540764f0 refactor(GuildChannel): use filter method for #members (#6253)
Co-authored-by: ckohen <chaikohen@gmail.com>
2021-08-01 16:58:06 +01:00
Timotej Rojko
774f5b77ec fix(ChannelUpdate): restore accidentally removed line (#6263) 2021-08-01 16:19:44 +01:00
Jiralite
bb56f17760 docs(InteractionResponses): Correct @returns on responses (#6257) 2021-08-01 11:13:29 +01:00
Vlad Frangu
74fc23b3de chore(Deps): update @discordjs/builders (#6259) 2021-08-01 01:42:20 +01:00
ckohen
93e0239c80 fix(Util): fix collection import (#6256) 2021-08-01 01:26:16 +01:00
Vlad Frangu
60028251f7 chore(Deps): update discord-api-type (#6258)
Bite me, Crawl.
2021-08-01 01:25:56 +01:00
ckohen
00c2bf81cd types: use api-types for stricter typings (#6230)
* types: use api-types for stricter typings

* fix: fixes from pr comments

Co-Authored-By: Vlad Frangu <kingdgrizzle@gmail.com>
Co-Authored-By: Antonio Román <kyradiscord@gmail.com>

* types: bigint not BigInt

Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-07-31 22:48:11 +01:00
Jiralite
24931d713b refactor(VoiceState): Change kick to disconnect (#6251) 2021-07-31 21:04:10 +01:00
1Computer1
bb5e648f3d refactor: merge collections with keeping entries at max (#6242) 2021-07-31 21:03:58 +01:00
Rodry
a25e16599a feat(MessageEmbed): add setFields method (#6186)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-07-31 13:15:49 +01:00
Rodry
331a9d3ffc feat(ThreadChannel): add fetchOwner() method (#6207)
* feat(ThreadChannel): add owner and fetchOwner()

* fix(ThreadChannel): remove owner and return ThreadMember with fetchOwner

* fix(ThreadChannel): apply suggestions from code review

Co-authored-by: SpaceEEC <spaceeec@yahoo.com>

* fix(ThreadChannel): correctly point to the manager

* docs(FetchOwnerOptions): update desc to mention threads

* fix(ThreadChannel): fetchOwner can return null

* docs(ThreadChannel): owner is nullable

Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>

Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>
2021-07-31 13:00:33 +01:00
Suneet Tipirneni
77c72e625f types(ButtonMessageOptions): make button/link button typings more specific (#6212)
* types(ButtonMessageOptions): make button typings more specific

* Update typings/index.d.ts

Co-authored-by: Tristan Guichaoua <33934311+tguichaoua@users.noreply.github.com>

Co-authored-by: Tristan Guichaoua <33934311+tguichaoua@users.noreply.github.com>
2021-07-31 12:59:58 +01:00
Rodry
434e330754 refactor(Message): accept a single object instead of 3 arguments (#6244)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2021-07-31 12:22:19 +01:00
ckohen
198a5c490d refactor: move member adding to manager (#6231)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2021-07-31 12:21:47 +01:00
ckohen
2a07055cc0 refactor: use guild-wide route for fetching active threads (#6193)
Co-authored-by: SpaceEEC <24881032+SpaceEEC@users.noreply.github.com>
2021-07-31 12:19:41 +01:00
1Computer1
00bae4fe6b refactor: remove extended collection (#6246)
Co-authored-by: iCrawl <buechler.noel@outlook.com>
2021-07-31 12:08:59 +01:00
Jiralite
65ae06429d refactor: Strengthen channel typings in appropriate places (#6232) 2021-07-31 09:52:41 +01:00
Jiralite
82daee576a docs: Refactor a few @returns descriptions (#6228) 2021-07-31 09:51:34 +01:00
ThumusLive
8b52d06ca9 docs(Widget): Add the typedef WidgetChannel (#6182) 2021-07-31 09:51:20 +01:00
1Computer1
bf221f2bef fix: array/keyArray removed (#6245) 2021-07-31 09:45:33 +01:00
ckohen
797727ab6e docs: update readme node version requirement (#6241) 2021-07-31 09:42:19 +01:00
Vlad Frangu
ee3cdc81dd chore(Deps): update discord-api-types to 0.21.0 (#6237) 2021-07-31 00:21:25 +01:00
Shino
d2757cf899 ci(PublishDev): change version number to be sequential (#6235) 2021-07-31 00:11:22 +01:00
ckohen
dbb59ba1b2 feat(Util): add SweptCollection for auto sweeping of caches (#6110)
Co-authored-by: DTrombett <73136330+DTrombett@users.noreply.github.com>
Co-authored-by: 1Computer1 <22125769+1Computer1@users.noreply.github.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: NotSugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Shino <shinotheshino@gmail.com>
Co-authored-by: SpaceEEC <24881032+SpaceEEC@users.noreply.github.com>
Co-authored-by: Noel <icrawltogo@gmail.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-07-30 22:57:46 +01:00
Jiralite
2675b0866c docs(GuildManager): Correct GuildCreateOptions typo (#6224) 2021-07-30 00:04:45 +01:00
monbrey
cc5f1ce75e docs(Constants): document the Constants object for enum-like usage (#6208)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-07-30 00:04:23 +01:00
ckohen
5f710ae559 refactor(Message): make thread a getter for accuracy (#6215)
* refactor(Message): make thread a getter for accuracy

* docs: reword info block
2021-07-30 00:04:05 +01:00
Jiralite
40b127ee1e docs(Guild): Correct GuildRolePosition typo (#6223) 2021-07-30 00:03:48 +01:00
Jiralite
d310e4fc28 docs(WelcomeChannel): Correct guild return type (#6222) 2021-07-29 12:29:01 +01:00
슈리튬
6b85f900fa fix(TextBasedChannel): Fix MessageCreate handling (#6217) 2021-07-29 11:55:37 +01:00
Kevin
105a194546 docs(Constants): fix StickerTypes typedef (#6218) 2021-07-29 11:53:38 +01:00
A1ex
f44bfc47c7 docs(MessageMentions): fix documentation for members property (#6206) 2021-07-29 11:53:23 +01:00
Jiralite
1009ce169b docs(Guild): Add GuildTextChannelResolvable type definition (#6221) 2021-07-29 11:53:02 +01:00
Jiralite
a69e2f7904 refactor: Match subcommand (group) name casing with Discord's (#6204) 2021-07-29 11:52:06 +01:00
GoldenAngel
4beb64769c chore(Integration): Cleanup removed methods (#6220) 2021-07-29 11:51:47 +01:00
Justin
e000af5c98 feat(WebhookClient): allow creation of clients via URLs (#6192) 2021-07-29 11:48:43 +01:00
SpaceEEC
42a0313034 fix(PermissionOverwrites): throw better error if resolving option fails (#6219) 2021-07-29 11:10:27 +01:00
Justin
be5c0eff34 chore: update discord domain name (#6214) 2021-07-29 02:54:08 +01:00
Scott Bucher
19b242ac10 feat(FetchRecommendedShardsOptions): account for large bot sharding (#6184)
Co-authored-by: Justin <justinleeong@gmail.com>
2021-07-29 02:52:51 +01:00
ckohen
4f1f32f2a5 types(WsEvents): add thread ws events (#6194) 2021-07-28 21:35:49 +01:00
ckohen
68725476b3 fix(Channel): add default for destructured options (#6203) 2021-07-28 21:31:59 +01:00
ckohen
26ba0e1036 feat(GuildAuditLogs): add threads (#6195) 2021-07-28 20:05:01 +01:00
Jiralite
f060a3fcd7 fix: Use string instead of Snowflake for invites (#6202) 2021-07-28 20:04:51 +01:00
Jiralite
5e433b5995 docs(InteractionResponses): Document missing properties (#6178) 2021-07-28 01:30:22 +01:00
ckohen
9679b90872 fix(ThreadChannel): better property handling (#6172) 2021-07-28 01:29:06 +01:00
IRONM00N
30a58dc801 fix: export various classes that are exported in the typings (#6166)
The following classes were exported in the typings but not the `index.js` file:
- `ApplicationCommandPermissionsManager`
- `CachedManager`
- `ClientVoiceManager`
- `DataManager`
- `GuildInviteManager`
- `StageInstanceManager`
- `VoiceStateManager`
- `WebSocketManager`
- `WebSocketShard`
- `AnonymousGuild`
- `GuildPreviewEmoji`
- `InviteStageInstance`
- `InviteGuild`
- `PartialGroupDMChannel`
- `StageInstance`
- `StickerPack`
- `Typing`
- `WelcomeChannel`
- `WelcomeScreen`
- `GuildAuditLogsEntry`
2021-07-27 11:15:49 +01:00
Advaith
b22272f860 feat(Guild): add fetchWidget() for getting widget data (#6180) 2021-07-27 11:15:31 +01:00
Advaith
2f1cc1fc27 feat(ApplicationCommandOptionType): add NUMBER (10) (#6128) 2021-07-27 11:12:43 +01:00
Tiemen
4886ae23ab refactor: only cache commands from own user (#6161) 2021-07-23 20:19:17 +01:00
Milo
4f8ca2936a fix(Typings): type attachments to InteractionUpdateOptions (#6162)
* fix(Typings): type attachments with never

* Update typings/index.d.ts

Co-authored-by: DTrombett <73136330+DTrombett@users.noreply.github.com>

* chore(Typings): fix

* chore(Typings): add fetchReply

Co-authored-by: DTrombett <73136330+DTrombett@users.noreply.github.com>
2021-07-23 20:18:30 +01:00
Shino
690c121aa9 feat(CommandInteractionOptionResolver): add sub-command required option (#6165) 2021-07-23 20:17:34 +01:00
Jiralite
c8ca7bfd2c fix(GuildAuditLog): Assert target to null upon not finding invite codes (#6171) 2021-07-23 01:17:02 +01:00
ckohen
870a0de53c fix(Message): fix typo in sticker_items (#6173) 2021-07-22 22:55:47 +01:00
Jiralite
5e706941fc docs(CommandInteraction): Correct type definition of CommandInteractionOption (#6169) 2021-07-22 12:56:44 +01:00
ckohen
cd47a524af refactor(Message): combine patch methods (#6071) 2021-07-22 09:05:38 +01:00
Shino
328501bd8e refactor(CommandInteractionOptionResolver): add readonly data property (#6156) 2021-07-21 22:22:47 +01:00
Apokalypt
07017a9699 fix(Sticker): replace 'this.guildID' (undefined) by 'this.guildId' in fetchUser (#6160)
Co-authored-by: Apokalypt <enterprise@apokalypt.fr>
2021-07-21 08:39:17 +01:00
Apokalypt
85865058ed types(DataManager): add 'K' to type parameter of 'resolveId' (#6152)
Co-authored-by: Apokalypt <enterprise@apokalypt.fr>
2021-07-21 08:38:55 +01:00
Tristan Guichaoua
1e90be8f7a types(ColorResolvable): readonly tuple (#6153) 2021-07-20 20:20:37 +01:00
Jan
5addcd15d8 refactor(OptionResolver): accept single type instead of an array (#6154) 2021-07-20 20:20:20 +01:00
monbrey
02f55f0971 fix(CommandInteractionOptionResolver): type should be USER (#6148) 2021-07-20 01:46:38 +01:00
Floffah
8ccfd6e07b fix(CommandInteractionOptionResolver): Export CommandInteractionOptio… (#6146)
**Please describe the changes this PR makes and why it should be merged:**
CommandInteractionOptionResolver is exported in the typings, but not in the index.js file

**Status and versioning classification:**
 - Code changes have been tested against the Discord API, or there are no code changes
 - I know how to update typings and have done so, or typings don't need updating
2021-07-20 00:18:19 +01:00
Advaith
54d6a3a070 feat(Sticker): updates, sticker packs, and guild stickers (#5867)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: Tiemen <ThaTiemsz@users.noreply.github.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: BannerBomb <BannerBomb55@gmail.com>
Co-authored-by: Noel <icrawltogo@gmail.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2021-07-20 00:17:21 +01:00
Vlad Frangu
76888e6c1b chore(Deps): update discord-api-types to 0.19.0 (#6147) 2021-07-20 00:15:42 +01:00
Shino
77784aca43 fix(CommandInteraction): change options type from Collection to array (#6139) 2021-07-19 08:02:53 +01:00
Devin
8ea04b295d Updates identity to correct scope name of identify (#6140) 2021-07-19 08:02:37 +01:00
DTrombett
63ce065fc3 refactor: change const enums to interfaces (#6078)
* types(*): revert const enum to enum

* refactor: change const enums to interfaces
2021-07-18 19:29:40 +01:00
GoldenAngel
9f039a8679 feat(GuildPreview): add createdAt & createdTimestamp (#6130)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-07-18 19:18:53 +01:00
eeehh
c40c0f934a fix(GuildChannel): only fetch invites for the specific channel (#6132) 2021-07-18 19:16:48 +01:00
Shino
f293132345 feat(CommandInteraction): add CommandInteractionOptionResolver (#6107)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2021-07-18 19:16:32 +01:00
HyRo
4d53d0fd11 refactor(ActionsManager): less complex code (#6102)
Co-authored-by: Matt (IPv4) Cowley <me@mattcowley.co.uk>
Co-authored-by: DTrombett <73136330+DTrombett@users.noreply.github.com>
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
Co-authored-by: Gabe616 <60316309+Gabe616@users.noreply.github.com>
2021-07-17 12:25:59 +01:00
Advaith
366f3c910a feat: make Instance#fetch force true by default, and fix force parameter (#6116)
Co-authored-by: Almeida <almeidx@pm.me>
2021-07-17 12:25:23 +01:00
Antonio Román
ef5ba05996 types(Message): mark #thread as nullable (#6129) 2021-07-17 12:25:05 +01:00
Alan
de384047b3 chore(ApiRequest): remove mention of var (#6125)
Co-authored-by: Alan <you@example.comalanlichen1@gmail.com>
2021-07-17 12:22:45 +01:00
Antonio Román
5ca97c9351 refactor: remove timer utilities from Client (#6113) 2021-07-16 13:31:25 +01:00
Joey Smalen
f200f14a40 feat(REST): append additional information to the required User Agent (#6112)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-07-16 12:27:12 +01:00
DTrombett
8db6df3d1e types(Options): add types for cacheWithLimits (#6095) 2021-07-16 12:20:38 +01:00
Antonio Román
576eee8de2 refactor: remove typing caching (#6114)
Co-authored-by: DTrombett <73136330+DTrombett@users.noreply.github.com>
2021-07-16 12:20:05 +01:00
Shino
4206e35b23 feat(Client): add conditional ready typings (#6073) 2021-07-14 16:19:38 +01:00
DTrombett
60148c6a78 types(Interaction): change inGuild return type (#6094) 2021-07-14 16:14:20 +01:00
Bluenix
a9e7ebd94f types(PartialWebhookFields): add APIMessage to deleteMessage union (#6085) 2021-07-14 16:13:32 +01:00
Hackerboi 69
98c60789a2 types(Interactions): fix function overloads (#6109) 2021-07-13 13:31:55 +01:00
monbrey
1dcad051a8 revert: support for nested arrays of components, fix error handling (#6081) 2021-07-12 07:53:27 +01:00
Matt (IPv4) Cowley
dee5c83fc0 fix(PermissionsOverwrites): only convert type if number (#6092) 2021-07-12 07:53:18 +01:00
Tiemen
a8984bc68c types(Guild): remove fetchVoiceRegions (#6099) 2021-07-11 23:58:16 +01:00
Rodry
d433fe8a08 fix: channel type check in actions (#6086) 2021-07-10 21:51:32 +01:00
SpaceEEC
f72ce7c136 fix(GuildChannel): clone its PermissionOverwriteManager too (#6083) 2021-07-10 13:15:20 +01:00
DTrombett
d6c43a50bd types(Partial): add partial reactions (#6066)
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-07-09 12:25:59 +01:00
iCrawl
5b6be0cebc types(Test): fix overloads for channel create 2021-07-08 22:46:26 +02:00
SpaceEEC
637c8e0fdf fix(PresenceUpdate): use added presence over nullable getter (#6077)
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-07-08 21:43:48 +01:00
Rodry
6301728d35 refactor(Channel): change channel types to UPPER_CASE (#6035) 2021-07-08 21:32:19 +01:00
anandre
b170fb5ce8 docs(InteractionResponses): reply docs example (#6079)
Co-authored-by: DTrombett <73136330+DTrombett@users.noreply.github.com>
2021-07-08 21:16:03 +01:00
BaumianerNiklas
67e9ce4693 docs(InteractionResponses): generalize wording in update to fit other component interaction types (#6074) 2021-07-08 15:39:36 +01:00
BannerBomb
c1eaa78ab7 typings(GuildInviteManager): FetchInvitesOptions (#6076) 2021-07-08 15:39:23 +01:00
1Computer1
9cd5e7ed61 refactor(Managers): rename add to _add (#6060) 2021-07-08 11:34:45 +01:00
DTrombett
28b5ffb4d6 docs(ClientUser): fix shardId nullable (#6072)
* docs(ClientUser): fix shardId nullable

* docs(ClientUser): fix id lowercase for consistency

Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>

Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-07-07 23:22:51 +01:00
Antonio Román
7322547172 types: fixed unreachable overloads (#6062) 2021-07-07 17:34:39 +01:00
DTrombett
58bbcd591e types(ApplicationCommand): fix option name (#6067)
* types(ApplicationCommand): fix option name

* fix(ApplicationCommand): update tests

* fix(ApplicationCommand): fix error param
2021-07-07 13:41:47 +01:00
Antonio Román
98a5b52d8b refactor(ApplicationCommandManager): remove unused assignment (#6063) 2021-07-07 13:41:02 +01:00
Antonio Román
4eb3a2a885 refactor: rename Constants.OPCode to Opcode, moved objects to enums (#6065) 2021-07-07 13:40:36 +01:00
ckohen
755c180659 feat: allow channels from uncached guilds to be returned from fetch (#6034)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-07-06 13:04:26 +01:00
Rodry
2e078e4488 types(*): revert incorrect unknown type changes (#6057)
Co-authored-by: DTrombett <73136330+DTrombett@users.noreply.github.com>
2021-07-05 22:49:34 +01:00
Jan
c0a814fdb3 feat(Collector): better types for events (#6058)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-07-05 22:26:15 +01:00
BannerBomb
4c0426c469 docs: fixed several typings and MessagePayload#create JSDoc (#6059) 2021-07-05 22:26:06 +01:00
SpaceEEC
ded93feb57 refactor(PresenceManager): have Presence extend Base and simplify add (#6056)
* refactor(PresenceManager): have Presence extend Base and simplify add

* style(Presence): add empty line after super call

Co-authored-by: Noel <buechler.noel@outlook.com>

Co-authored-by: Noel <buechler.noel@outlook.com>
2021-07-05 19:53:15 +01:00
SpaceEEC
afbd5db404 refactor(Presences): remove from User, nullable on GuildMember (#6055)
as well as on Client#presenceUpdate
2021-07-05 19:53:00 +01:00
Shubham Parihar
8d9ab741c8 docs(ThreadChannel): fix documentation for setLocked method (#6053) 2021-07-05 18:36:25 +01:00
iAmZiNc
162d89a42f fix(Presence) missing client property definition (#6054) 2021-07-05 18:03:07 +01:00
Almeida
93e2c04ec2 fix(InviteScope): added missing 'bot' scope (#6052) 2021-07-05 16:07:57 +01:00
Antonio Román
03fe6ee4e4 test(Types): add notPropertyOf type-only utility (#6051) 2021-07-05 16:07:45 +01:00
Souji
3022b0f5b1 refactor(Intents): remove computed shorts (#6050) 2021-07-05 16:07:30 +01:00
PanSzelescik
28c57246d1 feat(Message): add 'failIfNotExists' to ClientOptions (#6038)
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-07-05 13:53:40 +01:00
PanSzelescik
31d31293d3 feat(LimitedCollection): export LimitedCollection (#6043)
* feat(LimitedCollection): export LimitedCollection

* fix: remove @private

* fix: typings
2021-07-05 13:53:15 +01:00
monbrey
34708d6d18 fix(SelectMenuInteraction): set values to empty array if not provided (#6045) 2021-07-05 13:39:21 +01:00
Antonio Román
1a27f57950 refactor: remove lastMessage properties from User and GuildMember (#6046) 2021-07-05 13:11:13 +01:00
Jan
676118ab0f refactor(typings): general cleanup (#6047) 2021-07-05 12:55:06 +01:00
monbrey
e3d877d542 fix(Guild): add invite manager property, extend CachedManager (#6049)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-07-05 12:16:34 +01:00
BannerBomb
fe5d56c9b1 fix(TeamMember): Fixed incorrect return types. (#6044) 2021-07-04 22:55:00 +01:00
monbrey
c6e5521687 feat(Client): enforce passing scopes to generateInvite (#6024)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-07-04 22:53:57 +01:00
DraftMan
9e08b02df2 feat(Managers): Add GuildInviteManager (#5889)
Co-authored-by: iShibi <shubhamparihar391@gmail.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: SpaceEEC <SpaceEEC@users.noreply.github.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: iCrawl <icrawltogo@gmail.com>
2021-07-04 22:53:13 +01:00
BannerBomb
c4aa9feee2 types(Options): should extend null (#6042)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-07-04 22:05:16 +01:00
Antonio Román
185e37602b types(Voice): move types to the library's definitions (#6041)
* types(Voice): move types to d.js

* types: added padding lines

Co-authored-by: Noel <buechler.noel@outlook.com>

Co-authored-by: Noel <buechler.noel@outlook.com>
2021-07-04 21:10:33 +01:00
Antonio Román
a7c6678c72 refactor: change xID to xId (#6036)
* refactor: change `xID` to `xId`

* Update src/managers/MessageManager.js

Co-authored-by: Noel <buechler.noel@outlook.com>

Co-authored-by: Noel <buechler.noel@outlook.com>
2021-07-04 19:54:27 +01:00
didinele
281072be44 chore: remove unnecessary getter (#6037) 2021-07-04 15:59:28 +01:00
1Computer1
ab0b3b9a07 fix(Structures): remove Structures (#6027) 2021-07-04 12:26:35 +01:00
Shubham Parihar
db60e367b4 docs(MessageManager): document options param for #edit as required (#6031) 2021-07-04 12:25:59 +01:00
ckohen
2ab32e6bc6 types: better fullPermissions typings (#6028) 2021-07-04 12:25:42 +01:00
ckohen
b62d646271 docs: add Partial typedef (#6029) 2021-07-04 12:25:35 +01:00
Shubham Parihar
d58f0d243c fix(GuildChannel): use map method on cache not its manager (#6032) 2021-07-04 12:25:28 +01:00
monbrey
610b0b4dd6 docs: fix some missed MessageComponent collector methods (#6023) 2021-07-04 00:27:07 +01:00
monbrey
8077e4f4f1 fix(PermissionOverwriteManager): pass ID to API correctly (#6026) 2021-07-04 00:26:44 +01:00
1Computer1
8c7cb0eff8 feat(Managers): add customizable caching for managers (#6013) 2021-07-04 00:26:26 +01:00
Almeida
ec06ba7ad0 docs(*): wrap optional properties with union types in parentheses (#6021) 2021-07-03 21:00:53 +01:00
Shubham Parihar
4bf49809f2 refactor: improve typings and docs related to threads (#5991)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-07-03 20:38:38 +01:00
SkyFlags
7e3001191c fix(GuildChannel): Add missing 'cache' property (#6019) 2021-07-03 19:59:52 +01:00
Vlad Frangu
39db95352c fix: Remove connection.url from open debug message (#6018) 2021-07-03 18:44:48 +01:00
monbrey
374c779f7f feat(InteractionCollector): reworked to be more generic (#5999)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-07-03 13:35:39 +01:00
DTrombett
bd25ff5913 fix(Util): splitMessage not working with array (#6008)
Co-authored-by: muchnameless <12682826+muchnameless@users.noreply.github.com>
2021-07-03 13:25:43 +01:00
Antonio Román
2446ff5251 refactor(Util): make class extend null (#6000) 2021-07-03 13:25:35 +01:00
Ishmaam Khan
e7ad2fe207 feat: PermissionOverwriteManager (#5318)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-07-03 13:24:38 +01:00
Antonio Román
a11a10525b refactor: rename events to be consistent with WS names (#6010)
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-07-03 13:23:53 +01:00
SpaceEEC
7dd1a8da08 docs(Collector): properly document endReason (#6016) 2021-07-03 13:23:15 +01:00
ckohen
568691ce6a fix: correct permissions checks and cache on update (#6015) 2021-07-03 13:23:01 +01:00
Rodry
4adfc45b5a docs(CreateInviteOptions): fix TargetType link (#6017) 2021-07-03 13:22:35 +01:00
Antonio Román
98e45a5995 feat(Formatters): added new URL utilities and docs (#6014)
* feat(Formatters): added new URL utilities and docs

* refactor: use static class to fix docsgen error

* fix(Typings): declare members as public

* docs(Formatters): add method tags

* docs: remove empty line

Co-authored-by: SpaceEEC <spaceeec@yahoo.com>

Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-07-03 13:22:20 +01:00
Rodry
56b5b7ee82 types(MessageOptions): fix components being optional (#6005) 2021-07-03 08:58:29 +01:00
DTrombett
0dc5dd5808 types(*): create mention types (#6003) 2021-07-03 08:58:18 +01:00
Pravesh Kunwar
1242c5434d types(VoiceState): fix optional params (#5993) 2021-07-03 08:57:41 +01:00
BannerBomb
c40b06cac9 types(ClientUser): updated setAFK signature (#6011) 2021-07-03 08:57:31 +01:00
Tobias Peltzer
e4be666c2c fix(ThreadManager): fixed wrong private and fetchAll check (#6012) 2021-07-03 08:56:35 +01:00
Adrian Paschkowski
3a718d8c62 fix(Typings): Improve components typings in MessageEditOptions (#6002) 2021-07-02 19:54:13 +01:00
Antonio Román
27e217caee chore(Constants): added new error codes (#5975) 2021-07-02 19:53:48 +01:00
Rodry
fbdad6eac3 docs(*): add class links to isX() methods (#6007) 2021-07-02 19:51:59 +01:00
kikorp78
fe6cc0c15d types(MessageSelectMenu): fix typings (#5995) 2021-07-02 00:44:05 +01:00
BannerBomb
726073fef7 docs: WebSocketShard#send and TextBasedChannel#send (#5998) 2021-07-02 00:42:11 +01:00
Antonio Román
1e73c25fbf feat(RoleManager): added edit method, alias Role#edit (#5983)
Co-authored-by: monbrey <rsm999@uowmail.edu.au>
2021-07-01 22:32:03 +01:00
DTrombett
d742814686 docs(Util): methods removed on the base object (#5990) 2021-07-01 17:38:52 +01:00
Rodry
d078dce2f8 ci: deprecate old dev releases on publish (#5992)
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-07-01 17:37:32 +01:00
Hackerboi 69
521d26c57f types(Interactions): fix function overload types (#5989) 2021-07-01 17:37:25 +01:00
Adrian Castro
6edf55c04b fix(ApplicationCommand): fix typo in JSDoc (#5994) 2021-07-01 17:35:10 +01:00
monbrey
941cd86881 types: few missing thread channels (#5988) 2021-07-01 10:01:14 +01:00
monbrey
0eeb2775a5 types(MessageOptions): improved component typings (#5987) 2021-07-01 10:00:33 +01:00
Rodry
58183d425b docs(Partials): add link to the guide (#5982) 2021-07-01 09:58:27 +01:00
monbrey
9ac68670d7 fix(ThreadChannel): check for existence of properties when patching (#5961)
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-07-01 09:58:20 +01:00
Shubham Parihar
71fb33a5fe feat(StageChannel): add createStageInstance method & use better naming convention (#5951)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-07-01 09:58:11 +01:00
ckohen
388e05b4af types(ApplicationCommandPermissionsManager): fix types (#5979) 2021-07-01 09:58:01 +01:00
Rodry
f819416bac docs(MessageSelectMenu): add link to Discord docs (#5984) 2021-07-01 09:57:25 +01:00
DTrombett
a08ce7dddb types(ThreadChannel): make locked and archived param optional (#5980) 2021-06-30 23:45:59 +01:00
Sugden
1e8f01253e refactor: new node features (#5132)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-06-30 21:40:33 +01:00
Shubham Parihar
f108746c15 docs(ThreadManager): fix FetchedThreads typedef and startMessage (#5971) 2021-06-30 17:20:01 +01:00
Shubham Parihar
b7ed6752ac feat(Channel): add isThread typeguard for better TS support (#5978) 2021-06-30 16:19:59 +01:00
Rodry
788d58e5a3 types(*): make hex color types compatible with ColorResolvable (#5973)
* types(*): make hex color types compatible with ColorResolvable

* types(*): create HexColorString type

* types(HexColorString): move to a less awkward place
2021-06-30 14:32:14 +01:00
iCrawl
64f093f9c4 chore: deps 2021-06-30 13:05:02 +02:00
Antonio Román
8c7a28f211 feat(Util): added formatters (#5976) 2021-06-30 09:50:31 +01:00
A1ex
58bc1458d0 docs(Message): Add ThreadChannel as a channel type (#5972) 2021-06-30 06:24:37 +01:00
Mark Fisher
ae37d202a5 types(CommandInteraction): Readd followUp type (#5974) 2021-06-30 06:21:24 +01:00
iCrawl
5842e35881 fix(Typings): erronous RawMessage 2021-06-29 23:38:23 +02:00
monbrey
5e28ff83cb feat(Interactions): option to auto-fetch replies (#5831) 2021-06-29 22:32:33 +01:00
Shubham Parihar
5dfd7dd1bf docs(ThreadManager): fix reason prop of ThreadCreateOptions (#5970) 2021-06-29 22:31:26 +01:00
Jake Ward
3174507d57 types(ThreadManager): add type to ThreadManager#create options (#5969) 2021-06-29 21:03:15 +01:00
DTrombett
edab5afff9 fix(Thread): make archive_timestamp not nullable (#5965) 2021-06-29 20:41:21 +01:00
Antonio Román
1925d01d8f fix(Sharding): strict type context and return (#5933) 2021-06-29 20:36:04 +01:00
Papageorgiadis Savvas
87e8cdd3eb feat(Interaction): add guild guard (#5955)
* feat(Interaction): add guild guard

* fix: remove possibly uncached getters & duplicate method

* fix: boolean ensuring

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2021-06-29 20:35:52 +01:00
Rodry
706c6eae60 ci: add UNIX timestamp to version number (#5967)
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
2021-06-29 20:27:47 +01:00
Shubham Parihar
853be621ac docs(Channel): fix description of thread channel types (#5968) 2021-06-29 20:27:20 +01:00
ckohen
6264c60e97 feat(Managers): new ApplicationCommandPermissionsManager (#5897)
Co-authored-by: SpaceEEC <24881032+SpaceEEC@users.noreply.github.com>
Co-authored-by: Yoshida Tomio <mail@tomio.codes>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-06-29 19:19:48 +01:00
ckohen
bbc48fdad6 chore(Threads): general fixup and catch up on features (#5959)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-06-29 18:58:51 +01:00
Amish Shah
63a8df1c1f chore(Types): include @discordjs/voice typings (#5941)
Co-authored-by: Noel <buechler.noel@outlook.com>
2021-06-29 18:44:45 +01:00
BannerBomb
5ad83a6a65 fix(Webhook): return void from #delete for consistency. (#5954) 2021-06-29 13:25:01 +01:00
BannerBomb
fb8d5166a8 refactor(Presence): remove second assignment of syncID (#5956) 2021-06-29 11:50:51 +01:00
Antonio Román
acdcb906ae types(ColorResolvable): change string to #${string} (#5950) 2021-06-29 00:42:54 +01:00
Jan
6c447b12e3 fix(Collector): docs and types (#5937) 2021-06-29 00:37:45 +01:00
monbrey
41f718f779 docs: drop string from MessageButtonStyleResolvable (#5944) 2021-06-29 00:37:38 +01:00
Peter Maguire
d38b34756b docs(Features): resolved typo in FATEWAY_PRESENCE_LIMITED (#5952)
* Fix documentation typo

* Update index.d.ts
2021-06-29 00:34:43 +01:00
BaumianerNiklas
d3d19ce49b docs(Webhook): fix thread example in send method (#5953) 2021-06-29 00:34:30 +01:00
monbrey
e37ef3af21 types: define ApplicationCommand enums in lib (#5947) 2021-06-28 12:00:07 +01:00
DraftMan
0a0630c049 revert(BitField): Bring back-compatibility after BitField serialization (#5910) 2021-06-28 11:54:14 +01:00
SkyFlags
dc671c8ac4 fix(Message): Make author of referenced message nullable (#5929) 2021-06-28 11:53:53 +01:00
monbrey
03d3a5cdde types: fix remaining Raw type references, update discord-api-types dep (#5942) 2021-06-27 22:48:11 +01:00
monbrey
b15d825bb3 refactor(MessagePayload): rename APIMessage (#5921) 2021-06-27 12:47:15 +01:00
SpaceEEC
630432b4e2 docs(Channel): make the type news_thread an inline code-block (#5940) 2021-06-27 12:46:37 +01:00
Rodry
e44ae96100 fix(User): fix bot and system properties being incorrect in some cases (#5923) 2021-06-27 12:46:24 +01:00
Antonio Román
985d4d6a43 refactor: removed code and split options (#5918)
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>

BREAKING CHANGE: Removed `APIMessage#split`
BREAKING CHANGE: Removed `MessageEditOptions#code`
BREAKING CHANGE: Removed `BaseMessageOptions#code`
BREAKING CHANGE: Removed `BaseMessageOptions#split`
2021-06-26 23:11:40 +01:00
Jan
0d0c8f07f2 refactor(Collector): make filter an option (#5903)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-06-26 10:57:06 +01:00
monbrey
1439183ad3 feat(MessageComponentInteraction): component getter (#5840)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
2021-06-26 10:55:37 +01:00
Jake Ward
adecead716 fix(ThreadMemberManager): fix ThreadMemberManager#add and ThreadMemberManager#fetch (#5927) 2021-06-26 10:54:37 +01:00
ckohen
6065b11634 types(ThreadMemberManager): fix incorrect usage (#5928) 2021-06-26 10:54:23 +01:00
SpaceEEC
4714a961b8 fix(Webhook): resolve non-string avatars too (#5914) 2021-06-25 11:11:56 +01:00
Jan
261612596d feat(MessageMentions): add repliedUser (#5905) 2021-06-25 11:07:31 +01:00
Rodry
5af2ef5fbc docs(Thread): add links to discord api docs (#5919) 2021-06-25 00:34:10 +01:00
monbrey
75837a8252 docs(MessageSelectMenu): fix options typings (#5922) 2021-06-25 00:33:58 +01:00
monbrey
e5fcf0bee5 feat(MessageSelectMenu): droppybois (#5692)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-06-24 22:25:16 +01:00
BannerBomb
d984ac9d09 Fixed typos from commit #5570 (#5917) 2021-06-24 22:20:57 +01:00
monbrey
ca2a36b1d7 fix(ApplicationCommand): stringType isn't supposed to be sent to the API (#5916) 2021-06-24 21:57:11 +01:00
ckohen
7346621d15 feat: api v9 and threads (#5570)
Co-authored-by: Noel <icrawltogo@gmail.com>
Co-authored-by: Amish Shah <dev@shah.gg>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: SynthGhost <60333233+synthghost@users.noreply.github.com>
Co-authored-by: SpaceEEC <24881032+SpaceEEC@users.noreply.github.com>
Co-authored-by: Elliot <elliot@maisl.fr>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2021-06-24 20:48:29 +01:00
monbrey
ea49f7ca74 feat(InteractionCreate): move to an Action handler (#5906) 2021-06-24 20:42:56 +01:00
SpaceEEC
ee025b0558 fix(Permissions): allow admin to override in the missing method (#5911) 2021-06-24 20:42:40 +01:00
Rodry
e0efcc6ab0 docs(*): add links to Discord's API objects & data (#5862) 2021-06-24 09:55:44 +01:00
Pronin Egor
6d3d00b445 fix(InteractionResponses): set replied status on editReply (#5899)
Co-authored-by: Noel <buechler.noel@outlook.com>
Co-authored-by: Noel <icrawltogo@gmail.com>
2021-06-24 00:07:33 +01:00
Shubham Parihar
d930c812bb feat: add missing APIError codes (#5898) 2021-06-24 00:04:55 +01:00
monbrey
bd9f56af9a feat(Interactions): improve error handling for ephemeral responses (#5892)
Co-authored-by: muchnameless <12682826+muchnameless@users.noreply.github.com>
2021-06-24 00:03:52 +01:00
monbrey
2d7c12b0e9 fix(Message): flags not being parsed on some edits (#5886)
* fix(Message): flags not being parsed on some edits

* refactor(MessageManager): access cache once
2021-06-24 00:02:30 +01:00
Jan
1816a93b1b refactor: remove exported shortcuts to util methods (#5904) 2021-06-23 10:47:17 +01:00
Shubham Parihar
6cebeae15e docs: move embeds field into BaseMessageOptions (#5902) 2021-06-22 15:25:18 +01:00
Antonio Román
edf6f0ca70 docs(Readme): remove dependencies badge (#5901) 2021-06-22 11:09:23 +01:00
Brage
3d96a33bd0 docs(AnonymousGuild): add missing extends tag (#5896) 2021-06-22 10:24:04 +01:00
Shubham Parihar
c850ae1027 feat: add APIError codes for stage instance (#5888) 2021-06-20 15:48:02 +01:00
ckohen
174b7a7f9c fix(Guild): don't patch before instance properties (#5885)
Co-authored-by: BannerBomb <BannerBomb55@gmail.com>
2021-06-20 15:47:30 +01:00
Jacob Morrison
1f8f3ab0f8 fix(presenceUpdate): fire when only state/details change on an activity (#5846) 2021-06-19 17:27:54 +01:00
Souji
44e2ee7b20 feat(WelcomeScreen): welcome screens (#5490)
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
Co-authored-by: izexi <43889168+izexi@users.noreply.github.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-06-19 16:44:45 +01:00
Brage
807ea2d3c1 docs(VoiceState): channel can be null (#5872)
The docs does not show that VoiceState#channel can be null
![Docs Image](https://i.imgur.com/fLqRBqm.png)
This should fix the issue
2021-06-18 16:37:57 +01:00
Tyler Resch
e3ed74a5e8 docs(ReplyMessageOptions,MessageEditOptions): replaced embed with embeds (#5860)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-06-18 14:42:53 +01:00
Shubham Parihar
2d12db000f feat: stage instance invite (#5856)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-06-18 00:01:18 +01:00
Shubham Parihar
a3cbcca13d feat(Guild): add enum for premium_tier (#5868) 2021-06-16 15:33:01 +01:00
monbrey
a0b7d95e36 types(MessageReactionResolvable): add string (#5863) 2021-06-16 10:29:14 +01:00
Antonio Román
6cceb936a7 refactor(Package): remove runkitExampleFilename (#5866) 2021-06-16 10:29:02 +01:00
Shubham Parihar
f7eeccba4b feat(*): use enums for consistency and speed (#5843)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-06-15 12:33:31 +01:00
Rodry
671436cbb8 fix(Message): editedTimestamp defaulting to 0 (#5847) 2021-06-15 12:02:56 +01:00
monbrey
9dda9b742f refactor(awaitMessageComponentInteraction): use options object for lib consistency (#5852) 2021-06-15 12:02:48 +01:00
Jiralite
96a4e7b86e docs: Consistent application name usage (#5853) 2021-06-15 12:02:39 +01:00
ThumusLive
038ee99604 feat(Widget): wrapper for widget.json (#5619)
Co-authored-by: monbrey <rsm999@uowmail.edu.au>
Co-authored-by: BannerBomb <BannerBomb55@gmail.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: Noel <icrawltogo@gmail.com>
2021-06-15 12:02:18 +01:00
Tyler Resch
a6dae75d3a docs(TextBasedChannel#send): update embeds example (#5857) 2021-06-15 11:59:53 +01:00
Shubham Parihar
918921e821 feat: stage instances (#5749)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-06-14 12:57:37 +01:00
muchnameless
a1f94f670e fix(ApplicationCommand): default option.required fix (#5848) 2021-06-14 08:10:05 +01:00
Shubham Parihar
1ac9a2eb5b refactor(*): make typedefs for all options params (#5785)
Co-authored-by: Rodry <38259440+ImRodry@users.noreply.github.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-06-13 19:32:54 +01:00
monbrey
01a1fd615b fix(Guild): setChannelPositions null parenting (#5841) 2021-06-13 19:31:06 +01:00
Rodry
77c1f15c9f fix(ApplicationCommand): default option.required to false (#5838) 2021-06-13 19:31:00 +01:00
Papageorgiadis Savvas
d5bb7585da types(GuildApplicationCommandManager): allow undefined command (#5837)
Co-authored-by: Almeida <almeidx@pm.me>
2021-06-13 19:30:34 +01:00
Almeida
a0a56e2cb3 types: corrected shard broadcastEval (#5834) 2021-06-13 19:30:28 +01:00
Jan
4dbcaf76c3 refactor(GuildPreviewEmoji): make roles an array (#5720) 2021-06-13 19:30:20 +01:00
Jan
02693bc02f refactor(APIMessage): remove unused declarations (#5836) 2021-06-12 12:11:57 +01:00
monbrey
9376ee42f4 docs(ButtonInteraction): fix typo (#5835) 2021-06-12 12:11:48 +01:00
ckohen
7111b4cd5f refactor: fetch options consistency (#5824) 2021-06-12 12:10:35 +01:00
monbrey
08cffd6a30 types(MessageComponentInteraction): update should return Promise<void> (#5829) 2021-06-12 12:10:24 +01:00
Shubham Parihar
29173bf814 fix(GuildManager): #create throws when systemChannelFlags is undefined (#5832) 2021-06-12 12:10:13 +01:00
Matt (IPv4) Cowley
c5859337b6 fix(GuildChannel): don't force parentID/permissionOverwrites to empty on create (#5823) 2021-06-12 12:10:01 +01:00
Adrian Castro
99ff715137 feat(*): document and support embeds field in message create endpoint (#5792)
Co-authored-by: ckohen <chaikohen@gmail.com>
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
2021-06-11 23:45:17 +01:00
Matt (IPv4) Cowley
6df36232a0 fix(GuildChannel): improve empty overwrite handling for permissionsLocked (#5821) 2021-06-11 23:45:05 +01:00
Antonio Román
9e5106d90e docs: removed topics and FAQ from the repository (#5820)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: ckohen <chaikohen@gmail.com>
2021-06-11 23:41:49 +01:00
ckohen
24e5868818 fix(ApplicationCommands): allow managing commands for uncached guilds (#5729)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-06-11 23:26:24 +01:00
Jan
e990c35476 fix(ClientApplication): freeze flags (#5811) 2021-06-11 23:22:10 +01:00
Shubham Parihar
a5a6e22316 fix(*): typedefs and typings for image & webhook options (#5805) 2021-06-11 23:22:01 +01:00
SpaceEEC
19d0405aa5 refactor(GuildChannel): use Permissions.defaultBit over 0n (#5822) 2021-06-11 23:21:51 +01:00
Antonio Román
fdef940127 refactor: remove all voice code (#5818)
* refactor: remove all voice code

* refactor: remove even more remnants
2021-06-11 23:21:34 +01:00
Almeida
93b0a4e005 fix(TextBasedChannel): allow passing an APIMessage with split (#5815)
* fix(TextBasedChannel): allow passing an APIMessage with split

* fix(Webhook): allow passing an APIMessage with slit
2021-06-11 22:54:29 +01:00
Ratul Saha
19fd1622f5 types(Extendable): add ButtonInteraction (#5802) 2021-06-11 22:54:00 +01:00
Jan
e3e466d3e5 refactor(MessageEmbed): remove files (#5813)
* refactor(MessageEmbed): remove files

* fix: test
2021-06-11 21:36:31 +01:00
Juruel Keanu Lorenzo
a7ebb2145c fix(PermissionOverwrites): optional allow/deny OverwriteData (#5810) 2021-06-11 21:31:11 +01:00
Adrian Paschkowski
935f819207 fix(Typings): Fix BitField toJSON/valueOf return types (#5806) 2021-06-11 21:30:58 +01:00
Almeida
5fb6c0dd14 chore(npm): ignore unnecessary files (#5816)
* chore(npm): ignore unnecessary files

* use package#files instead of npmignore
2021-06-11 21:30:34 +01:00
Antonio Román
55ad6f0e23 docs(README): re-add install command, remove voice remnants (#5817) 2021-06-11 21:30:09 +01:00
Jan
77e28cf65b fix(Hooks): make husky hooks executable (#5812) 2021-06-11 17:18:05 +01:00
Mark Fisher
41673b7382 fix(GuildChannel): clone errors when options.name isn't provided (#5804) 2021-06-11 11:04:45 +01:00
SpaceEEC
53d8e49dca fix(WebSocketShard): don't catch errors thrown in event handlers (#5803) 2021-06-11 10:46:14 +01:00
Tyler Resch
f5f3f77286 docs(MessageEmbed): deprecation advisory for type (#5774)
Co-authored-by: DTrombett <73136330+DTrombett@users.noreply.github.com>
Co-authored-by: Noel <icrawltogo@gmail.com>
2021-06-10 19:35:35 +01:00
SpaceEEC
097c7b9cdd fix: don't patch missing properties from partial payloads (#5796)
* fix: don't patch missing properties from partial payloads

* fix(GuildChannel): initialize permissionOverwrites in the constructor

* refactor(GuildChannel): remove redundant if
2021-06-10 17:42:45 +01:00
Shubham Parihar
ffabec3a5e feat(Guild): add enum for mfa_level (#5797) 2021-06-10 17:19:08 +01:00
SpaceEEC
2f5424bdac fix(GuildChannel): spread clone options to avoid infinite recursion (#5800) 2021-06-10 17:07:12 +01:00
SpaceEEC
18ac72e457 feat(RequestHandler): emit more info when a rate limit was hit (#5801)
* feat(RequestHandler): emit more info when a rate limit was hit

* emit 'None' when no sublimit was hit

Co-authored-by: Antonio Román <kyradiscord@gmail.com>

Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-06-10 17:06:11 +01:00
SpaceEEC
eb98e33a85 fix(Webhook): throw an error if no token is available when it's required (#5798) 2021-06-10 17:05:45 +01:00
Shubham Parihar
e0ab836b2d feat: add new APIErrors (#5794) 2021-06-10 17:05:37 +01:00
SpaceEEC
ea0e06f980 fix(ClientPresence): produce valid activities for set presences (#5799) 2021-06-10 17:05:27 +01:00
SpaceEEC
68f7aebcaf fix(BitField): ensure missing returns an array of strings (#5795) 2021-06-10 17:05:17 +01:00
Souji
a1f763ee75 refactor(Guild): remove region from guild and manager methods (#5766) 2021-06-10 15:09:57 +01:00
u9g
fbcbb29884 feat(Util): allow array for StringOptions' char (#5566)
Co-authored-by: Voltrex <62040526+VoltrexMaster@users.noreply.github.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Papaia <43409674+papaia@users.noreply.github.com>
Co-authored-by: Noel <icrawltogo@gmail.com>
2021-06-10 10:24:45 +01:00
Shubham Parihar
eb0291d9a5 feat(GuildAuditLogs): make #target a channel for channel related logs (#5781)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-06-10 10:24:36 +01:00
ckohen
35781597d0 fix(ApiMessage): only pass objects as options directly (#5793)
* fix(ApiMessage): only pass objects as options directly

* refactor: inline if with ternary
2021-06-10 08:41:01 +01:00
Austrian
35c2225f50 docs(Messages): fix examples in messages after changes in #5758 (#5791) 2021-06-09 19:33:07 +01:00
Jiralite
4511624e79 docs(ApplicationCommand): Typos in ApplicationCommandPermissionData (#5789) 2021-06-09 19:32:49 +01:00
Amish Shah
c6aeebb18d feat(Sharding*): contexts for broadcastEval (#5756)
* feat(ShardClientUtil): add parameterList to broadcastEval

* feat(ShardingManager): add parameterList to broadcastEval

* chore: update typings

* refactor(Sharding*): use BroadcastEvalOptions

* chore: update typings

* docs: use serializable instead of stringifiable

* refactor: don't set broadcastEval default context

Co-authored-by: Antonio Román <kyradiscord@gmail.com>

* chore: fix inaccuracy in typings

* refactor(Sharding*): remove string-based broadcastEval

* fix(ShardingManager): incorrect usage of _broadcastEvalRaw

* refactor(ShardingManager): remove unnecessary method

* refactor(Sharding*): type check the eval script

* fix(ShardingManager): return Promise rejection rather than throwing an error

Co-authored-by: SpaceEEC <spaceeec@yahoo.com>

* chore: fix typings

Co-authored-by: SpaceEEC <spaceeec@yahoo.com>

Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-06-09 18:14:33 +01:00
Amish Shah
7b2e12b102 feat(Voice): implement support for @discordjs/voice (#5402) 2021-06-09 14:21:19 +01:00
monbrey
c4f1c75efa feat: general component improvements (#5787) 2021-06-09 13:59:12 +01:00
Kevin
0156f693e0 fix(BitField): throw an error if bit to resolve is undefined (#5565)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-06-09 13:56:40 +01:00
Jan
0139e102e3 docs(GuildMemberManager): fix docs for #search() (#5784) 2021-06-09 13:15:53 +01:00
Ishmaam Khan
e798fb720e feat(GuildChannelManager): add 'fetch' method (#4966)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Avocado <43632131+Awoocado@users.noreply.github.com>
2021-06-09 13:12:33 +01:00
Adrian Castro
0467a9075f refactor: enforce single param on sending/editing methods (#5758)
Co-authored-by: ckohen <chaikohen@gmail.com>
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-06-09 13:12:16 +01:00
Adam Gauthier
dda5ee2e9f refactor: guildAvailable, typingStop from Constants (#4861)
Both of these events no longer exist and should not be exposed in
Constants. Typings have been adjusted to correspond to Constants.Events.
2021-06-09 10:43:57 +01:00
Jan
ae78a336e1 fix: remove remnants of awaitMessageComponentInteractions (#5783) 2021-06-09 08:45:34 +01:00
Ven
16f261e773 feat(Rest): optional ratelimit errors (#5659)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-06-09 08:45:04 +01:00
monbrey
c2b3ed09a0 feat: promisified single interaction collection (#5770) 2021-06-08 20:52:27 +01:00
Kevin
32d8c8ba94 docs: CommandInteraction#channelID is type of Snowflake (#5776) 2021-06-08 14:16:37 +01:00
Nordiago
84e5b075b4 refactor(Interactions): move Structures import out of switch block (#5763) 2021-06-08 14:16:05 +01:00
Shubham Parihar
e980948de5 fix(*): add missing imports for custom errors (#5767) 2021-06-07 13:09:43 +01:00
meister03
d1c5b6fe9e fix(ShardingManager): client error event cannot be emitted (#5559)
Co-authored-by: monbrey <rsm999@uowmail.edu.au>
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-06-07 13:09:23 +01:00
Souji
65dc00f321 feat(Message): applicationID for interaction responses (#5765) 2021-06-07 09:58:38 +01:00
Souji
bf191df9c0 feat(Client): make use of with_expiration in #fetchInvite (#5764) 2021-06-07 09:58:26 +01:00
Shubham Parihar
4567cd4ca2 docs(InteractionDeferOptions): correctly define the typedef (#5769) 2021-06-07 09:33:12 +01:00
monbrey
657635c1c0 fix: add components to MessageOption typedefs (#5768) 2021-06-07 09:32:50 +01:00
ckohen
dec191aa1e feat(Interactions): add InteractionWebhook for better internals (#5712) 2021-06-06 00:41:23 +01:00
Rodry
1d57754d46 fix(Interaction): add missing types and fix docs lists (#5762)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-06-05 21:05:27 +01:00
Shubham Parihar
2901fd595b fix(Webhook): #editMessage throws error when content is null (#5757) 2021-06-05 20:26:12 +01:00
SpaceEEC
f0dad26a5b fix(MessageComponentInteraction): correctly type defer method (#5760) 2021-06-05 20:25:39 +01:00
Shubham Parihar
f7e420bf29 docs: add new guild features (#5755) 2021-06-05 11:04:56 +01:00
monbrey
c6696d8399 types: extend MessageComponentInteractionCollector correctly (#5752) 2021-06-05 11:04:31 +01:00
TheMaestroo
cf224560bc fix(RoleManager): bug in #create (#5730)
Co-authored-by: ckohen <chaikohen@gmail.com>
2021-06-05 07:14:44 +01:00
monbrey
cbd7f2b9aa feat(MessageComponents): clickybois (MessageButton, MessageActionRow, associated Collectors) (#5674)
Co-authored-by: Vicente <33096355+Vicente015@users.noreply.github.com>
Co-authored-by: Shubham Parihar <shubhamparihar391@gmail.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: BannerBomb <BannerBomb55@gmail.com>
Co-authored-by: Arechi <22101241+Arechii@users.noreply.github.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-06-04 16:49:46 +01:00
Shubham Parihar
df9b67894a docs(Message): fix content param in #edit not showing as nullable (#5748) 2021-06-03 23:08:40 +01:00
iCrawl
43fc40e9b4 types: fix awaitReactions typings for returned collection 2021-06-03 20:29:02 +02:00
Shubham Parihar
a2f0c11474 fix(Message): update typings and docs related to #edit (#5745)
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
2021-06-03 19:18:13 +01:00
Rodry
ff4d6dded5 types: change remaining string IDs to Snowflakes (#5737) 2021-06-03 19:17:31 +01:00
Casper
3e9ce35023 fix(Typings): add missing typings for HttpError -> requestData (#5742)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-06-03 19:17:05 +01:00
SpaceEEC
99e2ca408b debug(WebSocketShard): emit intents used in identify (#5744) 2021-06-03 16:18:21 +01:00
Vlad Frangu
db0d7d4ea8 feat(Esm): use gen-esm-wrapper instead of manually making the file (#5700) 2021-06-03 16:01:49 +01:00
Jan
b317d86a93 docs: all the missing object -> Object changes (#5738) 2021-06-03 15:57:46 +01:00
Jan
bfe01b52ab fix(MessageEmbed): import custom RangeError class (#5740) 2021-06-03 15:54:19 +01:00
Justin
02b3cca522 chore: update the color of the discord.js server badge (#5739)
This uses the hex code 5865F2, which is the new blurple of Discord.
2021-06-03 15:53:51 +01:00
Vlad Frangu
ef92339d07 feat(Rest): show the data that is sent to Discord when an errors occurs (#5701) 2021-06-03 09:35:09 +01:00
Shubham Parihar
af2fad9473 fix(CommandInteraction): cmds with no options throw error (#5734) 2021-06-03 09:34:40 +01:00
Shubham Parihar
fdad140997 feat(CommandInteraction): make options a collection (#5705) 2021-06-02 17:44:50 +01:00
Lupa
5141ea4f06 fix(CommandInteraction): channel type should be text based channels (#5690)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-06-02 11:05:35 +01:00
Andreas Clausen
d21e6af1d2 fix(GuildMemberManager): allow moving members to any non-text channel (#5681) 2021-06-02 10:57:04 +01:00
Shubham Parihar
678b7da5b3 docs: remove traces of StringResolvable (#5727) 2021-06-02 10:55:56 +01:00
Shubham Parihar
086c3f0799 fix: interfaces not importing due to re-export of Snowflake (#5723)
Co-authored-by: Noel <icrawltogo@gmail.com>
2021-06-02 01:01:59 +01:00
Jan
53d952a4ce refactor: remove _roles from pseudo-managers (#5721) 2021-06-01 22:35:11 +01:00
Souji
7b85a7259f feat(*): enforce strings (#4880)
BREAKING CHANGE: Removes all Resolvables for only string inputs

Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-06-01 16:31:49 +01:00
monbrey
66a6a1fced types(Snowflake): export the type (#5722) 2021-06-01 07:02:59 +01:00
iCrawl
7f0d93a2da chore: pull config files out of package.json 2021-06-01 00:06:52 +02:00
SpaceEEC
b212b64214 feat(Message): allow editing files into messages (#5718) 2021-05-31 20:56:26 +01:00
Shubham Parihar
256d1b0dfc docs(Webhook): update typings and docs for #editMessage (#5713) 2021-05-31 20:56:08 +01:00
Noel
76db642543 types: use Snowflake type (#5717)
* types: use Snowflake type

* Update typings/index.d.ts

Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>

Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
2021-05-31 20:55:18 +01:00
Souji
d52bcd46ec feat: easier guards for channelUpdate (#5716)
* feat: easier guards for channelUpdate

* typings: more explicit typings for client events involving channels

* docs: event doc consistency regarding channel types
2021-05-31 16:38:37 +01:00
iCrawl
652c683da7 ci: fix publish action 2021-05-31 03:23:48 +02:00
dependabot[bot]
0b169792af chore(deps): bump ws from 7.4.5 to 7.4.6 (#5707)
Bumps [ws](https://github.com/websockets/ws) from 7.4.5 to 7.4.6.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.4.5...7.4.6)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-30 23:04:12 +01:00
Jeroen Claassens
91efe5a611 ci(publish-dev): improve resolving of next version (#5710) 2021-05-30 23:03:35 +01:00
iCrawl
01bb2ac97b ci: publish action for automatic master releases 2021-05-30 21:33:02 +02:00
Adrian Castro
6567ba821a fix(PermissionOverwrites): fix typo in typedef jsdoc (#5704) 2021-05-30 18:59:51 +01:00
Jan
48d6850d9a feat: add support for fetching multiple guilds (#5472)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Noel <icrawltogo@gmail.com>
2021-05-29 22:37:45 +01:00
Vanished
e300518597 Added Certified Moderator badge flag. (#5642)
Co-authored-by: Shubham Parihar <shubhamparihar391@gmail.com>
2021-05-29 15:29:29 +01:00
ckohen
0b179c87f1 cleanup(Client): guard emitting GMU and PU on user updates (#5655) 2021-05-29 15:28:41 +01:00
Ed L
7d7d2a53b1 docs(Message): add example for message.reply (#5332)
Co-authored-by: Papaia <43409674+papaia@users.noreply.github.com>
2021-05-29 15:27:33 +01:00
Rodry
47bbdf415c docs(TextChannel): warning about setRateLimitPerUser NewsChannel (#5403) 2021-05-29 15:26:30 +01:00
Antonio Román
a73a5cf914 fix(Types): make event listeners accept async callbacks (#5602) 2021-05-29 12:28:21 +01:00
Jan
add924cdb2 docs: fix InteractionDeferOptions typedef (#5694) 2021-05-29 12:24:28 +01:00
Shubham Parihar
c89bdd7566 fix(GuildEmojiRoleManager): bug in #remove (#5666) 2021-05-28 11:09:51 +01:00
SpaceEEC
b90b0c3cfa fix(ApplicationCommandOptionData): options property should be itself (#5679)
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
2021-05-27 12:14:13 +01:00
Rodry
7d9818e21a docs(ColorResolvable): Add Fuchsia to ColorResolvable typedef (#5676)
Also moved DARKER_GREY to its place in the Colors export on Constants.js
2021-05-27 12:13:58 +01:00
Shubham Parihar
3fe7add2c5 feat(Guild): add the new nsfw_level property (#5660)
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
Co-authored-by: Noel <icrawltogo@gmail.com>
2021-05-27 12:12:52 +01:00
Shubham Parihar
b40027beb9 types(PermissionOverwriteOptions): remove unused interface (#5651) 2021-05-27 12:12:44 +01:00
SpaceEEC
9f491ffeb9 fix(APIMessage): document Interaction as valid MessageTarget (#5678) 2021-05-27 11:54:42 +01:00
Shubham Parihar
840ad0a35a fix(Message): bug in #suppressEmbeds due to #5612 (#5644) 2021-05-26 12:09:35 +01:00
Shubham Parihar
3589e0f442 docs: add new typedef to properly doc InteractionReplyOptions (#5632) 2021-05-26 12:09:25 +01:00
Jan
ed593c91fb feat: InteractionDeferOptions (#5641) 2021-05-26 12:09:14 +01:00
iCrawl
5f6ec2211d fix: lint-staged for typescript files 2021-05-26 11:09:56 +02:00
Noel
3ac6d550ca chore: fix husky install (#5671) 2021-05-25 21:36:26 +01:00
Matt (IPv4) Cowley
0ca200f322 chore: set minimum npm version (#5663) 2021-05-24 19:58:42 +01:00
cherryblossom000
b376f31af9 fix(DataResolver): fix circular dependency error with GuildTemplate (#5622) 2021-05-22 21:40:44 +02:00
Antonio Román
14c6802438 refactor(Deps): use async-queue package (#5662) 2021-05-22 21:10:20 +02:00
Noel
f8703e3e59 chore: general cleanup (#5661) 2021-05-22 11:40:30 +02:00
Jan
03256bd9f8 fix(ApplicationCommandManager): limit permission methods to guilds (#5613)
* fix(ApplicationCommandManager): limit permission methods to guilds

* docs: add warn tags

* feat: improve error message

* style: eslint

* chore: make error name more verbose
2021-05-22 10:02:24 +02:00
Shubham Parihar
56d44fbf1c fix(CommandInteraction): update typings and docs for #editReply (#5630) 2021-05-22 09:58:06 +02:00
Casper
38bf24a6e5 chore(Colors): use new Discord colors (#5624)
* chore(Colors): use new Discord colors

* chore(Colors): add fuchsia color

* chore(Colors): add fuchsia color to ColorResolvable
2021-05-22 09:52:48 +02:00
Shubham Parihar
c8d20a456b docs(Guild): add proper punctuation to #fetchOwner jsdoc (#5645) 2021-05-18 23:21:57 +02:00
Vlad Frangu
ab82cafcde docs: correct casing of object -> Object in AuditLogChange (#5636) 2021-05-15 23:25:06 +02:00
Juruel Keanu Lorenzo
a6079bc9ce fix(ApplicationCommand): return string equivalent of ApplicationCommandOptionType (#5617) 2021-05-15 00:40:41 +02:00
monbrey
68b40dd91d feat(CommandInteraction): ephemeral followup messages (#5618)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-05-15 00:40:23 +02:00
monbrey
c7334363b3 fix: resolve emoji in Message#react (#5614) 2021-05-13 17:48:07 +02:00
monbrey
73f4114f59 fix: typo in GuildMemberManager (#5616) 2021-05-12 17:51:50 +02:00
Souji
f831872125 feat(GuildChannel): createInvite target options (#5514)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: Advaith <advaithj1@gmail.com>
2021-05-11 22:25:09 +02:00
anandre
ff2f7372f2 feat(MessageEmbed): remove normalizeField validation (#5459) 2021-05-11 22:24:35 +02:00
Vicente
d219ecd05c docs(GuildChannelManager): add stage option (#5608) 2021-05-11 22:23:58 +02:00
monbrey
2e2464bf07 feat(GuildMemberManager): extend API coverage (#4872)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-05-11 22:23:42 +02:00
Synbulat Biishev
668cd471a1 fix(Client) added a forgotten keyword "this" (#5598) 2021-05-11 22:23:27 +02:00
Shubham Parihar
58763b0e91 feat(GuildChannel): make createOverwrite and updateOverwrite not dependent on cache (#5489)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-05-11 22:23:09 +02:00
SpaceEEC
74e97ef91b fix(Message): editing with MessageEmbed or APIMessage (#5612) 2021-05-11 22:22:48 +02:00
Nojay-Games
2eac84296b fix(VoiceReceiver): fix memory leak (#5609)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-05-11 13:33:45 +02:00
monbrey
c56c4a8dc8 feat(MessageManager): extend API coverage (#4869)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: izexi <43889168+izexi@users.noreply.github.com>
Co-authored-by: Advaith <advaithj1@gmail.com>
2021-05-11 00:32:15 +02:00
Shubham Parihar
7ce741dacd feat(Message): add ReplyMessageOptions for #reply (#5296) 2021-05-10 23:58:19 +02:00
uhKevinMC
31b4390042 feat(ShardingManager): add options typings (#5583)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-05-10 23:54:32 +02:00
Shubham Parihar
2345c6db0c typings(WebhookMessageOptions): omit reply instead of replyTo (#5610) 2021-05-10 22:48:32 +02:00
Ishmaam Khan
d455cb65a6 feat(GuildChannel#clone): support for position property (#5236) 2021-05-10 12:41:14 +02:00
MBR-0001
6d09160f5b feat: GuildBanManager (#5276)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
Co-authored-by: izexi <43889168+izexi@users.noreply.github.com>
Co-authored-by: Shubham Parihar <shubhamparihar391@gmail.com>
2021-05-10 12:35:25 +02:00
Rodry
4a06dd1295 docs(MessageEmbed): MessageEmbedOptions typedef (#5466)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2021-05-10 12:31:35 +02:00
ckohen
eaf332f83f refactor(*): return the invalid element when erroring from Array (#5314) 2021-05-10 12:28:36 +02:00
ckohen
1ecda83da7 refactor(MessageOptions): move replyTo to reply#messageReference and add failIfNotExists (#5298)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Shubham Parihar <shubhamparihar391@gmail.com>
2021-05-10 12:27:36 +02:00
Justin
533c2471c2 docs: update invite link, change version in the intro (#5592) 2021-05-10 10:57:20 +02:00
Advaith
135abccd9c feat(APIRequest): support setting global headers in HTTPOptions (#5586)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-05-10 10:56:56 +02:00
monbrey
1398431bca feat(Message): replace referencedMessage with fetchReference (#5577) 2021-05-10 10:56:46 +02:00
Jan
ca9e5a0ee1 feat(Message): allow removing attachments (#5557) 2021-05-10 10:56:33 +02:00
Adrian Castro
3392eb7de2 fix(ApplicationCommandManager): fix typo in JSDoc (#5603) 2021-05-10 10:55:58 +02:00
dependabot[bot]
0e40f9b868 chore(deps): bump hosted-git-info from 2.8.8 to 2.8.9 (#5595)
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-08 01:25:43 +02:00
Jan
9f74f95f69 feat: add support for application command events (#5596) 2021-05-08 01:25:27 +02:00
Amish Shah
452ac55a28 chore: update package author email address 2021-05-07 20:15:02 +01:00
dependabot[bot]
b456ff1090 chore(deps): bump lodash from 4.17.20 to 4.17.21 (#5594)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-07 17:26:33 +02:00
dependabot[bot]
043a25992a chore(deps): bump handlebars from 4.7.6 to 4.7.7 (#5593)
Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.7.6 to 4.7.7.
- [Release notes](https://github.com/wycats/handlebars.js/releases)
- [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/master/release-notes.md)
- [Commits](https://github.com/wycats/handlebars.js/compare/v4.7.6...v4.7.7)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-07 17:24:24 +02:00
Jan
f7643f7bbe feat: interactions (#5448)
Co-authored-by: izexi <43889168+izexi@users.noreply.github.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Advaith <advaithj1@gmail.com>
Co-authored-by: Shiaupiau <stu43005@gmail.com>
Co-authored-by: monbrey <rsm999@uowmail.edu.au>
Co-authored-by: Tiemen <ThaTiemsz@users.noreply.github.com>
Co-authored-by: Carter <carter@elhnet.net>
2021-05-07 17:22:33 +02:00
Antonio Román
af00ec8970 refactor(Sticker): rename Snowflake variable (#5575) 2021-04-30 22:32:52 +02:00
Jan
f830eb7101 fix(Sticker): file renamed to SnowflakeUtil (#5573) 2021-04-30 22:26:55 +02:00
Junseo Park
026afc2c1a feat(Sticker): added Sticker (#4909)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: monbrey <rsm999@uowmail.edu.au>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: Tristan Guichaoua <33934311+tguichaoua@users.noreply.github.com>
Co-authored-by: Advaith <advaithj1@gmail.com>
Co-authored-by: izexi <43889168+izexi@users.noreply.github.com>
Co-authored-by: Mestery <48163546+Mesteery@users.noreply.github.com>
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
2021-04-30 21:53:25 +02:00
izexi
63398d6ae4 feat(Webhook): add 'fetchMessage' method (#5530) 2021-04-30 21:49:32 +02:00
Souji
d9fa180cf9 feat(GuildManager): allow system channel flags in create (#5504) 2021-04-30 21:48:57 +02:00
Souji
4866e2672f feat(Guild): setChannelPositions parent, lockPermissions keys (#5507)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-04-30 21:48:51 +02:00
ckohen
a5d41c9f6c refactor(RequestHandler): use x-ratelimit-reset-after when present (#5511) 2021-04-30 21:48:37 +02:00
Robert Coe
cdcc50f365 refactor: remove error-silencing try/catch on event handler imports (#5542) 2021-04-30 21:48:19 +02:00
Souji
5397021efb fix(Emoji): name can be null (#5513) 2021-04-30 21:47:15 +02:00
monbrey
c9b53539d5 refactor(Sharding): use options objects (#5510)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-04-30 21:46:20 +02:00
Souji
116ecf246e feat(Webhook): sourceGuild, sourceChannel, improve owner (#5508) 2021-04-30 21:44:23 +02:00
Shubham Parihar
9572521e3c fix(GuildMemberRoleManager): unable to remove roles when passed an array (#5556) 2021-04-30 21:43:14 +02:00
Souji
8a059cccb8 feat(Guild): allow description and features in edit (#5505) 2021-04-27 09:36:48 +02:00
Souji
2c54f72670 chore(UserFlags): remove system flag (#5517) 2021-04-25 18:59:13 +02:00
Skick
705d7b36af docs(VoiceState): #setRequestToSpeak and #setSuppressed returns a Promise instead of void (#5558) 2021-04-23 18:24:22 +02:00
Jan
1b827fe136 refactor: add discord-api-types as a dependency (#5539) 2021-04-23 02:18:07 +02:00
GoldElysium
0d68ca8eb9 fix: typings for 'Message' (#5518) 2021-04-21 02:44:19 +02:00
Yoshida Tomio
cb50241e6f fix(HTTPOptions): change default value in jsdoc to 8 (#5547) 2021-04-20 19:37:45 +02:00
Advaith
f1c0c043b5 feat(Util): make cleanContent take a channel instead of a message (#5535) 2021-04-18 18:53:09 +02:00
Souji
596832371c feat(Guild): nsfw guilds (#5525)
Co-authored-by: Advaith <advaithj1@gmail.com>
2021-04-18 18:52:53 +02:00
Advaith
1be67b8851 feat(Guild): replace owner with fetchOwner (#5480) 2021-04-16 06:39:12 +02:00
PhaxeNor
3c175cb511 feat(GuildFeatures): added the new screening features (#5328)
Co-authored-by: Noel <icrawltogo@gmail.com>
2021-04-15 02:07:15 +02:00
anandre
936516cb9c docs(GuildChannelManager): fix type options in description (#5440) 2021-04-15 00:39:12 +02:00
monbrey
7b161f93a0 feat(MessageAttachment): support for #contentType (#5481)
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
2021-04-15 00:38:45 +02:00
Jan
164ddf668f refactor: rename Snowflake to SnowflakeUtil (#5502) 2021-04-15 00:37:54 +02:00
Souji
e9bf206d88 fix(GuildAuditLogsEntry): executor can be missing (#5500) 2021-04-15 00:37:45 +02:00
Souji
fe93a7e084 feat(SysChanFlags): new flag and rename in sync with client (#5506) 2021-04-15 00:37:32 +02:00
Jan
207735cedc feat: move internal regular expressions to static properties (#5384) 2021-04-15 00:36:35 +02:00
Bryan Chen
900e57657e fix(typings): update GuildMemberRoleManager typings to match implementation (#5497) 2021-04-15 00:35:04 +02:00
GrapeColor
565d7b3747 fix(MessageMentions#channels): Fix type of channels of mentions (#5370) 2021-04-15 00:34:13 +02:00
Kevin Novak
32b0d71af7 feat(typings): add ShardingManager.shardList to type definitions (#5446) 2021-04-15 00:33:59 +02:00
Ven
7c49612d4b feat(typings): explicitly type PremiumTier and Collectors (#5458) 2021-04-15 00:33:35 +02:00
Shubham Parihar
fa5a37e51a fix(Resolvables): valid resolvables throw error when uncached (#5495)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2021-04-15 00:32:08 +02:00
Yoshida Tomio
b380f16367 chore(ci): Update actions/setup-node action to v2 (#5527) 2021-04-15 00:31:32 +02:00
Bread
b710a43232 fix(GuildChannel): check for community required channels in GuildChannel#deletable (#5170)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2021-04-15 00:31:08 +02:00
Sugden
aff3625d4f fix(GuildMember): correctly check for premium_since (#5312) 2021-04-15 00:30:45 +02:00
Shubham Parihar
eb43ce4d4f feat: make changes to PresenceData typings and docs (#5317)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2021-04-14 14:53:54 +02:00
Advaith
c9107e35fa feat(MessageTypes): add 16 and 17 (#4685) 2021-04-14 14:53:30 +02:00
izexi
0ba2bcb545 feat(GuildMemberManager): add 'search' method (#4154)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2021-04-14 14:53:01 +02:00
Amish Shah
eec7cf7634 feat: stage channels (#5456)
* feat: add stage channel type

* feat: initialise stage channel structure

* feat: add STAGE_MODERATOR permissions bitfield

* fix: typo in permissions

* fix(Channel): type selection logic

* feat: add rtcRegion to StageChannel and VoiceChannel

* feat: rtc region editing for stage and voice channels

* feat: stage channel userLimit

* feat: add stage channels to exports

* feat: add computed properties to stage channel

* feat(VoiceState): include stage channel in docs

* feat: allow ability to join stage channels

* feat(StageChannel): join and leave methods

* docs: add StageChannel link in GuildChannel docs

* feat(VoiceState): suppress and requestToSpeakTimestamp

* feat(StageChannel): setRequestToSpeak

* refactor(StageChannel): update setRequestToSpeak

* feat(VoiceState): add moveToSpeakers and moveToAudience

* feat(VoiceState): add methods to move in/out of speakers

* feat(VoiceState): add stage channel sanity checks

* feat(Permissions): add REQUEST_TO_SPEAK

* feat(VoiceState): simpler methods

* docs(VoiceState): add documentation for new methods

* refactor: remove unused error message

* chore: remove debug statements

* chore: revert changes to package-lock.json

* docs(VoiceState): clarify suppress

* docs(VoiceState): add missing @type param

* feat(StageChannel): remove nsfw property

* fix(VoiceState): check permissions in channel

Co-authored-by: Advaith <advaithj1@gmail.com>

* fix(VoiceState): instantiate error with new

Co-authored-by: BannerBomb <BannerBomb55@gmail.com>

* refactor(VoiceState): more readable API route builder

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>

* style(VoiceState): fix lint errors

* docs(VoiceState): add example usage for new methods

* docs: setRTCRegion examples

* chore: update typings

* fix(VoiceState): calculate permissions for self

* refactor(VoiceState): tidy up implementation

* Update src/structures/VoiceState.js

Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>

* refactor: vaporox's suggestions

* style(VoiceState): fix linter errors

* chore: update typings

* chore: remove unused error message

* refactor(VoiceState): use optional chaining

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>

* chore: move getters below constructor in typings

* refactor(StageChannel): optional chaining

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>

* style(VoiceState): fix lint errors

* docs: fix incorrect types

Co-authored-by: izexi <43889168+izexi@users.noreply.github.com>

* Update src/structures/VoiceChannel.js

Co-authored-by: izexi <43889168+izexi@users.noreply.github.com>

* Update src/structures/VoiceChannel.js

Co-authored-by: izexi <43889168+izexi@users.noreply.github.com>

* refactor(VoiceState): use optional chaining

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>

* refactor(StageChannel): remove permission override check in joinable

* refactor: make ChannelTypes a proper enum

* Use createEnum

Co-authored-by: izexi <43889168+izexi@users.noreply.github.com>

* chore: remove unused code from Constants

* refactor(StageChannel): remove unnecessary getters

* chore: update typings

* refactor: introduce BaseGuildVoiceChannel class

* refactor(VoiceChannel): reduce code duplication

* feat: export BaseGuildVoiceChannel

* chore: update typings

* docs: fix typos

* refactor: move setRTCRegion to BaseGuildVoiceChannel

* feat(VoiceState): remove permission checks

* chore: update typings

* Apply suggestions from code review

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>

* chore: update esm exports and typings

* Update src/structures/VoiceState.js

Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>

Co-authored-by: Advaith <advaithj1@gmail.com>
Co-authored-by: BannerBomb <BannerBomb55@gmail.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Jan <66554238+vaporox@users.noreply.github.com>
Co-authored-by: izexi <43889168+izexi@users.noreply.github.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-04-14 13:35:55 +01:00
Advaith
63ff6a07eb feat(Activity): add missing fields (#4984)
Co-authored-by: Jan <66554238+Vaporox@users.noreply.github.com>
2021-04-06 23:03:45 +02:00
Souji
599f0f5cef docs(ClientUser): #setPresence does not return a promise (#5485) 2021-04-05 23:26:28 +02:00
Carson M
2b52cdc915 fix(Voice): only skip undocumented voice packet byte if present (#5309)
* fix(Voice*): Only skip undocumented byte if present

* fix linting errors
2021-04-05 08:56:48 +01:00
izexi
67025e63e4 fix: typings for 'WebhookMessageOptions' (#5476) 2021-04-04 23:17:19 +02:00
Souji
e848d25c86 docs(GuildChannel): #members add cached spec, include voice (#5385) 2021-04-03 20:01:54 +02:00
Jan
0a2e0c0e3e refactor(Guild): remove fetchVanityCode() (#5471) 2021-04-03 20:01:14 +02:00
Souji
8023250ee7 fix(IntegrationApplication): add missing export to index.js (#5475) 2021-04-03 20:00:41 +02:00
izexi
7cabc1c490 feat(Webhook): add '(edit|delete)Message' methods (#5223) 2021-04-03 15:06:18 +02:00
Jan
404ce57bcc fix(ApplicationFlags): export class (#5465) 2021-04-03 15:01:52 +02:00
Shubham Parihar
b82ea98c71 chore: allow three more types of commit msgs (#5470) 2021-04-03 15:01:35 +02:00
Shubham Parihar
a4d09ab0a8 types: remove typings for Client#disconnect event (#5469) 2021-04-03 15:01:20 +02:00
Amish Shah
3af8179878 fix(Voice): disconnect if voice channel not cached (#5467) 2021-04-02 12:53:49 +02:00
Souji
6c6b1053b7 fix(InviteDelete): guild can be missing (#5457) 2021-03-31 22:31:37 +02:00
Alec Woods
9d2d60691e feat(Rest): better handling of global rate limit and invalid request tracking (#4711)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Tristan Guichaoua <33934311+tguichaoua@users.noreply.github.com>
Co-authored-by: Papaia <43409674+Papaia@users.noreply.github.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-03-31 21:56:58 +02:00
Jan
06e9d86cb3 feat(Application): application flags (#5147)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2021-03-31 21:55:12 +02:00
Shubham Parihar
dedf43288e docs(BanOptions): make days description more clear (#5327) 2021-03-29 05:52:41 +02:00
Carter
685b2604e4 docs: update docs and examples for #4879 (#5323)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-03-29 05:51:42 +02:00
Souji
624a4464ca feat(WebSocketManager): let identify throw on depleted limits (#5283)
* feat(WebSocketManager): let identify throw on depleted limits

* chore: remove WSM#sessionStartLimit
2021-03-28 15:33:31 +02:00
Jan
8d14ee3540 refactor(Collector): make endReason a getter (#5271) 2021-03-28 15:29:39 +02:00
SynysterZV
09846c725b chore: update d.js guide FAQ link (#5176) 2021-03-28 15:29:03 +02:00
Souji
43bd568f1c fix(ReactionUserManager): remove before query option (#5281) 2021-03-28 15:28:33 +02:00
Sugden
ca5f371f1a typings(PermissionOverwrites): use correct parameter type for resolveOverwriteOptions (#5302) 2021-03-28 15:28:08 +02:00
Souji
62ba2499e0 docs(GuildMember): document owner override in permissions getter (#5320) 2021-03-28 15:27:32 +02:00
Carter
077892645b fix(GuildManager): add missing toString() on Permission#resolve fns (#5324) 2021-03-28 15:27:16 +02:00
Carter
aac6275300 typings(MessageReaction): allow message to be partial (#5303) 2021-03-28 15:26:44 +02:00
Souji
e7c4f3672e fix(GuildChannel): regression on default channel type (#5251) 2021-03-28 15:24:41 +02:00
Advaith
1c8b1096c6 docs(ChannelManager): fetch can return Promise<null> (#5422) 2021-03-28 15:24:19 +02:00
BannerBomb
8411b9e142 fix(Guild/GuildChannel): methods reason arg usage (#5419) 2021-03-28 15:23:32 +02:00
nopeless
4099c28776 test: client should destroy (#5353)
Co-authored-by: Adrian Paschkowski <leiter04@gmail.com>
2021-03-28 15:22:04 +02:00
Tyler Resch
941e36f48a docs(Guild): clarified description of guild.features (#5352)
- Removed the phrase "partnered guilds" from the description of `guild.features`

**Reasoning:**
To prevent the assumption that **any** `guild.features` will be indicative of `guild.partnered`.
2021-03-28 15:21:32 +02:00
Jan
f46940228e feat: jsdelivr default file support (#5424) 2021-03-22 21:31:55 +01:00
Jan
d744e51c1b fix(Role): pass Permissions class, not the bitfield (#5321) 2021-02-22 01:03:21 +01:00
Sugden
ee5bc1a5c4 refactor: switch api and gateway to V8 (#4879)
Co-authored-by: Jan <66554238+Vaporox@users.noreply.github.com>
2021-02-11 18:10:35 +01:00
ckohen
ae3c3d80ee feat(Client): add InviteGenerationOptions#additionalScopes (#5215)
Co-authored-by: izexi <43889168+izexi@users.noreply.github.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2021-02-10 15:52:44 +01:00
BannerBomb
56d8b445ed fix(WebSocketShard): key name in WebSocketShard#_send. (#5304)
I just changed an incorrect key name that was introduced in Pull Request #3722. When destroying the websocket from the WebSocketShard#_send method it's using `close` as the key name instead of `closeCode`
2021-02-10 15:48:16 +01:00
Souji
cee6cf70ce chore(*): streamline issue and PR templates and redirects (#5269)
* chore(*): streamline issue and PR templates and redirects

* chore: reword redirect to not sound apologetic

* chore: reintroduce one-liner to use discord for questions

* chore: ae consistency
2021-01-27 20:31:47 +01:00
Alon Livne
09d1f2f18f feat(ReactionCollector): event create (#4108)
* fix(Typing): setSpeaking public

* feat(ReactionCollector): create event, close #2844

* Revert "fix(Typing): setSpeaking public"

This reverts commit ccc0e0cc76.
2021-01-27 12:13:15 +01:00
Shubham Parihar
640a6633b1 docs(BaseManager): fix a typo in #resolveID description (#5180)
* fix(BaseManager): #resolveID returns null for non-numeric string arg

* docs(BaseManager): fix a typo in #resolveID description
2021-01-27 11:30:08 +01:00
Antonio Román
a6bc39d3c6 fix(ApiMessage): remove resolve() from typings (#5241) 2021-01-27 11:28:26 +01:00
Matt (IPv4) Cowley
aaed72b723 refactor(Client): remove fetchAllMembers option (#5257)
* feat(Client): remove fetchAllMembers option & logic

* Cleanup

* Missed type change
2021-01-27 11:27:50 +01:00
Antonio Román
41bd6c2717 fix(GuildChannel): overload permissionsFor and BaseManager#resolve[id] (#5260)
* fix(GuildChannel): overload permissionsFor and BaseManager#resolve[id]

* fix(GuildChannel): GuildMessage and Role trigger non-null return
2021-01-27 11:27:01 +01:00
Papaia
9ffcd83027 docs(BitFields): remove string from BitFieldResolvable (#5122)
* refactor(BitFields): remove string from BitFieldResolvable

* docs(Client#generateInvite): fix indentation in example

* chore: resolve conflict

* refactor: revert breaking changes

Co-authored-by: Papaia <43409674+ItsPapaia@users.noreply.github.com>
2021-01-24 11:52:35 +01:00
Ishmaam Khan
5401b92aac refactor(GuildMember): remove GuildMember#hasPermission (#5152)
* refactor(GuildMember): remove GuildMember#hasPermission

* refactor(GuildEmoji): remove use for `GuildMember#hasPermission`

* typings: remove `GuildMember#hasPermission`
2021-01-24 11:50:58 +01:00
Kevin Novak
80e1afb654 types(RateLimitData): remove timeDifference property (#5208) 2021-01-24 11:49:26 +01:00
Alex
001676c7a9 feat(ShardingManager): Allow b-Eval/fetchClientValues on a specific shard when not all are ready (#5222)
Co-authored-by: BennyDiscord <46286597+BennyDiscord@users.noreply.github.com>
2021-01-24 11:49:15 +01:00
Jan
a33eed71af refactor(Util): remove convertToBuffer (#5237) 2021-01-24 11:48:03 +01:00
Carter
8bf76ffa52 chore: remove webpack from deploy workflow (#5253) 2021-01-24 11:47:20 +01:00
ckohen
f95f5dcd79 fix(GuildEmoji): check for cahnges to available in equals (#5201) 2021-01-22 19:18:06 +01:00
Shubham Parihar
0d5de4333d fix(VoiceConnection): make #dispatcher nullable (#5217) 2021-01-22 19:17:32 +01:00
monbrey
5ac3b57f9b feat(GuildChannel): support conversion between text and news (#5022)
* feat(GuildChannel): support conversion between text and news

* fix(Typings): add type to ChannelData

* fix(GuildChannel): use ChannelUpdate action handler to change class type

* Update src/structures/TextChannel.js

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>

* fix(Typings): re-use ChannelType from GuildCreateChannelOptions

* fix(Typings): only allow text-news conversion

* fix(Typings): exclude -> pick (vlads suggestion)

* fix(Typings): pick -> exclude in two other spots

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2021-01-22 18:03:02 +01:00
Zaid
98b1c58218 fix(Message): update getters to take null permissions into account (#5066)
* fix(Message): update message#delete

* refactor(Message): message#deletable avoid duplicate call

* Update Message.js

* fix(message): resolve syntax errors

* chore(message): resolve linting issues (death to the gh web panel)

* Update Message.js

* death to the github web panel

* Update src/structures/Message.js

Co-authored-by: Jan <66554238+Vaporox@users.noreply.github.com>

Co-authored-by: Jan <66554238+Vaporox@users.noreply.github.com>
2021-01-22 18:02:21 +01:00
izexi
eb28ee7905 fix(typings): return types for 'Webhook(Client)#send()' (#4876)
* feat(Typings): add 'APIRawMessage' interface

* fix(Typings): return type for WebhookFields#send()

* fix(Typings): types for APIRawMessage props

* refactor(Typings): exclude oauth props from API

* feat(Typings): add WebhookRawMessageResponse type

* refactor(Typings): use WebhookRawMessageResponse
2021-01-22 17:46:55 +01:00
Carter
c8ad52b89d chore: remove codeql job (#5231) 2021-01-22 17:45:40 +01:00
Souji
273e9557be feat(BitField): move problematic bit into the error message (#5228)
* feat(BitField): move problematic bit into the error message

* fix: remove intermediate constant
2021-01-22 17:44:50 +01:00
ElCholoGamer
764966e398 feat(ClientEvents): add tuple labels to event arguments (#5225) 2021-01-22 17:44:11 +01:00
Adrian Paschkowski
c4c817116f feat(GuildMember): #pending (#5121)
* Add GuildMember#isPending

* Rename is_pending to pending

* Improve jsdoc wording

* pending isn't nullable

* ??
2021-01-02 23:55:37 +01:00
Bread
e37160f4e3 fix(MessageEmbed): include author.name in length getter (#5167)
* fix(MessageEmbed): include `author.name` in length getter

* Update src/structures/MessageEmbed.js

Co-authored-by: Papaia <43409674+papaia@users.noreply.github.com>

* style: oxford comma

Co-authored-by: Papaia <43409674+papaia@users.noreply.github.com>

* refactor: es2020 syntax

Co-authored-by: Papaia <43409674+papaia@users.noreply.github.com>
2021-01-01 00:11:52 +01:00
Sugden
57b3ba425e chore: remove webpack from .*ignore files (#5171) 2021-01-01 00:10:56 +01:00
Mr¤KayJayDee
4e132f18c4 chore: bump LICENSE year (#5173) 2021-01-01 00:10:24 +01:00
Antonio Román
b0077dcd0c chore(Deps): remove setimmediate (#5159)
setimmediate is a browser polyfill, and since we do not support webpack anymore, there is no reason to keep it here.
2020-12-30 11:22:11 +01:00
Matt (IPv4) Cowley
8c2e6b70b8 refactor(Message): remove stored edit history (#5155) 2020-12-30 11:21:34 +01:00
ManEatingTapir
6a77453532 chore(RoleManager): change parameter of create to be one unnamed object (#5026)
* chore(RoleManager): change parameter of create to be one unnamed object

* chore(RoleManager): update src/managers/RoleManager.js

* chore(RoleManager): update typings/index.d.ts

* chore(RoleManager): update src/managers/RoleManager.js

Co-authored-by: Noel <buechler.noel@outlook.com>
2020-12-26 10:59:16 +01:00
ckohen
2aea7dd921 docs(MessageEditOptions): add the flags parameter (#5126) 2020-12-26 10:58:02 +01:00
Ishmaam Khan
2a0dcc5cae refactor: RoleManager (#5131)
* refactor(RoleManager): make use of `BaseManager#client`

* refactor(RoleManager): cool syntax

* refactor +1

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>

* refactor +2

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2020-12-26 10:57:34 +01:00
Jan
2c2249ee73 fix(Collection): toJSON() errors if the collection includes empty values (#5129) 2020-12-26 10:56:37 +01:00
dependabot[bot]
b19b8b593a chore(deps): bump node-notifier from 8.0.0 to 8.0.1 (#5145)
Bumps [node-notifier](https://github.com/mikaelbr/node-notifier) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/mikaelbr/node-notifier/releases)
- [Changelog](https://github.com/mikaelbr/node-notifier/blob/v8.0.1/CHANGELOG.md)
- [Commits](https://github.com/mikaelbr/node-notifier/compare/v8.0.0...v8.0.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-12-26 10:54:50 +01:00
cherryblossom000
40d77bacc3 types: make Client#voice non-nullable (#5148)
Because of the removal of browser support (#5113) Client#voice is always non-nullable.
2020-12-26 10:54:15 +01:00
Zaid
b8be7237b8 Create CODE_OF_CONDUCT.md (#5120)
* Create CODE_OF_CONDUCT.md

* chore: move coc into .github/
2020-12-18 06:24:25 +01:00
Ishmaam Khan
ffe31405ff feat(GuildEmojiManager): implement GuildEmojiManager#fetch (#4933)
* feat: GuildEmojiManager#fetch

* typings: GuildEmojiManager#fetch
2020-12-14 21:44:15 +01:00
anandre
be0f383568 docs(RoleManager): fetch description (#4920)
* Update fetch description

The `fetch` method does not support fetching multiple IDs, so the description is currently inaccurate.

* Update src/managers/RoleManager.js

Co-authored-by: Tristan Guichaoua <33934311+tguichaoua@users.noreply.github.com>

Co-authored-by: Tristan Guichaoua <33934311+tguichaoua@users.noreply.github.com>
Co-authored-by: Noel <buechler.noel@outlook.com>
2020-12-14 14:12:36 +01:00
monbrey
b2a6720477 revert: 5047 (#5050) 2020-12-14 13:58:21 +01:00
Noel
0a591a9697 feat(Browser): remove browser � (#5113) 2020-12-14 13:56:16 +01:00
X-Classified
5c4547e84d docs(TextBasedChannel): indicate that replyTo cannot be system (#5115) 2020-12-14 13:54:51 +01:00
Souji
d6234b764e feat(Role): role tags (#4628)
* feat(Role): role tags

* fix(RoleManager): fix js docs and mark nullable

* fix(Role): typings tags are be null, not undefined

* fix(Role): getters should actually return a bool

* fix(RoleManager): typo

* fix(Role): should always return a boolean

* fix(Gmrm): getter should return null

* fix(RoleManager): getters should return null

* fix: typing getters should return null

* fix(Role): docs grammar and consistency

* chore: prefer in operator over Reflect#has

* feat(GmRm): botRole getter

* fix(GmRm): use the actual properties

* feat(RoleManager): rem myRole in pref o botRoleFor

* fix(Role): remove obsolete is- getters

* fix:  checking tags after getter removal

* chore: identifier naming consistency

* chore: prefer explicit true type over boolean

* fix: typo

* feat(Integration): Add Integration#roles getter (#1)

* fix(RoleManager): remove bot check r:partials

* feat(RoleManager): robustness against uncached u

* docs: possibly undefined

Co-authored-by: Jan <66554238+Vaporox@users.noreply.github.com>
2020-12-14 13:54:02 +01:00
Souji
8883a0144b fix: implement valueOf on pseudomanagers (#4595) 2020-12-14 13:52:21 +01:00
Jan
75e6dfbfd3 refactor(Message): remove options for Message#delete (#4999) 2020-12-14 13:52:04 +01:00
Advaith
41078997ae feat(APIMessage): remove disableMentions (#4836)
* chore: remove disableMentions

* style: fix eslint
2020-12-14 13:51:31 +01:00
Mirdukkk
9c7fe34c50 fix: add presence to ClientPresence from ClientOptions (#5041) 2020-12-13 03:14:23 +01:00
VoltrexMaster
9042d19c4e fix: filtering of string forms of null and undefined (#5075)
Removed null and undefined being filtered out in string forms which caused issues in `<client>.api`, issue: https://github.com/discordjs/discord.js/issues/5072
2020-12-13 03:13:52 +01:00
Awesome Stickz
12c909eecc fix(ChannelManager): Avoid crash in remove method with uncached channel (#4937)
* fix(ChannelManager): Avoid crash in remove method with uncached channel

* Use optional chaining

Co-authored-by: Ishmaam Khan <ishmaamk@gmail.com>

Co-authored-by: Ishmaam Khan <ishmaamk@gmail.com>
2020-12-12 22:40:50 +01:00
X-Classified
bb78120283 fix(Message): #system non-zero message types are not guaranteed to be system (#5108)
* fix(Message): #system not all nonzero message types are system

* feat(Message): introduce system message types

* refactor(Constants): change SystemMessageTypes to be exclusionary

* fix(Constants): only need to check if type exists

Co-authored-by: Jan <66554238+Vaporox@users.noreply.github.com>

* fix(Constants): lint

* fix(Typings): add SystemMessageTypees to Constants

Co-authored-by: Jan <66554238+Vaporox@users.noreply.github.com>
2020-12-12 22:40:39 +01:00
Jan
5b51392724 refactor(Client): improve generateInvite() (#5065)
* cleanup(Client): improve generateInvite()

* fix: you actually do need to fetch the application
2020-12-12 22:38:57 +01:00
dependabot[bot]
b6b3c6f29b chore(deps): bump ini from 1.3.5 to 1.3.8 (#5110)
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.8.
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.8)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-12-12 14:56:44 +01:00
Zaid
d70127cee6 feat(GuildMember): make GuildMember#setNickname first param nullable (#5070)
* Update index.d.ts

* Update GuildMember.js

* Update src/structures/GuildMember.js

Co-authored-by: Jan <66554238+Vaporox@users.noreply.github.com>

* Update GuildMember.js

* Update index.d.ts

Co-authored-by: Jan <66554238+Vaporox@users.noreply.github.com>
2020-12-12 14:50:33 +01:00
anandre
77d42373a1 docs: permission overwrite methods descriptions (#5079)
* Change permission overwrite methods descriptions

The methods `GuildChannel#updateOverwrite` and `#createOverwrite` had some awkward wording in the description: `. (...)` does not look good.  This PR cleans up the descriptions to be one sentence that's clearer in meaning.  There's also changes to make `permission overwrite/s` consistent - some lines had `permissions overwrite/s`.

* Update src/structures/GuildChannel.js

Co-authored-by: SpaceEEC <spaceeec@yahoo.com>

* Update src/structures/GuildChannel.js

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>

* Update src/structures/GuildChannel.js

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>

Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2020-12-12 14:50:04 +01:00
Jan
bb04e69a92 cleanup(Guild): remove Guild#voice (#5091) 2020-12-12 14:49:32 +01:00
SpaceEEC
b509862bfa fix(UserFlags): correct early bot dev name, remove deprecated aliases (#5104) 2020-12-12 14:48:03 +01:00
Advaith
2685b960d7 docs(Client): #emojis is a BaseGuildEmojiManager (#5048) 2020-12-08 22:07:06 +01:00
monbrey
60e5a0e46f feat(Message|TextChannel): Inline replies (#4874)
* feat(Message): remove reply functionality

* feat(InlineReplies): add INLINE_REPLY constant/typing

* feat(InlineReplies): add Message#replyReference property

* feat(InlineReplies): add typings for sending inline replies

* feat(InlineReplies): provide support for inline-replying to messages

* feat(Message): add referencedMessage getter

* fix: check that Message#reference is defined in referencedMessage

* refactor(InlineReplies): rename property, rework Message resolution

* docs: update jsdoc for inline replies

* feat(Message): inline reply method

* fix(ApiMessage): finish renaming replyTo

* fix: jsdocs for Message#referencedMessage

Co-authored-by: Tristan Guichaoua <33934311+tguichaoua@users.noreply.github.com>

* fix: restore reply typings

* fix: dont pass channel_id to API when replying

* chore: update jsdocs

* chore: more jsdoc updates

* feat(AllowedMentions): add typings for replied_user

* fix: naming conventions

* fix(Message): referenced_message is null, not undefined

* fix(MessageMentionOptions): repliedUser should be optional

* chore: get this back to the right state

* fix(ApiMessage): pass allowed_mentions when replying without content

* fix(ApiMessage): prevent mutation of client options

Co-authored-by: almostSouji <timoqueezle@gmail.com>
Co-authored-by: Tristan Guichaoua <33934311+tguichaoua@users.noreply.github.com>
2020-12-08 21:08:26 +01:00
SpaceEEC
7365f40300 fix(Collector): throw an error if a non-function was provided as filter (#5034) 2020-12-08 20:11:44 +01:00
Carter
09d07553ab docs(User): fix typos in jsdoc (#5060) 2020-12-06 18:03:39 +01:00
BannerBomb
e272fd6909 fix(BaseGuildEmoji): typo in requiresColons (#5076) 2020-12-06 17:59:12 +01:00
Antonio Román
90d458820b chore(Engine): bump Node.js to v14.0.0 (#5067)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2020-12-06 17:58:08 +01:00
Advaith
9f3c3e0918 docs(WebSocketManager): fix type of status (#5059) 2020-11-30 01:08:54 +01:00
monbrey
6b322f47a0 fix(MessageReaction): set MessageReaction#me in patch method (#5047) 2020-11-25 23:55:29 +01:00
Amish Shah
4fcb9ebf30 fix(Voice*): filter out silent audio from video users (#5035) 2020-11-25 23:51:16 +01:00
izexi
53529bd05d fix(GuildTemplate): 'guild' getter (#5040) 2020-11-25 23:50:28 +01:00
Jan
8d650a7250 feat: BaseGuildEmojiManager (#4934)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2020-11-22 19:48:30 +01:00
Jan
12a096b5f1 fix(RoleManager): fix ID return value, change return type to collection (#4935)
Co-authored-by: Ishmaam Khan <ishmaamk@gmail.com>
2020-11-22 19:39:19 +01:00
Advaith
6f3076325e remove User#locale (#4932) 2020-11-22 19:39:06 +01:00
anandre
8c8883ef26 Remove Guild#member (#4890) 2020-11-22 19:21:01 +01:00
Junseo Park
4b555fdf4c feat(Message): added string type for message nonce (#4782)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2020-11-22 19:13:38 +01:00
monbrey
863734aba4 feat(GuildMemberManager): throw TypeError on incorrect GuildMemberManager#ban params (#4816)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2020-11-22 19:13:07 +01:00
iCrawl
1f4b9fe749 chore(Release): version up 2020-11-22 14:03:20 +01:00
Matt (IPv4) Cowley
2a6c363a8a feat(Shard): shard-specific broadcastEval/fetchClientValues + shard Id util (#4991) 2020-11-22 13:35:18 +01:00
SpaceEEC
643f96c79b fix(Guild): fetch member if already in the guild (#4967) 2020-11-21 17:16:22 +01:00
izexi
2b2994badc feat: add support for guild templates (#4907)
Co-authored-by: Noel <buechler.noel@outlook.com>
2020-11-21 15:09:56 +01:00
SpaceEEC
eaecd0e8b7 fix(User): only assign to bot initially or if info is actually present (#4990) 2020-11-20 16:48:05 +01:00
SpaceEEC
2e940e635d fix(GuildMemberUpdate): cache incoming members & use partials if enabled (#4986)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2020-11-20 16:20:47 +01:00
SpaceEEC
8b91ac5d7e fix(MessageReaction*Action): correctly cache incoming members and users (#4969) 2020-11-20 16:19:18 +01:00
Sugden
7faa73a561 feat: add missing error codes (#5008)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2020-11-20 16:18:13 +01:00
Ashley Meadows
042e071a64 fix(MessageReaction): add client property to typings (#5003)
close #5002

Co-authored-by: Ashley Meadows <itsa-sh@users.noreply.github.com>
2020-11-17 22:05:03 +01:00
HarmoGlace
b8fd3f65d9 feat(Message): add crosspostable property (#4903)
Co-authored-by: Advaith <advaithj1@gmail.com>
Co-authored-by: Alex Hîncu <teesealz@gmail.com>
2020-11-01 12:32:20 +01:00
Christopher Bradshaw
efd7849ed0 docs: use npm ci instead of npm install (#4928)
Use `npm ci` instead of `npm install` after cloning the repository.
2020-11-01 12:30:25 +01:00
Matt (IPv4) Cowley
adf2e872f8 fix(Shard): don't pass event arguments to exit handler (#4957) 2020-11-01 12:29:29 +01:00
Matt (IPv4) Cowley
ed8b3cc9ea fix(PackageLock): reinstall GitHub docgen dev dependency (#4958) 2020-11-01 12:29:00 +01:00
iCrawl
7ec0bd93b0 chore(Release): version upgrade 2020-10-24 06:27:55 +02:00
monbrey
3d158f4448 fix(Action): attempt to get a User if GuildMember not returned (#4922) 2020-10-24 06:25:35 +02:00
Sugden
250c3ae3c1 fix(GuildChannel): parentID shouldn't be set in the constructor (#4919) 2020-10-19 22:24:18 +02:00
iCrawl
94c9cc2300 fix(Webpack): revert webpack upgrade 2020-10-19 18:46:49 +02:00
iCrawl
e9f36b5041 chore(Release): version upgrade 2020-10-19 18:27:26 +02:00
Souji
30808f9f0b feat(Message): allow custom emoji format for react (#4895) 2020-10-17 15:54:22 +02:00
Sugden
af670fc718 refactor: improve the accuracy of docs/improve docs (#4845)
Co-authored-by: Noel <icrawltogo@gmail.com>
2020-10-17 15:53:02 +02:00
Jan
4bbe716aa0 fix(esm): add missing exports (#4911) 2020-10-17 15:47:56 +02:00
Jan
a7af4a8837 docs(PresenceData): add YouTube and remove application (#4910) 2020-10-17 15:47:49 +02:00
Noel
89feedad98 revert: "fix(GuildEmojiManager): check for guild in methods that use it" (#4912)
This reverts commit 728b3f939c.
2020-10-17 15:46:10 +02:00
Jan
728b3f939c fix(GuildEmojiManager): check for guild in methods that use it (#4886) 2020-10-17 15:40:39 +02:00
Sugden
7db6978012 fix(GuildMember): properly check permissions for hasPermissions (#4677) 2020-10-17 15:40:23 +02:00
Jiralite
6261dd65d3 fix(GuildEmojiCreate): Prevent double fire from emoji creation (#4863) 2020-10-17 15:40:04 +02:00
izexi
a45cc112e5 fix(GuildMemberManager): options.roles on 'prune' (#4838) 2020-10-17 15:39:29 +02:00
Constantinos
b8aa967226 ci: use npm ci instead of npm install (#4877)
Use npm ci instead of npm install when installing dependencies in CI.
2020-10-17 15:38:53 +02:00
Adrian Paschkowski
6e4308bfde fix(GuildChannel): Default parentID to null (#4881) 2020-10-17 15:36:16 +02:00
Adrian Paschkowski
dd12912124 fix(Actions): Avoid crash in InviteCreate with unknown channel (#4882) 2020-10-17 15:36:02 +02:00
Adrian Paschkowski
937153a92f fix(GuildMemberManager): Use actually random nonce in fetch (#4884)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2020-10-17 15:35:22 +02:00
Matt (IPv4) Cowley
c412cd7521 feat(Message): add messageEditHistoryMaxSize to limit stored msg edits (#4867) 2020-10-17 15:34:49 +02:00
cherryblossom000
4a6fb9a7d4 types(TextBasedChannel): make lastPinAt nullable (#4842)
This commit makes `TextBasedChannelFields#lastPinAt` nullable in the
typings.
2020-10-17 15:33:57 +02:00
cherryblossom000
824e92229d types(Activity): move flags from Presence to Activity (#4843)
This commit moves the `flags` property from `Presence` to `Activity` in
the typings.
2020-10-17 15:33:37 +02:00
Jiralite
0b59141054 types(GuildPreview): Make description nullable (#4854)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2020-10-17 15:33:08 +02:00
yuta0801
b9ad51049e fix(GuildChannel): make setTopic argument nullable (#4875) 2020-10-17 15:32:32 +02:00
Antonio Román
d2341654fe fix(Rest): resolved a regression, added retried AbortError (#4852) 2020-09-29 18:05:54 +02:00
Jan
169d4c3bff refactor(ReactionUserManager): use client property (#4829) 2020-09-25 23:46:31 +02:00
monbrey
13d64e6fa6 fix(MessageManager): throw if delete param is not MessageResolvable (#4825) 2020-09-25 23:46:06 +02:00
Jan
f83b3d7fc1 feat(NewsChannel): add support for following (#4805)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2020-09-25 23:45:47 +02:00
cherryblossom000
f2bbad36d5 feat(GuildManager): add AFK and system channel options in create (#4837)
This commit adds support for the `afk_channel_id`, `afk_timeout`, and
`system_channel_id` parameters in the
[create guild](https://discord.com/developers/docs/resources/guild#create-guild-json-params)
endpoint by adding the `afkChannelID`, `afkTimeout`, and
`systemChannelID` options in `GuildManager#create`.

This commit also fixes a minor bug in `create` when specifying types for
the channels due to the channel types not being changed from `'text'`,
`'voice'` etc to the corresponding numbers, so Discord would return an
error.
2020-09-25 23:44:32 +02:00
Matt (IPv4) Cowley
77c0788b2c fix(Shard): avoid caching null child in eval/fetchClientValue (#4823) 2020-09-25 23:43:32 +02:00
MrWasdennnoch
4e79e39e22 fix(Action): Sanity-Check if Discord includes all required data (#4841) 2020-09-25 23:42:49 +02:00
Antonio Román
32fe72f909 feat(Rest): switch queue to AsyncQueue (#4835)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2020-09-25 23:42:24 +02:00
Ryan Munro
1e63f3756e fix(Message): use Promise#reject instead of Throw on Message#delete (#4818) 2020-09-15 18:35:54 +02:00
MrWasdennnoch
8fa3a89482 fix(Action): Don't crash when partials are disabled (#4822) 2020-09-15 18:35:20 +02:00
Advaith
9c76129a23 feat(ActivityTypes): add Competing (type 5) (#4824) 2020-09-15 18:33:52 +02:00
Noel
01ceda5b0c chore(Deps): bl vulnerability (#4813) 2020-09-13 12:48:53 +02:00
MrWasdennnoch
eeb4c14754 fix(Partials): Use more user objects available from the gateway (#4791) 2020-09-13 12:09:12 +02:00
Johnson Chen
bcb7c721dc feat(Message): add support for crossposting (#4105)
Co-authored-by: Advaith <advaithj1@gmail.com>
Co-authored-by: Joe <56809242+Jo3-L@users.noreply.github.com>
Co-authored-by: Jan <66554238+Vaporox@users.noreply.github.com>
Co-authored-by: Noel <icrawltogo@gmail.com>
2020-09-13 12:07:56 +02:00
dependabot[bot]
0da65becd3 chore(deps): bump node-fetch from 2.6.0 to 2.6.1 (#4812)
Bumps [node-fetch](https://github.com/bitinn/node-fetch) from 2.6.0 to 2.6.1.
- [Release notes](https://github.com/bitinn/node-fetch/releases)
- [Changelog](https://github.com/node-fetch/node-fetch/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/bitinn/node-fetch/compare/v2.6.0...v2.6.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-09-13 11:57:44 +02:00
Sugden
422a4dda68 typings(Guild): document RELAY_ENABLED feature (#4788) 2020-09-08 09:58:56 +02:00
anandre
222137dcd1 docs(Role): Update various Role method descriptions (#4798)
Co-authored-by: Papaia <43409674+Papaia@users.noreply.github.com>
2020-09-08 09:58:11 +02:00
Quentin
372a405926 docs(ReactionCollector): Revise JSDoc for ReactionCollector#dispose and #remove (#4709)
Co-authored-by: Amish Shah <amishshah.2k@gmail.com>
Co-authored-by: uhKevinMC <plainkevin123@gmail.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: Noel <icrawltogo@gmail.com>
2020-09-08 09:57:39 +02:00
anandre
dfd63bdb6b docs(Guild): Guild.setName() example (#4797)
The docs example was incorrect, as the parameter is called `updated` but was later referenced as `guild`.  This PR fixes that by changing it to `updated` to match other examples, such as `setRegion()`
2020-09-05 20:18:00 +02:00
Papaia
5b39737d49 fix(lint): RESTManager warning (#4796)
Co-authored-by: Papaia <43409674+ItsPapaia@users.noreply.github.com>
2020-09-05 20:16:09 +02:00
cherryblossom000
904aecfdb7 types: don't use readonly arrays in interfaces (#4794)
This reverts some of the changes in f451be05 so that this works:

```ts
const embed: MessageEmbedOptions = {
  fields: [{
    // fixed stuff
  }],
};
if (/* condition */) {
  embed.fields.push({
    // conditional stuff
  });
}
```

See https://github.com/discordjs/discord.js/pull/4692#issuecomment-687252066.
2020-09-05 20:14:39 +02:00
MrWasdennnoch
a28754b892 fix(Typings): remove Partial types from some events (#4781) 2020-09-05 20:13:59 +02:00
Sugden
b43e742503 docs(GuildChannel): ThisType should be this (#4793) 2020-09-05 10:20:32 +02:00
Darqam
8ac25d37d9 docs(MessageManager): Update example for fetchPinned (#4785)
Example showed the method for channel and not messageManager
2020-09-04 20:19:51 +02:00
Souji
77b6a7d5bd fix(Util): throw token invalid for fetching rec. shard amount (#4779) 2020-09-04 12:51:15 +02:00
MrWasdennnoch
aa25608c52 typings(PartialUser): fix PartialUser remove deleted property (#4773) 2020-09-03 09:53:44 +02:00
Jan
b0ab37ddc0 feat(Channel): add isText() type guard (#4745) 2020-08-31 09:59:17 +02:00
Sugden
3141f7cb04 feat(Guild): add includeApplications option for fetchIntegrations (#4762) 2020-08-31 09:17:53 +02:00
Sugden
7ba9440053 fix(Guild): cache fetched widget data (#4760) 2020-08-31 09:16:53 +02:00
Sugden
f97316319f feat(UserFlags): add renamed UserFlags (#4761) 2020-08-30 00:34:37 +02:00
Tristan Guichaoua
405b487dc3 fix(Typing): change NodeJS.Timer into NodeJS.Timeout (#4755) 2020-08-29 18:54:39 +02:00
Tristan Guichaoua
b48b782c87 chore(Prettier): add settings for prettier plugin (#4756)
Co-authored-by: Papaia <43409674+Papaia@users.noreply.github.com>
2020-08-29 12:08:47 +02:00
cherryblossom000
74763ef3fb types: don't allow any object in the first parameter if second parameter is not given in TextBasedChannel#send (#4736) 2020-08-29 12:08:04 +02:00
Carter
74ebb650df style: remove unnecessary eslint comment (#4758) 2020-08-29 12:05:33 +02:00
Louis
a363b90fa5 docs(BaseGuildEmoji): account for optional properties (#4723) 2020-08-28 14:19:53 +02:00
Sugden
6aab9c3d64 fix: correctly import extendable classes (#4744) 2020-08-28 14:19:20 +02:00
Tristan Guichaoua
2dc70af717 types: add all types for GuildAuditLogsEntry#target (#4738)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2020-08-28 14:18:45 +02:00
Sugden
46acfac327 refactor(Client): remove non-existant property from toJSON (#4750) 2020-08-28 14:18:17 +02:00
Sugden
727b29c85d feat(Client): allow options for generateInvite (#4741) 2020-08-28 14:17:37 +02:00
Sugden
e0e271162c fix(typings): bot cannot be null (#4719) 2020-08-27 16:40:36 +02:00
InkoHX
cfc68677ee docs(ClientOptions): fix typo (#4730) 2020-08-27 16:39:55 +02:00
Noel
43c4d80b12 ci(CodeScanning): add CodeQL code scanning workflow 2020-08-24 19:27:00 +02:00
Carter
05c9e30163 docs(APIMessage): fix wording on comment (#4717) 2020-08-17 09:56:18 +02:00
Carter
b6167d8c3b docs: update jsdoc type for User#bot (#4716) 2020-08-17 09:45:57 +02:00
iCrawl
56e8ef2d38 chore(Release): version upgrade 2020-08-15 20:38:09 +02:00
Jan
db512d8f62 fix(User): set User#bot to false if not partial (#4706)
Co-authored-by: Noel <icrawltogo@gmail.com>
2020-08-15 20:04:32 +02:00
Noel
5249cf33e5 revert(Shard): "fix missing child_process silent option of Shard to allow listening to output" (#4707)
This reverts commit 58d1589a55.
2020-08-15 12:50:05 +02:00
Jan
09bde74e43 chore: bump version in package-lock.json (#4705) 2020-08-15 12:38:40 +02:00
iCrawl
a4dbfdce59 chore(Release): version upgrade 2020-08-14 21:56:11 +02:00
Noel
dea48d64a5 chore(Deps): upgrade deps (#4701) 2020-08-14 21:46:23 +02:00
Advaith
178439ef8c feat: trigger userUpdate on GUILD_MEMBER_UPDATE (#4697) 2020-08-14 20:49:44 +02:00
Carter
f1194afd7c feat(GuildMemberManager#prune): roles query param (#4142)
Co-authored-by: izexi <43889168+izexi@users.noreply.github.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: kyranet <kyradiscord@gmail.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: Noel <icrawltogo@gmail.com>
2020-08-14 20:14:31 +02:00
Carter
2742923df4 feat(GuildManager): adds GuildManager#fetch (#4086)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2020-08-14 19:34:19 +02:00
Human
0b38c5d8b3 docs: updated applications URL (#4699) 2020-08-14 19:33:11 +02:00
cherryblossom000
f451be0519 feat(typings): use readonly arrays in parameters (#4692)
Co-authored-by: Noel <icrawltogo@gmail.com>
2020-08-13 20:43:51 +02:00
Advaith
f991bd46f3 chore(Constants): update large_threshold default (#4698) 2020-08-13 20:38:59 +02:00
Quentin
139e56c774 docs(ReactionCollector): update remove and dispose events (#4136)
Co-authored-by: Amish Shah <amishshah.2k@gmail.com>
Co-authored-by: uhKevinMC <plainkevin123@gmail.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Noel <icrawltogo@gmail.com>
2020-08-12 23:22:45 +02:00
Androz
e7eda72c9d feat(typings): add number type for setExplicitContentFilter method (#4694) 2020-08-12 23:18:58 +02:00
Sugden
980243f2d5 fix(Partials): correctly set properties as nullable (#4636) 2020-08-12 21:26:59 +02:00
Sugden
b6ddd4ce41 fix(APIMessage): add reply user to allowedMentions (#4591) 2020-08-12 21:25:38 +02:00
Arthur
6caeaeb391 fix(MessageReactionAdd): prevent double messageReactionAdd triggering (#4682)
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2020-08-12 21:24:45 +02:00
Carter
290938bf80 feat: bypass cache check with forceFetch param (#4592) 2020-08-12 21:23:04 +02:00
Souji
0225851e40 feat(BitField): add problematic bit to error (#4617) 2020-08-12 12:37:01 +02:00
Sardonyx
2a7f749d5a docs(Embeds): Added descriptions to the typedefs (#4303)
Co-authored-by: RDambrosio <rdambrosio016@gmail.com>
2020-08-12 12:29:02 +02:00
Advaith
57ca3d7843 feat(Guild): updates for Community guilds (#4377)
Co-authored-by: SpaceEEC <spaceeec@users.noreply.github.com>
2020-08-12 12:21:17 +02:00
Advaith
de8d26d791 docs(Constants): Improve large_threshold description (#3744)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: Crawl <icrawltogo@gmail.com>
2020-08-12 12:17:13 +02:00
Advaith
5be6630843 feat(Guild): discovery splash (#4619)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2020-08-12 11:09:18 +02:00
Advaith
446bbfe9eb docs(Ban): days must be 0-7 (#4693)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
Co-authored-by: Noel <icrawltogo@gmail.com>
2020-08-12 09:35:33 +02:00
Tristan Guichaoua
f2f31a14c9 feat(types): BitFieldResolvable use ReadonlyArray (#4604) 2020-08-12 09:34:24 +02:00
Sugden
e92cbc444b feat: deprecate GuildEmbed methods and properties in favour of GuildWidget (#4121) 2020-08-12 09:33:00 +02:00
Advaith
baffbdb541 fix(Integration): user might not be present (#4691)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
2020-08-12 09:30:34 +02:00
Bence
b7740d4859 feat(GuildEmoji): cache the author (#4334)
Co-authored-by: Papaia <43409674+Papaia@users.noreply.github.com>
2020-08-12 09:27:00 +02:00
Souji
599cde3627 fix(GuildChannel): make lockPermissions use parent overwrites (#4627)
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2020-08-12 09:23:31 +02:00
Advaith
bd2bb0e1c7 docs(Welcome): change discord badge to shields.io for consistency (#4633) 2020-08-12 09:22:44 +02:00
samsamson33
03580b23a3 feat(Util): add missing colors to docs (#3843)
Co-authored-by: Crawl <icrawltogo@gmail.com>
2020-08-11 23:40:07 +02:00
Jan
9d747d14c5 docs(Client): fix docs for login method (#4350) 2020-08-11 23:36:25 +02:00
Nathan Franke
124afeb843 fix(Collector): support async (#4123) 2020-08-11 23:34:47 +02:00
Hayden Andreyka
05cbf70486 docs(Guild): clarify vanity URL documentation (#4125)
Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: Crawl <icrawltogo@gmail.com>
2020-08-11 23:05:03 +02:00
Jared Gesser
58d1589a55 fix missing child_process silent option of Shard to allow listening to output (#4308) 2020-08-11 23:01:19 +02:00
Sugden
49ad279c52 refactor(GuildMemberManager): use data instead of query (#4370) 2020-08-11 23:01:02 +02:00
Erwann Hilley
1fbaf8816e feat: add Blob support for browser (#4338)
Co-authored-by: Papaia <43409674+Papaia@users.noreply.github.com>
2020-08-11 23:00:12 +02:00
Souji
b4d651055a fix(BaseManager): properly type valueOf (#4594) 2020-08-11 22:59:44 +02:00
Sugden
c5b6c4da43 fix: correctly import VoiceState (#4616) 2020-08-11 22:59:03 +02:00
Jan
f628981f42 docs(CategoryChannel): Fix children being incorrectly marked as nullable (#4620) 2020-08-11 22:58:30 +02:00
Souji
a663ea4d2c fix(ApiMessage): respect allowedMentions with split (#4588) 2020-08-11 22:57:12 +02:00
Zaid - Nico
2be68e4125 fix(Message): Message#createdTimestamp uses deconstructed message id to get timestamp (#4632) 2020-08-11 21:02:15 +02:00
Souji
317f24076e fix(Util): support empty array for flatten (#4590) 2020-08-11 21:01:29 +02:00
Souji
fab3153de6 fix: consider #nsfw false if not present in data (#4593) 2020-08-11 21:00:29 +02:00
Souji
276dddcbfb fix(PresenceStatus): include invisible in typings (#4585) 2020-08-11 20:59:47 +02:00
Souvik
2adb5815bf fix: set #nickname to null as the default value (#4641) 2020-08-11 20:58:52 +02:00
tiehm
3df99930e8 fix(Typings): Channel#delete returns bad type (#4118) 2020-08-11 20:58:12 +02:00
Matthew Stead
e54c21bc65 feat(typings): TypeScript support for changing $browser (#4667) 2020-08-11 20:57:42 +02:00
Souji
bbfc715821 fix(Message): include MessageEmbed type (#4675) 2020-08-11 20:56:01 +02:00
Sanskar Jha
755f3798d1 docs(examples): fix example img (#4678) 2020-08-11 20:55:05 +02:00
Arthur
5b716c5b0c docs(ReactionManager): clarify cache Collection keys type (#4683) 2020-08-11 20:54:14 +02:00
Jan
b0e53e9c6d docs(Message): add NewsChannel type to Message#channel (#4680) 2020-08-11 20:53:29 +02:00
Androz
c55b5c8c19 fix(typings): correct spelling of APIError (#4687) 2020-08-11 20:52:10 +02:00
모메MoMe
fb1dd6b53a fix(Util): Fix cleanContent mention exploit (#4663) 2020-07-29 12:47:20 +02:00
Jan
0e61fca974 docs: make use of MessageResolvable type for bulkDelete (#4661) 2020-07-29 12:15:23 +02:00
camc
2b6e6d8631 feat(Module): add ReactionManager to exports (#4372)
add ReactionManager to the manager exports in src/index.js

closes #4363
2020-07-17 10:20:51 +02:00
Tenpi
47151fc2a9 fix(typings): allow custom events (#4162) 2020-07-17 10:17:44 +02:00
Souji
5027787aec chore: add relevant client options section to issue template (#4587) 2020-07-17 10:16:37 +02:00
Souji
c79ac4d9fc feat(Message): support pin and unpin with reason (#4586)
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2020-07-17 10:13:30 +02:00
Souji
f9f3661090 fix(User): type dmChannel as nullable (#4609) 2020-07-06 19:07:33 +02:00
Crawl
ae716872b9 chore(deps): remove peer-deps as per npm@7 (#4272) 2020-06-19 11:48:01 +02:00
Phineas
ea19faa411 Change domain to discord.com (#4160) 2020-06-19 11:46:59 +02:00
Papaia
9a1c56c5b9 docs(erlpack): discordapp to discord (#4288)
Co-authored-by: Papaia <43409674+ItsPapaia@users.noreply.github.com>
2020-06-19 11:46:29 +02:00
Jan
214981f0b1 feat(MessageMentions): fix typings/docs, add resolvables support (#4339) 2020-06-19 11:43:19 +02:00
Souji
16847a3c13 fix: typing start event emitting on non text based channels (#4349) 2020-06-19 11:42:06 +02:00
uhKevinMC
54a7fdadda feat(voiceState): add self_video property (#4346) 2020-06-19 11:41:11 +02:00
Papaia
1c275afd7c fix(Guild): fix vanityURLUses desc, internally use fetchVanityData (#4335)
* docs(vanityURLUses): use fetchVanityData

* feat(fetchVanityCode): internally call fetchVanityData

* Update src/structures/Guild.js
2020-06-04 19:17:18 +02:00
Johnson Chen
8030612e52 feat(Guild): add fetchVanityData (#4103)
* chore: deprecate Guild.fetchVanityCode()

* feat: add Guild.fetchVanityData()

* chore: update typings

* fix: remove redundant .then()

Co-Authored-By: Antonio Román <kyradiscord@gmail.com>

* chore: fix lint

* chore: util.deprecate fetchVanityCode

* feat: add VanityData typedef and populate vanityURLUses

* chore: update typings

* chore: properly deprecate fetchVanityCode

* chore: fix jsdoc description for fetchVanityData

* feat: make fetchVanityData an async function

* chore: update Vanity typedef

* docs: update jsdoc

* feat: throw vanity url error instead of returning rejected promise

Co-Authored-By: Vlad Frangu <kingdgrizzle@gmail.com>

* docs: disable max-len rule and add info about receiving parameter

* fix: throw Error instead of rejecting Promise

* revert: revert "fix: throw Error instead of rejecting Promise"

This reverts commit 7ffd53eba4.

* fix: require DJSError to fix throwing VANITY_URL error

* nitpick: re-add TypeError to the import

Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>

Co-authored-by: Antonio Román <kyradiscord@gmail.com>
Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2020-06-04 13:41:20 +02:00
Carter
257371da28 feat(REST): allow options.query as URLSearchParams (#4143)
* feat: support query as URLSearchParams

* style: remove unnecessary comment

* patch: use const

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>

* feat: not reconstructing the search params

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2020-06-04 13:34:29 +02:00
nolan
5955498aca fix(DataResolver): resolveInviteCode to support new domain (#4281)
Update resolveInviteCode method to support "discord.com/invite" links.
2020-06-04 13:22:26 +02:00
Papaia
fc4bddf82a fix: grammatical errors in INVALID_TYPE errors (#4289)
* fix(GuildMemberRoleManager): grammatical error

* fix: eslint

* fix(GuildChannel): an

* fix(PermissionOverwrites): an

Co-authored-by: Papaia <43409674+ItsPapaia@users.noreply.github.com>
2020-06-04 13:02:28 +02:00
Souji
bd349650a7 docs(Guild): description of Guild#premiumSubscriptionCount (#4324) 2020-06-04 12:56:48 +02:00
Sugden
88a62d5fea docs(GuildManager): resolve returns a GuildChannel (#4333) 2020-06-04 12:52:43 +02:00
Evan
b0b62d63cf chore(docs): remove comment about type 13 (#4159) 2020-05-21 13:18:06 +02:00
Sugden
15b53509da fix(APIMessage): only pass allowedMentions if content is defined (#4269) 2020-05-21 13:17:00 +02:00
Schuyler Cebulskie
153a030c1f Improve text for Discord server link in issues 2020-05-17 02:51:28 -04:00
Papaia
2583ad5da7 docs(WebSocketShard): add missing properties (#4268) 2020-05-09 17:23:32 +02:00
SpaceEEC
a6510d6a61 revert "chore(docs): example for timeout in message.delete()" (#4167) 2020-05-07 23:39:45 +02:00
SpaceEEC
407bc77d34 fix: in/de-crement max listener for client events (#4168) 2020-05-07 23:39:23 +02:00
Alexander Kashev
766b91d306 docs(ShardingManager): fix typo in JSDoc (#4158)
Fix typo introduced in PR #4157 in the link to Node docs
2020-05-05 22:45:30 +02:00
anandre
b385aedf36 chore(docs): example for timeout in message.delete() (#4165) 2020-05-05 22:41:41 +02:00
Alexander Kashev
99612ba14d docs(ShardingManager): remove experimental status of Worker threads (#4157) 2020-05-04 13:08:52 +02:00
Kevin
ec0227a476 feat(GuildMemberManager): nonce and chunk_count for _fetchMany (#4130)
Co-Authored-By: izexi <43889168+izexi@users.noreply.github.com>
2020-05-04 12:48:33 +02:00
anandre
2617d3c9f3 docs(VoiceState): remove permissions required from description (#4156) 2020-05-04 12:46:58 +02:00
Carter
6367f603f6 typings: Add User#fetchFlags (#4138) 2020-05-01 14:45:14 +01:00
sillyfrog
d3c9384c9c fix(Voice): correctly set speaking data in the voice ssrcMap
Co-authored-by: Sillyfrog <sillyfrog@users.noreply.github.com>
2020-04-30 17:21:29 +01:00
Carter
026691702d feat(Guild#fetch): withCount param (#4111) 2020-04-27 09:05:39 +02:00
Corentin Poupry
605ee8587b fix(MessageEmbed): explicitly mark proxyIconURL as undefined (#4097) 2020-04-26 17:02:45 +02:00
Alon L
819e04a7ab fix(Typing): dmChannel bulkDelete (#4115)
Co-Authored-By: Sugden <28943913+NotSugden@users.noreply.github.com>
2020-04-26 15:59:30 +02:00
Sugden
46b9e25190 typings(User): mark locale and flags as optional (#4127) 2020-04-26 15:58:53 +02:00
Nathan Franke
1726651c71 chore(tooling): include mention of commit convention (#4124) 2020-04-24 12:02:04 +02:00
Alon L
e3303ac3a2 fix(Typing): setSpeaking public (#4109) 2020-04-24 08:44:37 +01:00
Crawl
67a74c33e1 fix(Webpack): add Buffer polyfill in browser (#4102) 2020-04-20 21:15:26 +02:00
Papaia
97cbbb176b fix(Guild): name acronym (#4104) 2020-04-20 21:15:14 +02:00
RDambrosio
5af1a552bc fix(PacketHandler): guild members chunk packet handler should… (#4092) 2020-04-19 12:25:32 +02:00
SpaceEEC
97d23de247 fix(Typings): add optional Set<Snowflake> to shardReady event (#4099) 2020-04-19 12:24:58 +02:00
Souji
863a70918a docs(Message): add timeout to Message#delete example (#4090) 2020-04-18 12:16:19 +02:00
Jyguy
6fbaf0a036 fix(User): jsdoc for User#flags (#4094) 2020-04-18 12:15:30 +02:00
iCrawl
d827544fbd chore(Release): version 2020-04-17 12:58:26 +02:00
thepheer
12187efdbd feat(DataResolver): prefer streams over buffers (#4075)
* feat(DataResolver): prefer streams over buffers

* feat(DataResolver): add `resolveFileAsBuffer`

Add `resolveFileAsBuffer` to use it in `resolveImage` which still requires Buffers to work.

* fix(DataResolver): make sure `resolveFile` always returns a Promise

* refactor(DataResolver): use for-await-of

* fix(DataResolver): use forked form-data which supports custom streams

* fix(APIRequest): use forked form-data in code too

Co-authored-by: - <5144598+-@users.noreply.github.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2020-04-17 12:03:50 +02:00
Ryan Munro
7c6000c5e3 feat(ClientOptions): allow setting default allowedMentions (#4085)
* feat(ClientOptions): add default allowedMentions

* feat(ClientOptions): use default allowedMentions when not provided

* Update src/structures/APIMessage.js

Co-Authored-By: SpaceEEC <spaceeec@yahoo.com>

* Update src/structures/APIMessage.js

Co-Authored-By: SpaceEEC <spaceeec@yahoo.com>

* fix(ClientOptions): default allowedMentions should be undefined

Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2020-04-17 11:23:31 +02:00
HarmoGlace
a88b7239b5 docs(RoleManager): everyone role can't be null (#3995)
* docs(RoleManager) : fix jsdoc everyone role can't be null

It fixes the jsdoc of RoleManager ; the everyone role of a guild can't be null

* Everyone role can't be null

* fix(typings): mark RoleManager#everyone as non-null

Co-authored-by: Crawl <icrawltogo@gmail.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2020-04-16 12:18:43 +02:00
Duncan Sterken
0a3759f683 feat(ESModules): importing for esm modules (#3998)
* fix: importing for esm modules

* style: use single quotes

* refactor: remove 'use strict'
2020-04-16 12:11:24 +02:00
Sardonyx
da5d92812e docs(Webhook): id and token information (#3962)
* Documented how to get ID and Token of a webhook

* Update docs/examples/webhook.js

Co-Authored-By: Sugden <28943913+NotSugden@users.noreply.github.com>

* Explained whats the response body

* Update docs/examples/webhook.js

Co-Authored-By: Crawl <icrawltogo@gmail.com>

* Update docs/examples/webhook.js

Co-Authored-By: Crawl <icrawltogo@gmail.com>

* Update webhook.js

* Capitilized ID

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Crawl <icrawltogo@gmail.com>
2020-04-16 12:09:26 +02:00
Kevin
ff3454ef89 feat(GuildMemberManager): customisable timeout for _fetchMany (#4081) 2020-04-16 12:07:32 +02:00
SpaceEEC
4625881c54 docs(MessageEmbed): document the constructor (#4077) 2020-04-16 12:07:08 +02:00
SpaceEEC
4c2308b4c6 docs(MessageManager): document return type of delete (#4012)
* docs(MessageManager): document return type of delete

* docs(MessageManager): use Promise<void> over Promise

Co-Authored-By: Papaia <43409674+ItsPapaia@users.noreply.github.com>

Co-authored-by: Papaia <43409674+ItsPapaia@users.noreply.github.com>
2020-04-16 11:57:03 +02:00
SpaceEEC
7ce58dbd4a docs(ShardClientUtil): link Shard#message from send method (#4028)
* docs(ShardClientUtil): link Shard#message from send method

* docs(ShardClientUtil): use @ emits instead of @ link
2020-04-16 11:56:42 +02:00
Ron B
2388467bd3 chore(Typings): stricter def for Client#emit (#4087) 2020-04-16 11:52:52 +02:00
withmask
d7096569c8 fix(PermissionOverwrites): resolveOverwriteOptions description (#4088)
smoll update
2020-04-16 11:52:06 +02:00
Advaith
fcacf1bc0d fix(Guild): sort text, news, and store channels together (#4070) 2020-04-16 10:35:19 +02:00
Carter
2e5a6476d5 feat: User#flags (#4060)
* feat: user flags

* fix: unnecessary negated statement

* fix: wording for description

* fix: an vs. a

* feat: add verified bot and dev flags

Co-Authored-By: Vlad Frangu <kingdgrizzle@gmail.com>

* typings :verified bot and dev flags

Co-Authored-By: Vlad Frangu <kingdgrizzle@gmail.com>

* feat: mon's suggestion, async fetchFlags & jsdoc

* feat: added to index.js

* fix: typo

* style: leveled flags

* typings: update leveled flags

Co-authored-by: Vlad Frangu <kingdgrizzle@gmail.com>
2020-04-16 10:32:15 +02:00
cherryblossom000
72a33cb8c2 fix(Typings): GuildPreview#features and Integration#type (#4080)
* fix(Typings): make GuildPreview#features an array

* fix(Typings): make Integration#type a string
2020-04-16 10:31:40 +02:00
SpaceEEC
72a7f2b3ed fix(ClientApplication): type fetchAssets as resolving with an a… (#4078) 2020-04-16 09:27:52 +02:00
SpaceEEC
a8db9884d5 feat(Message): add allowedMentions to MessageEditOptions (#4071) 2020-04-16 09:27:19 +02:00
Roki
1330e2d246 feat: add supported 4096 image size and jpeg format (#4031)
* add 4096 avatar size that discord supports

* jpeg is also a thing

* update jsdocs

* update typings and remove duplicate type
2020-04-12 22:20:31 +02:00
Jyguy
9ba4eff279 fix(StreamDispatcher): correct property types (#4059)
* typings(StreamDispatcher): correct property types

* typings(StreamDispatcher): order methods alphabetically
2020-04-12 20:58:53 +02:00
Vlad Frangu
e5fac8c32f chore(WebSocketShard): log Discord requested reconnects (#4066) 2020-04-12 20:57:50 +02:00
Quentin
a07c3c2f94 fix(BaseManager): remove declaration of remove method (#4069)
The BaseManager#remove method doesn't exist, but was in the BaseManager typings.
2020-04-12 20:54:34 +02:00
SpaceEEC
828640ca26 ci(Testing): add TypeScript test job (#4002)
* ci(Testing): add TypeScript job

* chore: add eol before eof
2020-04-04 14:11:59 +02:00
SpaceEEC
9e4c39ae53 fix(Message): update MessageMention's roles on message edit (#4016) 2020-04-03 21:30:49 +02:00
Amish Shah
0e44ecd420 chore: fix typings/docs for VoiceBroadcast (#4014) 2020-04-03 11:19:24 +01:00
Advaith
849c6324d3 feat(Guild): PUBLIC_DISABLED and WELCOME_SCREEN_ENABLED features (#4009) 2020-04-03 11:59:51 +02:00
Syntle
691e96c5cf fix(Presence): add missing userID property to declarations (#4013)
* Added `userID` property to `Presence` class

userID property exists in docs but not in typings

* fix(Presence): userID should be typed as Snowflake

Co-Authored-By: BorgerKing <38166539+RDambrosio016@users.noreply.github.com>

Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: BorgerKing <38166539+RDambrosio016@users.noreply.github.com>
2020-04-03 11:57:50 +02:00
iCrawl
6544d22338 chore(Release): version 2020-03-27 22:25:33 +01:00
SpaceEEC
5e491260a1 fix(Typings): use Channel instead of *ChannelTypes in ClientEve… (#4001) 2020-03-27 22:23:46 +01:00
iCrawl
f16a0790ca chore(release): version 2020-03-27 21:04:59 +01:00
SpaceEEC
b441469044 revert: channel unions (#3918 69d69f2) (#3978)
* revert: channel unions (#3918 69d69f25b9)

* fix: correct tslint:disable

* revert: keep the GuildChannel#setParent change

Co-authored-by: Crawl <icrawltogo@gmail.com>
2020-03-27 20:58:11 +01:00
SouSinner
88133d0d77 feat(GuildPreview): implement support for "preview" endpoint (#3965)
* feat(GuildPreview): method — fetchGuildPreview

* feat(GuildPreview): structure — GuildPreview

* feat(GuildPreview): update typings

* fix(GuildPreview): remove typedef for Features — already exists

* refactor(GuildPreview): update JSDocs & method

* feat(GuildPreview): implement DiscoverySplash function

* fix(GuildPreview): description & error handling for id

* fix(GuildPreview): misleading description, assign emojis correctly

* feat(GuildPreview): func DisplaySplash & GuildPreviewEmoji interface

* fix(Typings): satisfy TSLint

* fix(GuildPreview): toJSON - returns a value now

* feat(GuildPreview): add fetchPreview method on instance of Guild

* feat(GuildPreview): update typings

* fix: missing client constructor

* fix: typo in typings

* feat(BaseEmoji): implement BaseEmoji — parent for emoji instances

* feat(BaseEmoji): refactor - GuildEmoji extends BaseEmoji now

* feat(BaseEmoji): refactor - adjust emojis prop to BaseEmoji instance

* feat(BaseEmoji): not documented fully - GuildPreviewEmoji

* feat(BaseEmoji): update typings

* fix: remove duplicate typing properties - inherited

* fix: remove redundant methods & properties - inherited / already set

* fix: let -> const

* fix: typings - put BaseEmoji after BaseClient

* fix: remove _clone method  - redundant

* refactor(GuildPreview): emojis should be a collection

* refactor: rename base class, move relevant props there and expose roles

* fix(GuildPreview): update emojis in _patch

* fix(Typings): remove empty line, add Client#fetchGuildPreview

* feat: export GuildPreview

* fix(Typings): add GuildPreview#discoverSplash, icon, and splash

Co-authored-by: LxveFades <twitchisadeck@gmail.com>
Co-authored-by: Crawl <icrawltogo@gmail.com>
Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2020-03-27 20:57:28 +01:00
Jyguy
fee9a218e8 docs(MessageMentionTypes): move possible values to description (#3990)
* docs(MessageMentionTypes): correct type

* docs(MessageMentionTypes): change role to roles

* docs(MessageMentionOptions): correct description to allow usage as an array

* remove unneeded part of description

Co-Authored-By: Ryan Munro <rsm999@uowmail.edu.au>

* docs: add DisableMentionType to remove literal string types

Co-authored-by: Ryan Munro <rsm999@uowmail.edu.au>
2020-03-27 20:54:27 +01:00
Carter
51ff5ddb64 chore: incorrect word in issue template (#3996) 2020-03-26 11:33:11 +01:00
didinele
65e8c92d7c fix(WebsocketShard): pass ignore ACK when Discord asks for a beat (#3993) 2020-03-25 12:55:20 +01:00
Ryan Munro
f2fdb93318 fix(Typings): client message event should not emit PartialMessa… (#3983)
* fix(Typings): client message event should not emit PartialMessage

* Update typings/index.d.ts

Co-Authored-By: Jyguy <jskekkx@gmail.com>

Co-authored-by: Crawl <icrawltogo@gmail.com>
Co-authored-by: Jyguy <jskekkx@gmail.com>
2020-03-23 08:36:27 +01:00
Sugden
5da734c3d4 typings: add back accidental removal (#3984) 2020-03-23 08:30:04 +01:00
Jyguy
993411d9fe docs(MessageReaction): fix jsdoc for count (#3980) 2020-03-22 20:09:31 +00:00
SpaceEEC
215740157b fix: always emit guildUnavailable when a guild becomes unavailable (#3975) 2020-03-21 11:31:34 +00:00
Crawl
645e09e859 chore(ci): buggy void return rule 2020-03-21 09:54:58 +01:00
C eq Q divided-by U
495cfa96c2 fix(TypingStart): typing methods returning falsy values (#3939)
* fix: typing methods returning falsy values

* fix: eslint

* fix: no provided parameters; updated jsdocs

* fix(Typings): reflect typingStop

* refactor: since and lastTimestamp merged into one constructable value

* feat(Typings): document Channel#_typing

* feat: emit TypingData on typingStart; update jsdocs

* feat(Typings): move _typing to TextBasedChannel; sort props alphabetic

* feat(Event): remove typingStop

* feat(Typings): update typings - remove typingStop

* feat(Event): remove typingStop from Constants

* feat(Typing): remove TypingData class - redundant

* refactor(Events): remove TYPING_STOP event

* refactor(TypingData): now is an interface for _typing

* fix(TypingStart): timeout variable, removed emit for TypingData

* feat(Typing): timeout property on Channel#_typing, remove redundancy

* fix(Typings): extra overload(s)

Co-Authored-By: Sugden <28943913+NotSugden@users.noreply.github.com>

* Update index.d.ts

* fix(Typings): remove "private" from interface — invalid TS

* feat(Typings): add PartialUser in case partials are enabled

Co-Authored-By: Sugden <28943913+NotSugden@users.noreply.github.com>

* feat(Typings): document 'timeout' property of TypingData

Co-authored-by: Crawl <icrawltogo@gmail.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2020-03-21 09:52:40 +01:00
Advaith
0f38d807c7 fix(Guild): default max presences value (#3970) 2020-03-21 09:02:12 +01:00
Ryan Munro
df324e2c21 feat(AllowedMentions): add support for MessageOptions#allowedMe… (#3893)
* feat(Allowed Mentions): Add support for new Allowed Mentions message options

* fix(docs): Update JSDoc for feature

* fix(apimessage): translate the propery into snake_case

* fix(typings): message mention options should be optional

* fix(docs): jsdoc typings for MessageMentionOptions

* fix(mentions): use Resolvables for MessageMentionOptions

* fix(docs): typedef for MessageMentionTypes

* Update typings/index.d.ts

Co-Authored-By: Sugden <28943913+NotSugden@users.noreply.github.com>

* fix(mentions): drop support for Resolvables

* fix(AllowedMentions): remove the whole resolve function

* fix(docs): revert change to Resolvables

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2020-03-19 11:56:03 +01:00
uhKevinMC
cd52424fb7 docs(VoiceState): improve phrasing of setChannel method (#3959)
* (docs) Fixed phrasing of docs

Added permission needed to edit a member's voice state and adjusted docs to say **"Disconnect"** instead of **"Kicking"** the member.

* fixed line length on 156
2020-03-19 11:51:40 +01:00
KhaaZ
5b9cdc5cd2 feat(Permissions): Adds VIEW_GUILD_INSIGHTS (#3928) 2020-03-17 21:37:40 +00:00
Sugden
a6605155f0 typings/fix(Partials): fix unexpected TSC errors (#3957) 2020-03-17 20:01:26 +01:00
Sugden
a5267e1163 docs(MessageEmbed): correct description of createdAt (#3897)
* docs(MessageEmbed): correct description of createdAt

* typo
2020-03-17 19:04:46 +01:00
Sugden
8b906c69bb fix(Partials): correctly document properties for partialized st… (#3922)
* fix(Partials): properly document partial properties

* style: turn tabs into spaces

* style: order properties alphabetically

* fix(typings): PartialDMChannel will always have a recipient

* change properties to undefined instead of null

* docs: correctly mark properties

* style: remove tabs

* fix(partials): document properties properly

* style: tabs

* style: random line

* docs(User): tag is nullable

* typings(User/GuildMember): document lastMessageID properly

* typings/fix: change lastMessageID to lastMessageChannelID

Co-authored-by: Crawl <icrawltogo@gmail.com>
2020-03-17 18:59:47 +01:00
izexi
8c0a940cdb fix(Channel): ensure partial DMChannels get created (#3954) 2020-03-17 18:52:59 +01:00
izexi
a36a65b36a fix(MessageReaction): fetching a removed partial custom emoji (#3955)
* fix: handling GuildEmoji within fetch()

* refactor: remove unused "private" methods

* refactor: make use of Message#fetch() to patch
2020-03-17 18:52:43 +01:00
Daniell
2be9ebaad2 feat(typings): allow event listener type param inference (#3944)
* feat: allow listener type param inference

* fix: typo

* fix: invalid listener type

Co-Authored-By: Sugden <28943913+NotSugden@users.noreply.github.com>

* fix: intellisense (user should extend interface)

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2020-03-17 18:52:11 +01:00
Crawl
7994b5612a docs(PlayInterface): update example for broadcast
Co-authored-by: Carter <45381083+Fyko@users.noreply.github.com>
2020-03-17 09:13:19 +01:00
SpaceEEC
7b38f46caf fix(RequestHandler): a global timeout implies limited (#3950) 2020-03-17 09:02:51 +01:00
Joe Villegas
609a545131 typings(StreamDispatcher): remove end event (#3945) 2020-03-17 09:02:43 +01:00
Sugden
a53404fac3 typings(PartialTextBasedChannelFields): fix send overload (#3942) 2020-03-15 19:14:10 +01:00
Ryan Munro
69d69f25b9 feat(Types): support type-guarding using Channel#type string li… (#3918)
* feat(types): union type for Channels

* feat(Types): union for TextBasedChannelTypes

* fix(Types): use new union types in return values

* Update typings/index.d.ts

Co-Authored-By: Sugden <28943913+NotSugden@users.noreply.github.com>

* Update typings/index.d.ts

Co-Authored-By: Sugden <28943913+NotSugden@users.noreply.github.com>

* fix(Types): various minor improvements for Partials

* fix(GuildChannel): partial should return false

Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
Co-authored-by: Crawl <icrawltogo@gmail.com>
2020-03-14 16:50:43 +01:00
Sugden
44ac5fe6df fix(Util): cleanContent should remove mentions after formatting… (#3936) 2020-03-14 13:39:54 +01:00
Sugden
d43f78c845 typings(PartialTextBasedChannelFields): fix send overloads (#3935)
* typings(PartialTextBasedChannelFields): Remove duplicate types for parameters

* typings(PartialTextBasedChannelFields): fix overloads for send

* style: add semicolons and remove whitespace
2020-03-14 13:39:22 +01:00
vzwGrey
e5264aba37 fix(GuildMemberRolesManager): type error should mention Role an… (#3931)
* fix(GuildMemberRoleManager): type error should mention that Role or Snowflake are fine too

* fix(GuildMemberRoleManager): comma instead of 'or'

* style: break long line
2020-03-14 13:38:51 +01:00
SpaceEEC
ca75eb509a fix(GuildEmojiManager): throw an error if image resolving fails (#3934)
* fix(GuildEmojiManager): throw an error if image resolving fails

* refactor(GuildEmojiManager): remove redundant if branch
2020-03-14 11:44:08 +01:00
Sugden
5b8f02243c typings(Client): remove typingStop event (#3919) 2020-03-14 11:41:05 +01:00
iCrawl
76634db9be chore: use cross-env to set env vars 2020-03-08 20:18:40 +01:00
iCrawl
36050d07f5 chore: release version 12.0.2 2020-03-08 20:06:30 +01:00
SpaceEEC
a4f7e07b3b fix(APIRequest): only use form data when actually sending files (#3917) 2020-03-08 19:28:19 +01:00
Bence
79a28b55a8 docs(Structures): add ExtendableStructure typedef (#3908)
* docs(Structures): add ExtendableStructure typedef

* revert automatical package.json change
2020-03-08 19:28:03 +01:00
Crawl
b5dfb55923 docs: make collections more accessible in docs (#3907)
Fixes #3896
2020-03-08 19:27:42 +01:00
SpaceEEC
69d415301d perf(VoiceConnection): skip redundant volume transformer on join (#3916) 2020-03-08 17:40:06 +00:00
Matt (IPv4) Cowley
3e169cb4d3 fix(MessageEmbed): skip validation of fields when inside a message (#3894)
* fix(MessageEmbed): Add skipValidation flag to MessageEmbed

* fix(MessageEmbed): Use skipValidation flag in Message

* fix(MessageEmbed): Restore static normalizeField(s) methods

* fix(MessageEmbed): Update typings for constructor

* fix(MessageEmbed): Remove private docstrings/typings

* fix(MessageEmbed): Use skipValidation without storing in instance

* fix(MessageEmbed): skipValidation without modifying normalizeFields

* fix(MessageEmbed): Revert indentation change in typings

* fix(MessageEmbed): Clone logic from normalizeFields (duplicated code ftw)

* revert(MessageEmbed): remove dead code / breaking change

- dead code
  discord.js does not use those methods interally and won't in the future, as Discord
  does not emit any partial embed updates and doing so in the future seems unlikely.
- a breaking change (an incompatible api change)
  Although it's not recommended to do, users can modify
  received embeds without cloning them, e.g.:
  const embed = message.embeds[0].addField('some title', '');
  (replace '' with some function call; this is just an example)
  This would no longer throw a synchronous error (breaking change),
  but at a later point when actually sending it. (poorer to debug)

Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
2020-03-08 17:24:18 +01:00
Silver Shadow
3c653aafe8 docs(GuildMemberResolvable): an member -> a member (#3909)
an member -> a member
2020-03-08 16:00:43 +01:00
SpaceEEC
f387337787 fix(Guild): resolve role id and call existing handler (#3904) 2020-03-07 06:06:58 +01:00
Sugden
9b5f005394 test: update tests (#3865)
* test: update tests

* style: fix indent

* test: suggested changes

* test: require correct directory

Co-authored-by: Crawl <icrawltogo@gmail.com>
2020-03-07 06:05:57 +01:00
SpaceEEC
bca4b038a5 docs(BitField): document constructors of deriving classes (#3903) 2020-03-07 06:00:48 +01:00
Spooder
b5a7e5cdf0 docs(sharding): ShardingManager#createShard doesn't spawn the s… (#3875)
* Fixed createShard() to show an example!

* docs(ShardingManager): clarify createdShard docs

* docs(Shard): clarify manager parameter

* docs(ShardingManager): use an info tag for createShard's param

Co-Authored-By: Sugden <28943913+NotSugden@users.noreply.github.com>

Co-authored-by: SpaceEEC <spaceeec@yahoo.com>
Co-authored-by: Sugden <28943913+NotSugden@users.noreply.github.com>
2020-03-07 06:00:11 +01:00
Souji
61ef46ff30 fix: adapt #manageable to check for CONNECT for VoiceChannel (#3885) 2020-03-06 07:00:49 +01:00
iCrawl
0066d0089e chore: pascal-case in scope 2020-03-04 20:33:18 +01:00
Advaith
bfcd4befc9 docs(faq): replace ffmpeg-binaries with ffmpeg-static (#3886) 2020-03-03 12:29:56 +00:00
321 changed files with 51519 additions and 13150 deletions

26
.commitlintrc.json Normal file
View File

@@ -0,0 +1,26 @@
{
"extends": ["@commitlint/config-angular"],
"rules": {
"scope-case": [2, "always", "pascal-case"],
"type-enum": [
2,
"always",
[
"chore",
"build",
"ci",
"docs",
"feat",
"fix",
"perf",
"refactor",
"revert",
"style",
"test",
"types",
"workflow",
"wip"
]
]
}
}

1
.eslintignore Normal file
View File

@@ -0,0 +1 @@
/typings/**/*

View File

@@ -2,13 +2,12 @@
"extends": ["eslint:recommended", "plugin:prettier/recommended"],
"plugins": ["import"],
"parserOptions": {
"ecmaVersion": 2019
"ecmaVersion": 2021
},
"env": {
"es6": true,
"es2021": true,
"node": true
},
"overrides": [{ "files": ["*.browser.js"], "env": { "browser": true } }],
"rules": {
"import/order": [
"error",
@@ -26,7 +25,8 @@
"singleQuote": true,
"quoteProps": "as-needed",
"trailingComma": "all",
"endOfLine": "lf"
"endOfLine": "lf",
"arrowParens": "avoid"
}
],
"strict": ["error", "global"],

76
.github/CODE_OF_CONDUCT.md vendored Normal file
View File

@@ -0,0 +1,76 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to make participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
- The use of sexualized language or imagery and unwelcome sexual attention or
advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or electronic
address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies within all project spaces, and it also applies when
an individual is representing the project or its community in public spaces.
Examples of representing a project or community include using an official
project e-mail address, posting via an official social media account, or acting
as an appointed representative at an online or offline event. Representation of
a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at https://discord.gg/djs. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq

91
.github/COMMIT_CONVENTION.md vendored Normal file
View File

@@ -0,0 +1,91 @@
## Git Commit Message Convention
> This is adapted from [Angular's commit convention](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular).
#### TL;DR:
Messages must be matched by the following regex:
```js
/^(revert: )?(feat|fix|docs|style|refactor|perf|test|workflow|build|ci|chore|types|wip)(\(.+\))?: .{1,72}/;
```
#### Examples
Appears under "Features" header, `GuildMember` subheader:
```
feat(GuildMember): add 'tag' method
```
Appears under "Bug Fixes" header, `Guild` subheader, with a link to issue #28:
```
fix(Guild): handle events correctly
close #28
```
Appears under "Performance Improvements" header, and under "Breaking Changes" with the breaking change explanation:
```
perf(core): improve patching by removing 'bar' option
BREAKING CHANGE: The 'bar' option has been removed.
```
The following commit and commit `667ecc1` do not appear in the changelog if they are under the same release. If not, the revert commit appears under the "Reverts" header.
```
revert: feat(Managers): add Managers
This reverts commit 667ecc1654a317a13331b17617d973392f415f02.
```
### Full Message Format
A commit message consists of a **header**, **body** and **footer**. The header has a **type**, **scope** and **subject**:
```
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
```
The **header** is mandatory and the **scope** of the header is optional.
### Revert
If the commit reverts a previous commit, it should begin with `revert:`, followed by the header of the reverted commit. In the body, it should say: `This reverts commit <hash>.`, where the hash is the SHA of the commit being reverted.
### Type
If the prefix is `feat`, `fix` or `perf`, it will appear in the changelog. However, if there is any [BREAKING CHANGE](#footer), the commit will always appear in the changelog.
Other prefixes are up to your discretion. Suggested prefixes are `docs`, `chore`, `style`, `refactor`, and `test` for non-changelog related tasks.
### Scope
The scope could be anything specifying the place of the commit change. For example `GuildMember`, `Guild`, `Message`, `MessageEmbed` etc...
### Subject
The subject contains a succinct description of the change:
- use the imperative, present tense: "change" not "changed" nor "changes"
- don't capitalize the first letter
- no dot (.) at the end
### Body
Just as in the **subject**, use the imperative, present tense: "change" not "changed" nor "changes".
The body should include the motivation for the change and contrast this with previous behavior.
### Footer
The footer should contain any information about **Breaking Changes** and is also the place to
reference GitHub issues that this commit **Closes**.
**Breaking Changes** should start with the word `BREAKING CHANGE:` with a space or two newlines. The rest of the commit message is then used for this.

View File

@@ -1,6 +1,6 @@
# Contributing
**The issue tracker is only for bug reports and enhancement suggestions. If you have a question, please ask it in the [Discord server](https://discord.gg/bRCvFy9) instead of opening an issue you will get redirected there anyway.**
**The issue tracker is only for bug reports and enhancement suggestions. If you have a question, please ask it in the [Discord server](https://discord.gg/djs) instead of opening an issue you will get redirected there anyway.**
If you wish to contribute to the discord.js codebase or documentation, feel free to fork the repository and submit a
pull request. We use ESLint to enforce a consistent coding style, so having that set up in your editor of choice
@@ -10,9 +10,8 @@ is a great boon to your development process.
To get ready to work on the codebase, please do the following:
1. Fork & clone the repository, and make sure you're on the **master** branch
2. Run `npm install`
3. If you're working on voice, also run `npm install @discordjs/opus` or `npm install opusscript`
4. Code your heart out!
5. Run `npm test` to run ESLint and ensure any JSDoc changes are valid
6. [Submit a pull request](https://github.com/discordjs/discord.js/compare)
1. Fork & clone the repository, and make sure you're on the **main** branch
2. Run `npm ci`
3. Code your heart out!
4. Run `npm test` to run ESLint and ensure any JSDoc changes are valid
5. [Submit a pull request](https://github.com/discordjs/discord.js/compare) (Make sure you follow the [conventional commit format](https://github.com/discordjs/discord.js/blob/main/.github/COMMIT_CONVENTION.md))

13
.github/FUNDING.yml vendored
View File

@@ -1,11 +1,2 @@
# These are supported funding model platforms
# github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
# patreon: # Replace with a single Patreon username
# open_collective: # Replace with a single Open Collective username
# ko_fi: # Replace with a single Ko-fi username
# tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
# custom: # Replace with a single custom sponsorship URL
github: amishshah
patreon: discordjs
github: [iCrawl, amishshah, vladfrangu, kyranet]
open_collective: discordjs

View File

@@ -1,39 +0,0 @@
---
name: Bug report
about: Report incorrect or unexpected behaviour of discord.js
title: ''
labels: 's: unverified, type: bug'
assignees: ''
---
<!--
If you need help with discord.js installation or usage, please go to the discord.js Discord server instead:
https://discord.gg/bRCvFy9
This issue tracker is only for bug reports and enhancement suggestions.
You won't receive any basic help here.
-->
**Please describe the problem you are having in as much detail as possible:**
**Include a reproducible code sample here, if possible:**
```js
// Place your code here
```
**Further details:**
- discord.js version:
- Node.js version:
- Operating system:
- Priority this issue should have please be realistic and elaborate if possible:
<!--
If this applies to you, please check the respective checkbox: [ ] becomes [x].
You don't have to modify the text to suit your particular situation if you want to
elaborate, please do so in the description.
While it's not a requirement to test your issue on the master branch, it would make fixing
the problem a lot easier for us, so please do so if possible.
-->
- [ ] I have also tested the issue on latest master, commit hash:

138
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,138 @@
name: Bug report
description: Report incorrect or unexpected behavior of discord.js
labels: [bug, need repro]
body:
- type: markdown
attributes:
value: |
Use Discord for questions: https://discord.gg/djs
If you are reporting a voice issue, please post your issue at https://github.com/discordjs/voice/issues
- type: textarea
id: description
attributes:
label: Issue description
description: |
Describe the issue in as much detail as possible.
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files into it.
placeholder: |
Steps to reproduce with below code sample:
1. do thing
2. do thing in Discord client
3. observe behavior
4. see error logs below
validations:
required: true
- type: textarea
id: codesample
attributes:
label: Code sample
description: Include a reproducible, minimal code sample. This will be automatically formatted into code, so no need for backticks.
render: typescript
placeholder: |
const { Client, Intents } = require('discord.js');
const client = new Client({ intents: [Intents.FLAGS.GUILDS] });
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('interactionCreate', async interaction => {
if (!interaction.isCommand()) return;
if (interaction.commandName === 'ping') {
await interaction.reply('Pong!');
}
});
client.login('token');
- type: input
id: djs-version
attributes:
label: discord.js version
description: Which version of discord.js are you using? Run `npm list discord.js` in your project directory and paste the output.
placeholder: 13.x.x (we no longer support version 12 or earlier)
validations:
required: true
- type: input
id: node-version
attributes:
label: Node.js version
description: |
Which version of Node.js are you using? Run `node --version` in your project directory and paste the output.
If you are using TypeScript, please include its version (`npm list typescript`) as well.
placeholder: Node.js version 16.6+ is required for version 13.0.0+
validations:
required: true
- type: input
id: os
attributes:
label: Operating system
description: Which OS does your application run on?
- type: dropdown
id: priority
attributes:
label: Priority this issue should have
description: Please be realistic. If you need to elaborate on your reasoning, please use the Issue description field above.
options:
- Low (slightly annoying)
- Medium (should be fixed soon)
- High (immediate attention needed)
validations:
required: true
- type: dropdown
id: partials
attributes:
label: Which partials do you have configured?
description: |
Check your Client constructor for the `partials` key.
Tip: you can select multiple items
options:
- No Partials
- USER
- CHANNEL
- GUILD_MEMBER
- MESSAGE
- REACTION
- GUILD_SCHEDULED_EVENT
multiple: true
validations:
required: true
- type: dropdown
id: intents
attributes:
label: Which gateway intents are you subscribing to?
description: |
Check your Client constructor for the `intents` key.
Tip: you can select multiple items
options:
- GUILDS
- GUILD_MEMBERS
- GUILD_BANS
- GUILD_EMOJIS_AND_STICKERS
- GUILD_INTEGRATIONS
- GUILD_WEBHOOKS
- GUILD_INVITES
- GUILD_VOICE_STATES
- GUILD_PRESENCES
- GUILD_MESSAGES
- GUILD_MESSAGE_REACTIONS
- GUILD_MESSAGE_TYPING
- DIRECT_MESSAGES
- DIRECT_MESSAGE_REACTIONS
- DIRECT_MESSAGE_TYPING
- GUILD_SCHEDULED_EVENTS
multiple: true
validations:
required: true
- type: input
id: dev-release
attributes:
label: I have tested this issue on a development release
placeholder: d23280c
description: |
The issue might already be fixed in a development release. This is not required, but helps us greatly.
To install the latest development release run `npm i discord.js@dev` in your project directory.
Run `npm list discord.js` and use the last part of the printed information (`d23280c` for `discord.js@xx.x.x-dev.1530234593.d23280c`)

View File

@@ -1,5 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: discord.js discord server
url: https://discord.gg/bRCvFy9
about: Please use this Discord Server to ask questions and get support. We don't typically answer questions here and they will likely be closed and redirected to the Discord server.
- name: Discord server
url: https://discord.gg/djs
about: Please visit our Discord server for questions and support requests.

View File

@@ -1,26 +0,0 @@
---
name: Feature request
about: Request a feature for the core discord.js library
title: ''
labels: 'type: enhancement'
assignees: ''
---
<!--
If you need help with discord.js installation or usage, please go to the discord.js Discord server instead:
https://discord.gg/bRCvFy9
This issue tracker is only for bug reports and enhancement suggestions.
You likely won't receive any basic help here.
-->
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the ideal solution**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@@ -0,0 +1,35 @@
name: Feature request
description: Request a new feature (documented features of the official Discord developer API only!)
labels: [feature request]
body:
- type: markdown
attributes:
value: |
We can only implement features that Discord publishes, documents and merges into the Discord API documentation.
We do not implement unreleased features.
Use Discord for questions: https://discord.gg/djs
- type: textarea
id: description
attributes:
label: Feature
description: A clear and concise description of what the problem is, or what feature you want to be implemented.
placeholder: I'm always frustrated when..., Discord has recently released..., A good addition would be...
validations:
required: true
- type: textarea
id: solution
attributes:
label: Ideal solution or implementation
description: A clear and concise description of what you want to happen.
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternative solutions or implementations
description: A clear and concise description of any alternative solutions or features you have considered.
- type: textarea
id: additional-context
attributes:
label: Other context
description: Any other context, screenshots, or file uploads that help us understand your feature request.

View File

@@ -1,12 +1,14 @@
**Please describe the changes this PR makes and why it should be merged:**
**Status**
- [ ] Code changes have been tested against the Discord API, or there are no code changes
- [ ] I know how to update typings and have done so, or typings don't need updating
**Semantic versioning classification:**
**Status and versioning classification:**
- [ ] This PR changes the library's interface (methods or parameters added)
- [ ] This PR includes breaking changes (methods removed or renamed, parameters moved or removed)
- [ ] This PR **only** includes non-code changes, like changes to documentation, README, etc.
<!--
Please move lines that apply to you out of the comment:
- Code changes have been tested against the Discord API, or there are no code changes
- I know how to update typings and have done so, or typings don't need updating
- This PR changes the library's interface (methods or parameters added)
- This PR includes breaking changes (methods removed or renamed, parameters moved or removed)
- This PR **only** includes non-code changes, like changes to documentation, README, etc.
-->

6
.github/SUPPORT.md vendored
View File

@@ -1,7 +1,7 @@
# Seeking support?
We're sorry, we only use this issue tracker for bugs in the library itself and feature requests for it. We are not able to provide general support or answser questions on the issue tracker.
We only use this issue tracker for bug reports and feature request. We are not able to provide general support or answer questions in the form of GitHub issues.
Should you want to ask such questions, please post in one of our support channels in our Discord server: https://discord.gg/bRCvFy9
For general questions about discord.js installation and use please use the dedicated support channels in our Discord server: https://discord.gg/djs
Any issues that don't directly involve a bug in the library or a feature request will likely be closed and redirected to the Discord server.
Any issues that don't directly involve a bug or a feature request will likely be closed and redirected.

80
.github/labels.yml vendored Normal file
View File

@@ -0,0 +1,80 @@
- name: 'api changes'
color: '5663e9'
- name: 'api support'
color: '5663e9'
- name: 'backlog'
color: '7ef7ef'
- name: 'bug'
color: 'd73a4a'
- name: 'caching'
color: '80c042'
- name: 'chore'
color: 'ffffff'
- name: 'ci'
color: '0075ca'
- name: 'dependencies'
color: '276bd1'
- name: 'discussion'
color: 'b6b1f9'
- name: 'discord'
color: '5663e9'
- name: 'documentation'
color: '0075ca'
- name: 'duplicate'
color: 'cfd3d7'
- name: 'error handling'
color: '80c042'
- name: 'feature request'
color: 'fcf95a'
- name: 'gateway'
color: '80c042'
- name: 'good first issue'
color: '7057ff'
- name: 'has PR'
color: '4b1f8e'
- name: 'help wanted'
color: '008672'
- name: 'interactions'
color: '80c042'
- name: 'in progress'
color: 'ffccd7'
- name: 'in review'
color: 'aed5fc'
- name: 'invalid'
color: 'e4e669'
- name: 'need repro'
color: 'c66037'
- name: 'performance'
color: '80c042'
- name: 'permissions'
color: '80c042'
- name: 'priority:high'
color: 'fc1423'
- name: 'question (please use Discord instead)'
color: 'd876e3'
- name: 'ratelimits'
color: '80c042'
- name: 'refactor'
color: '1d637f'
- name: 'regression'
color: 'ea8785'
- name: 'REST'
color: '80c042'
- name: 'semver:major'
color: 'c10f47'
- name: 'semver:minor'
color: 'e4f486'
- name: 'semver:patch'
color: 'e8be8b'
- name: 'sharding'
color: '80c042'
- name: 'tests'
color: 'f06dff'
- name: 'threads'
color: '80c042'
- name: 'typings'
color: '80c042'
- name: 'utility'
color: '80c042'
- name: 'wontfix'
color: 'ffffff'

18
.github/tsc.json vendored Normal file
View File

@@ -0,0 +1,18 @@
{
"problemMatcher": [
{
"owner": "tsc",
"pattern": [
{
"regexp": "^(?:\\s+\\d+\\>)?([^\\s].*)\\((\\d+),(\\d+)\\)\\s*:\\s+(error|warning|info)\\s+(\\w{1,2}\\d+)\\s*:\\s*(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"code": 5,
"message": 6
}
]
}
]
}

26
.github/workflows/auto-deprecate.yml vendored Normal file
View File

@@ -0,0 +1,26 @@
name: NPM auto deprecate
on:
workflow_dispatch:
schedule:
- cron: '0 1 * * *'
jobs:
auto-deprecate:
name: NPM auto deprecate
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Install Node v16
uses: actions/setup-node@v2
with:
node-version: 16
cache: npm
- name: Install dependencies
run: npm ci --ignore-scripts
- name: Deprecate versions
run: 'npm exec --no npm-deprecate -- --name "*dev*" --package "discord.js"'
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}

View File

@@ -3,7 +3,6 @@ on:
push:
branches:
- '*'
- '!webpack'
- '!docs'
tags:
- '*'
@@ -13,37 +12,18 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@master
uses: actions/checkout@v2
- name: Install Node v12
uses: actions/setup-node@master
- name: Install Node v16
uses: actions/setup-node@v2
with:
node-version: 12
node-version: 16
cache: npm
- name: Install dependencies
run: npm install
run: npm ci
- name: Build and deploy documentation
uses: discordjs/action-docs@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
webpack:
name: webpack
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@master
- name: Install Node v12
uses: actions/setup-node@master
with:
node-version: 12
- name: Install dependencies
run: npm install
- name: Build and deploy webpack
uses: discordjs/action-webpack@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

22
.github/workflows/labelsync.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
name: Label Sync
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
push:
branches:
- main
paths:
- '.github/labels.yml'
jobs:
labeler:
name: Labeler
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Run Label Sync
uses: crazy-max/ghaction-github-labeler@v3
with:
github-token: ${{ secrets.GITHUB_TOKEN }}

44
.github/workflows/publish-dev.yml vendored Normal file
View File

@@ -0,0 +1,44 @@
name: Publish dev
on:
workflow_dispatch:
schedule:
- cron: '0 */12 * * *'
jobs:
npm:
name: npm
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Install Node v16
uses: actions/setup-node@v2
with:
node-version: 16
registry-url: https://registry.npmjs.org/
cache: npm
- name: Check previous released version
id: pre-release
run: |
if [[ $(npm view discord.js@dev version | grep -e "$(jq --raw-output '.version' package.json).*.$(git rev-parse --short HEAD | cut -b1-3)") ]]; \
then echo '::set-output name=release::false'; \
else echo '::set-output name=release::true'; fi
- name: Install dependencies
if: steps.pre-release.outputs.release == 'true'
run: npm ci --ignore-scripts
- name: Deprecate old versions
if: steps.pre-release.outputs.release == 'true'
run: npm deprecate discord.js@"~$(jq --raw-output '.version' package.json)" "no longer supported" || true
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
- name: Publish
if: steps.pre-release.outputs.release == 'true'
run: |
npm version --git-tag-version=false $(jq --raw-output '.version' package.json).$(date +%s).$(git rev-parse --short HEAD)
npm publish --tag dev || true
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}

View File

@@ -1,58 +0,0 @@
name: Testing Cron
on:
schedule:
- cron: '0 */12 * * *'
jobs:
lint:
name: ESLint
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v1
- name: Install Node v12
uses: actions/setup-node@v1
with:
node-version: 12
- name: Install dependencies
run: npm install
- name: Run ESLint
uses: icrawl/action-eslint@v1
typings:
name: TSLint
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v1
- name: Install Node v12
uses: actions/setup-node@v1
with:
node-version: 12
- name: Install dependencies
run: npm install
- name: Run TSLint
run: npm run lint:typings
docs:
name: Documentation
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v1
- name: Install Node v12
uses: actions/setup-node@v1
with:
node-version: 12
- name: Install dependencies
run: npm install
- name: Test documentation
run: npm run docs:test

View File

@@ -1,4 +1,4 @@
name: Testing
name: Tests
on: [push, pull_request]
jobs:
lint:
@@ -8,16 +8,17 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v2
- name: Install Node v12
uses: actions/setup-node@v1
- name: Install Node v16
uses: actions/setup-node@v2
with:
node-version: 12
node-version: 16
cache: npm
- name: Install dependencies
run: npm install
run: npm ci
- name: Run ESLint
uses: icrawl/action-eslint@v1
run: npm run lint
typings:
name: TSLint
@@ -26,17 +27,40 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v2
- name: Install Node v12
uses: actions/setup-node@v1
- name: Install Node v16
uses: actions/setup-node@v2
with:
node-version: 12
node-version: 16
cache: npm
- name: Install dependencies
run: npm install
run: npm ci
- name: Run TSLint
run: npm run lint:typings
typescript:
name: TypeScript
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Install Node v16
uses: actions/setup-node@v2
with:
node-version: 16
cache: npm
- name: Install dependencies
run: npm ci
- name: Register Problem Matcher
run: echo "##[add-matcher].github/tsc.json"
- name: Run Type Tests
run: npm run test:typescript
docs:
name: Documentation
runs-on: ubuntu-latest
@@ -44,13 +68,14 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v2
- name: Install Node v12
uses: actions/setup-node@v1
- name: Install Node v16
uses: actions/setup-node@v2
with:
node-version: 12
node-version: 16
cache: npm
- name: Install dependencies
run: npm install
run: npm ci
- name: Test documentation
run: npm run docs:test

20
.gitignore vendored
View File

@@ -1,13 +1,18 @@
# Packages
node_modules/
yarn.lock
package-lock.json
# Log files
logs/
*.log
npm-debug.log*
# Authentication
# Runtime data
pids
*.pid
*.seed
# Env
.env
test/auth.json
test/auth.js
docs/deploy/deploy_key
@@ -15,8 +20,11 @@ docs/deploy/deploy_key.pub
deploy/deploy_key
deploy/deploy_key.pub
# Dist
dist/
docs/docs.json
# Miscellaneous
.tmp/
.vscode/
docs/docs.json
webpack/
.idea/
.DS_Store

4
.husky/commit-msg Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no-install commitlint --edit $1

4
.husky/pre-commit Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no-install lint-staged

4
.lintstagedrc.json Normal file
View File

@@ -0,0 +1,4 @@
{
"*.{mjs,js}": "eslint --fix --ext mjs,js,ts",
"*.{ts,json,yml,yaml}": "prettier --write"
}

View File

@@ -1,26 +0,0 @@
# Packages
node_modules/
yarn.lock
# Log files
logs/
*.log
# Authentication
deploy/
# Miscellaneous
.tmp/
.vscode/
docs/
# NPM ignore
.eslintrc.json
.gitattributes
.gitignore
.travis.yml
webpack.config.js
.github/
test/
tsconfig.json
tslint.json

6
.npmrc
View File

@@ -1 +1,5 @@
package-lock=false
audit=false
fund=false
legacy-peer-deps=true
tag-version-prefix=""
message="chore(Release): %s"

7
.prettierrc.json Normal file
View File

@@ -0,0 +1,7 @@
{
"singleQuote": true,
"printWidth": 120,
"trailingComma": "all",
"endOfLine": "lf",
"arrowParens": "avoid"
}

View File

@@ -10,8 +10,5 @@
"fullDocs": true,
"strong": true
},
"webpack": {
"configPath": "./webpack.config.js"
}
}
}

533
CHANGELOG.md Normal file
View File

@@ -0,0 +1,533 @@
# [13.4.0](https://github.com/discordjs/discord.js/compare/13.3.1...13.4.0) (2021-12-24)
### Bug Fixes
* **BaseMessageComponent:** don't create new class instances ([#7140](https://github.com/discordjs/discord.js/issues/7140)) ([e6f41b5](https://github.com/discordjs/discord.js/commit/e6f41b578a62dba4a4941c342f7b9fd01b2d6254))
* Make the followUp function error more clear ([#7129](https://github.com/discordjs/discord.js/issues/7129)) ([b763dab](https://github.com/discordjs/discord.js/commit/b763dabaa941826e635e630526ef227a16d69eec))
* **ActionsManager:** revert to manual requires ([#7034](https://github.com/discordjs/discord.js/issues/7034)) ([0193efa](https://github.com/discordjs/discord.js/commit/0193efae714c7c8f5b6a52b27277cb65cae9971e))
* **GuildAuditLog:** Remove `Promise`s in constructor ([#7089](https://github.com/discordjs/discord.js/issues/7089)) ([9cf44d1](https://github.com/discordjs/discord.js/commit/9cf44d1c0e2cffdf285c73d151e7d8e0f5dbbb9a))
* **GuildChannel:** default to `this.rawPosition` in `clone()` ([#7057](https://github.com/discordjs/discord.js/issues/7057)) ([5fcda73](https://github.com/discordjs/discord.js/commit/5fcda73d9f383bb27f8b9f141921b6f0b7e25b4d))
* **InteractionCollector:** handle thread (and parent) deletion ([#7070](https://github.com/discordjs/discord.js/issues/7070)) ([b5cd288](https://github.com/discordjs/discord.js/commit/b5cd2884b6277ac48c6d0663cf4916b249cda15b))
* **MessageManager:** Allow a string for `edit()` ([#7033](https://github.com/discordjs/discord.js/issues/7033)) ([54f937d](https://github.com/discordjs/discord.js/commit/54f937d82c4159d85e348dfb63b28f9f0c554805))
* **MessageManager:** do not use `client.emojis` ([#7039](https://github.com/discordjs/discord.js/issues/7039)) ([fd63139](https://github.com/discordjs/discord.js/commit/fd63139b41a7e97ecd633c36162c0e591df972bc))
* **MessagePayload:** prevent spread of `undefined` ([#7029](https://github.com/discordjs/discord.js/issues/7029)) ([fabd343](https://github.com/discordjs/discord.js/commit/fabd34381ce14a399204b0bf8fd1dde4bcb8628e))
* **MessageReaction:** Cache myself when `MessageReaction#me` is `true`. ([#6956](https://github.com/discordjs/discord.js/issues/6956)) ([b001e19](https://github.com/discordjs/discord.js/commit/b001e194f117ca8cfc9bcc9eb62dd7aab07988f7))
* **ReactionCollector:** check for channel.threads ([#7069](https://github.com/discordjs/discord.js/issues/7069)) ([3846f0d](https://github.com/discordjs/discord.js/commit/3846f0d97cf3ef81c578c0544e00dae3d1a5d994))
* **ShardingManager:** fix respawnAll not passing delay correctly ([#7084](https://github.com/discordjs/discord.js/issues/7084)) ([de61fe4](https://github.com/discordjs/discord.js/commit/de61fe485476102c106eb455d0c5e1f36fbf07df))
* **StickerPack:** Nullify `bannerId` ([#7119](https://github.com/discordjs/discord.js/issues/7119)) ([6bb03f2](https://github.com/discordjs/discord.js/commit/6bb03f2c3450261e6c5330a9abede1bb1d33e84d))
* avoid sending bot auth on token endpoints ([#7022](https://github.com/discordjs/discord.js/issues/7022)) ([7efeff4](https://github.com/discordjs/discord.js/commit/7efeff461fd542fcd50a5615320be680a2e72026))
* Interaction channel type should be `GuildTextBasedChannels` when in guild ([#6998](https://github.com/discordjs/discord.js/issues/6998)) ([da86bd4](https://github.com/discordjs/discord.js/commit/da86bd4fa309bbf47e3b39d6669bf746cecf94da))
* webhook typeguards should use string comparisons ([#7127](https://github.com/discordjs/discord.js/issues/7127)) ([645b3f8](https://github.com/discordjs/discord.js/commit/645b3f84f47f966e4c314bf6a9fcb216a503e6f8))
* **Message:** remove usage of `.deleted` ([#7109](https://github.com/discordjs/discord.js/issues/7109)) ([a0fe0ac](https://github.com/discordjs/discord.js/commit/a0fe0acbf1c0134d88d9fc519506cf33116288cc))
* **Sharding:** properly handle errors in fetchClientValues ([#6990](https://github.com/discordjs/discord.js/issues/6990)) ([c0ba2d4](https://github.com/discordjs/discord.js/commit/c0ba2d46d0796c95598673f77f04b180280afb57))
* **StoreChannel:** mark as deprecated ([#7072](https://github.com/discordjs/discord.js/issues/7072)) ([5ec542d](https://github.com/discordjs/discord.js/commit/5ec542d61fc47e6f150d96f5f4578ae2901d1cc7))
* **Util:** fix sorting for GuildChannels ([#7002](https://github.com/discordjs/discord.js/issues/7002)) ([c07207f](https://github.com/discordjs/discord.js/commit/c07207f219268010ace0dc6c35b518e990b2865b))
* **VoiceState:** set streaming to false when the stream ended ([#6992](https://github.com/discordjs/discord.js/issues/6992)) ([fdb09cb](https://github.com/discordjs/discord.js/commit/fdb09cbe03d45f72fe3413fde0debf5a79c69824))
### Features
* add support for GuildScheduledEvent ([#6493](https://github.com/discordjs/discord.js/issues/6493)) ([1316fd4](https://github.com/discordjs/discord.js/commit/1316fd4c6ad47729f566d3dd088bb3c144f4bf8e))
* **GuildMember:** Add timeouts ([#7104](https://github.com/discordjs/discord.js/issues/7104)) ([aa7c1b2](https://github.com/discordjs/discord.js/commit/aa7c1b2081eb77659afd65c2f917afbcab3a162f))
* add `UserContextMenuInteraction` and `MessageContextMenuInteraction` ([#7003](https://github.com/discordjs/discord.js/issues/7003)) ([4fe063f](https://github.com/discordjs/discord.js/commit/4fe063f0d00562b5987447a6b2b5900b64faec96))
* add API error code 20029 ([#7078](https://github.com/discordjs/discord.js/issues/7078)) ([f410536](https://github.com/discordjs/discord.js/commit/f410536c515ed3cf5ca9b528a302dd68a0ea22f8))
* Add API error code 50055 ([#7068](https://github.com/discordjs/discord.js/issues/7068)) ([f028aea](https://github.com/discordjs/discord.js/commit/f028aea33317b845ace2c2079ed9e8dbd4aad09c))
* Add API error code 50109 ([#7112](https://github.com/discordjs/discord.js/issues/7112)) ([55960cc](https://github.com/discordjs/discord.js/commit/55960cc77827dfd4b95b91ad1259bedd69f092ea))
* export Sweepers ([#7117](https://github.com/discordjs/discord.js/issues/7117)) ([b9b60a3](https://github.com/discordjs/discord.js/commit/b9b60a37b33aed2f85ef1e6cb6ae54481e946b92))
* **ApplicationCommand:** add setX methods for easier editing ([#7063](https://github.com/discordjs/discord.js/issues/7063)) ([7f980e3](https://github.com/discordjs/discord.js/commit/7f980e38b6838eaa0537d11e4d0848660c784a0c))
* **ApplicationCommand:** add support for min and max values ([#6855](https://github.com/discordjs/discord.js/issues/6855)) ([c30a818](https://github.com/discordjs/discord.js/commit/c30a818ca9cf93b5e6157d8a5caca4576eeb3222))
* **ApplicationFlags:** add message content intent flags ([#6888](https://github.com/discordjs/discord.js/issues/6888)) ([e94073a](https://github.com/discordjs/discord.js/commit/e94073a6ab6630d4b1c582b456e8118f5fdaf866))
* **Client:** add global sweepers ([#6825](https://github.com/discordjs/discord.js/issues/6825)) ([d1ef2f5](https://github.com/discordjs/discord.js/commit/d1ef2f5e8b02d9a1a9051c08c181a8ac82ec616f))
* **Guild:** add premiumProgressbarEnabled ([#6887](https://github.com/discordjs/discord.js/issues/6887)) ([552d89f](https://github.com/discordjs/discord.js/commit/552d89fd4e536745bb51ade13cf500e94b871b9f))
* **MessageAttachment:** description (alt text) support ([#6871](https://github.com/discordjs/discord.js/issues/6871)) ([5e0a7d5](https://github.com/discordjs/discord.js/commit/5e0a7d51fce3b67ba5a0e573fdc00a83693ad008))
* **Shard:** add eval context ([#7011](https://github.com/discordjs/discord.js/issues/7011)) ([77aff08](https://github.com/discordjs/discord.js/commit/77aff08345cd2b76ca350ba8086717623f028534))
* **SnowflakeUtil:** add `timestampFrom` ([#7058](https://github.com/discordjs/discord.js/issues/7058)) ([8b200c0](https://github.com/discordjs/discord.js/commit/8b200c0fee0cadf65244b1a84ccb6f244b9bfc7e))
* **SystemChannelFlags:** add new flag ([#6870](https://github.com/discordjs/discord.js/issues/6870)) ([49e3ce2](https://github.com/discordjs/discord.js/commit/49e3ce21339e19912ba853f00bc2d68ab117f29f))
* **ThreadChannel:** add `ThreadChannel#viewable` ([#6975](https://github.com/discordjs/discord.js/issues/6975)) ([db09d79](https://github.com/discordjs/discord.js/commit/db09d7942333dffad4fba875567758550d65bfef))
* **ThreadManager:** add slowmode option on thread creation ([#6989](https://github.com/discordjs/discord.js/issues/6989)) ([493e4f9](https://github.com/discordjs/discord.js/commit/493e4f9350a53f005416ce3d1552d3e776e42854))
* add new activity flags ([#6699](https://github.com/discordjs/discord.js/issues/6699)) ([47d74eb](https://github.com/discordjs/discord.js/commit/47d74ebf810fbf07cf79fde193a77171be24e74b))
## [13.3.1](https://github.com/discordjs/discord.js/compare/13.3.0...13.3.1) (2021-11-01)
### Bug Fixes
* assert channel types in message actions ([#6919](https://github.com/discordjs/discord.js/issues/6919)) ([9bd3689](https://github.com/discordjs/discord.js/commit/9bd3689fb1273956533a2d110cfc72407c58b832))
* **MessageEmbed:** only compare image urls in #equals ([#6926](https://github.com/discordjs/discord.js/issues/6926)) ([95d2a4d](https://github.com/discordjs/discord.js/commit/95d2a4d35ef30d83a2e9ca82b88c978f35c5e1e0))
* correctly access guild IDs inside managers ([#6927](https://github.com/discordjs/discord.js/issues/6927)) ([2d9ffb8](https://github.com/discordjs/discord.js/commit/2d9ffb8c5b1aa4f510b3448ea0eb1400ad6b85b9))
# [13.3.0](https://github.com/discordjs/discord.js/compare/13.2.0...13.3.0) (2021-10-29)
### Bug Fixes
* Handle message bulk delete and thread delete in collectors ([#6902](https://github.com/discordjs/discord.js/issues/6902)) ([d6685b1](https://github.com/discordjs/discord.js/commit/d6685b1c5097377b8228b32ff05f1e5553051417))
* **AllowedImageSizes:** add new image sizes ([#6844](https://github.com/discordjs/discord.js/issues/6844)) ([ef01b84](https://github.com/discordjs/discord.js/commit/ef01b84fa8c8933a496528da8eeeb346cbf41ea4))
* **ApplicationCommandManager:** update guild command cache on c/u/d ([#6841](https://github.com/discordjs/discord.js/issues/6841)) ([f169c8f](https://github.com/discordjs/discord.js/commit/f169c8fe460ef2be6f38d6ee73c55d8b4182e3b7))
* **Guild:** guild.available is never set on new joins ([#6769](https://github.com/discordjs/discord.js/issues/6769)) ([29667c9](https://github.com/discordjs/discord.js/commit/29667c96e52a9f0b1e499fa6c21d9fe80e06bb37))
* **GuildBanManager:** send reason in the headers instead of json body ([#6800](https://github.com/discordjs/discord.js/issues/6800)) ([bfb89de](https://github.com/discordjs/discord.js/commit/bfb89de864fd5dc4cbb654f6259f802ee21c9a0e))
* **GuildMember:** more explicit partial check ([#6760](https://github.com/discordjs/discord.js/issues/6760)) ([b1656bf](https://github.com/discordjs/discord.js/commit/b1656bfb4f72819512fc75d5c052d2982f0b9683))
* **MessageComponentInteraction:** component getter is not null anymore ([#6835](https://github.com/discordjs/discord.js/issues/6835)) ([7621e9d](https://github.com/discordjs/discord.js/commit/7621e9da4c9c5f501131d64aaa1a3a16c3b985db))
* **TextBasedChannel:** return the cached message instead of clone it ([#6877](https://github.com/discordjs/discord.js/issues/6877)) ([ceaf738](https://github.com/discordjs/discord.js/commit/ceaf738d2efc4b482c8a1fc5b486df99b1d0f037))
* `PartialGuildMember#id` is not null ([#6840](https://github.com/discordjs/discord.js/issues/6840)) ([4dff279](https://github.com/discordjs/discord.js/commit/4dff279a6f88612db9283851fba8850a2d6c65fe))
* **MessageReaction:** Prevent event double fire from uncached messages ([#6818](https://github.com/discordjs/discord.js/issues/6818)) ([267a4b3](https://github.com/discordjs/discord.js/commit/267a4b3f68fa81629a083ebf04f7e49b5579ae86))
* **Role:** check for presence of icon and unicode_emoji before patching ([#6780](https://github.com/discordjs/discord.js/issues/6780)) ([e31c5ca](https://github.com/discordjs/discord.js/commit/e31c5ca1a88a32e425f9e28abbdfd66d4309c5c6))
* **Types:** export more types ([#6808](https://github.com/discordjs/discord.js/issues/6808)) ([b474677](https://github.com/discordjs/discord.js/commit/b47467755cb5d1dd779d79ad86eb678bb13541e9))
* **User:** don't generate the banner URL when not cached ([#6783](https://github.com/discordjs/discord.js/issues/6783)) ([0d599a1](https://github.com/discordjs/discord.js/commit/0d599a1a7680fc4a35b5f44ba0c3b9aeccccbfaf))
* **Webhook:** Resolve source guild only if cached ([#6834](https://github.com/discordjs/discord.js/issues/6834)) ([d193d04](https://github.com/discordjs/discord.js/commit/d193d04cea862e2db84ac40226cfdbdb39be46d5))
### Features
* **ThreadMemberManager:** allow individual members to be fetched ([#6889](https://github.com/discordjs/discord.js/issues/6889)) ([14716df](https://github.com/discordjs/discord.js/commit/14716df6b62b35f3a09243ba12242db9dc798aa7))
* add support for autocomplete interactions ([#6672](https://github.com/discordjs/discord.js/issues/6672)) ([ddf759c](https://github.com/discordjs/discord.js/commit/ddf759c8117e7a00702d444f5b5f0c2257189b09))
* **MessageEmbed:** add #equals ([#6885](https://github.com/discordjs/discord.js/issues/6885)) ([fae4abf](https://github.com/discordjs/discord.js/commit/fae4abf2f7071425639e8d1ea1a8598403fa2a07))
* **StartThreadOptions:** default autoArchiveDuration to channel's defaultAutoArchiveDuration ([#6278](https://github.com/discordjs/discord.js/issues/6278)) ([740d3f0](https://github.com/discordjs/discord.js/commit/740d3f006ef637709e3026f90fe72f93b8397229))
* Add `rtcRegion` to `GuildManager#create()` ([#6858](https://github.com/discordjs/discord.js/issues/6858)) ([399e720](https://github.com/discordjs/discord.js/commit/399e720b92c11539f4d16a13e1b8190f136da6cc))
* add typeguards to webhooks ([#6850](https://github.com/discordjs/discord.js/issues/6850)) ([e0afcad](https://github.com/discordjs/discord.js/commit/e0afcadda4bf70497b327cd3b3372688ba03422a))
* **Client:** add apiResponse and apiRequest events ([#6739](https://github.com/discordjs/discord.js/issues/6739)) ([26f927b](https://github.com/discordjs/discord.js/commit/26f927b9fe338f2f3dc413f46122532608a5a080))
* **CommandInteraction:** add toString method ([#6793](https://github.com/discordjs/discord.js/issues/6793)) ([bd48e6d](https://github.com/discordjs/discord.js/commit/bd48e6df844fd535949937c3603629413d422526))
* **GuildChannelManager:** add 'rtcRegion' option to 'create' method ([#6849](https://github.com/discordjs/discord.js/issues/6849)) ([487d32d](https://github.com/discordjs/discord.js/commit/487d32d303c340b1609b0fe6b829a5f4fe001ef0))
* **Interaction:** add `isApplicationCommand` check ([#6801](https://github.com/discordjs/discord.js/issues/6801)) ([6898fa3](https://github.com/discordjs/discord.js/commit/6898fa3b37bf5248c85417f145dc377b4c0ebc82))
* **ModuleImporter:** implement import module compatible with bundlers ([#6709](https://github.com/discordjs/discord.js/issues/6709)) ([d399a28](https://github.com/discordjs/discord.js/commit/d399a28323fbcdc8c3e94f10b97f47e0dfc61f7a))
* **Permissions:** add checkAdmin to permission overwrite checks ([#6847](https://github.com/discordjs/discord.js/issues/6847)) ([7513b45](https://github.com/discordjs/discord.js/commit/7513b4528ca1b6cf03b8af147feb73ea42a4f8e6))
# [13.2.0](https://github.com/discordjs/discord.js/compare/13.1.0...13.2.0) (2021-10-05)
### Bug Fixes
* ***RoleManager:** Create set of role ids correctly ([#6674](https://github.com/discordjs/discord.js/issues/6674)) ([f8aa4bd](https://github.com/discordjs/discord.js/commit/f8aa4bd4705ee3bf7892670b944516d01146580f))
* **AllowedImageSizes:** add new image sizes ([#6754](https://github.com/discordjs/discord.js/issues/6754)) ([d0025be](https://github.com/discordjs/discord.js/commit/d0025beb7b1ee6611f4315be91b38788c428f1c1))
* **BaseClient:** Remove selfbot ability ([#6429](https://github.com/discordjs/discord.js/issues/6429)) ([9a833b1](https://github.com/discordjs/discord.js/commit/9a833b1e0eb638c60c4abbb9255ed64a170e4679))
* **CachedManager:** return updated data when cache is false ([#6685](https://github.com/discordjs/discord.js/issues/6685)) ([8426770](https://github.com/discordjs/discord.js/commit/84267708659e3e9bb2f8eb3b08d8923f235e8953))
* **Constants:** allow undefined size ([#6686](https://github.com/discordjs/discord.js/issues/6686)) ([d3da833](https://github.com/discordjs/discord.js/commit/d3da83368def207585bce9ea95564d79b5097a55))
* **GuildChannel:** Fix manageable method for voice-channels ([#6447](https://github.com/discordjs/discord.js/issues/6447)) ([9301c9b](https://github.com/discordjs/discord.js/commit/9301c9b42085e860f49a322879b21b923e23a4d7))
* **GuildEmoji:** Cache restricted roles and author data ([#6675](https://github.com/discordjs/discord.js/issues/6675)) ([60b8ba6](https://github.com/discordjs/discord.js/commit/60b8ba6b865ba02428d7926998af72cdaa17ea5d))
* **GuildManager:** add missing types and converts ([#6683](https://github.com/discordjs/discord.js/issues/6683)) ([cdf65f7](https://github.com/discordjs/discord.js/commit/cdf65f74e1e9d22d405617521d1e6711493ca120))
* **Invite:** #guild never resolving into a Guild ([#6742](https://github.com/discordjs/discord.js/issues/6742)) ([b76bb8a](https://github.com/discordjs/discord.js/commit/b76bb8a409c63aef9279acf5c1f60e846131f755))
* **Message:** avoid overwriting properties in _patch ([#6738](https://github.com/discordjs/discord.js/issues/6738)) ([a8c21cd](https://github.com/discordjs/discord.js/commit/a8c21cd754d634b4d40047f85264528681a61b41))
* **Message:** fix typo ([#6435](https://github.com/discordjs/discord.js/issues/6435)) ([ecb6e50](https://github.com/discordjs/discord.js/commit/ecb6e50b46e627e3217107d662dd19c64527976d))
* **Message:** pinnable returning false in non-DEFAULT messages ([#6585](https://github.com/discordjs/discord.js/issues/6585)) ([3183b11](https://github.com/discordjs/discord.js/commit/3183b1166a8c96f8864f7307710f88193217a773))
* **Message:** throw error on missing channel ([#6581](https://github.com/discordjs/discord.js/issues/6581)) ([60aa9ae](https://github.com/discordjs/discord.js/commit/60aa9ae478597caf66d5891ff6ca4d7b4336bcba))
* **MessageAttachment:** re-assign name ([#6518](https://github.com/discordjs/discord.js/issues/6518)) ([8a8c69a](https://github.com/discordjs/discord.js/commit/8a8c69a2575b9afc18fdb46a03424e7029499d17))
* **ReactionCollector:** only call the filter function once ([#6734](https://github.com/discordjs/discord.js/issues/6734)) ([d15dd5f](https://github.com/discordjs/discord.js/commit/d15dd5f07dab00e8a31f0a37b1e60ea4017871d0))
* **Role:** toJSON() throwing due to permission bigints ([#6724](https://github.com/discordjs/discord.js/issues/6724)) ([9e421f6](https://github.com/discordjs/discord.js/commit/9e421f6ccf09230769740e069590fb8937f766b9))
* **Shard:** eval promise never resolves ([#6649](https://github.com/discordjs/discord.js/issues/6649)) ([5070d23](https://github.com/discordjs/discord.js/commit/5070d23914c13814a98cf8ea560853a82b226f94))
* **Shard:** use provided timeout when respawning ([#6735](https://github.com/discordjs/discord.js/issues/6735)) ([905d100](https://github.com/discordjs/discord.js/commit/905d100d4def974223a128c6276d4a5833c04955))
* **Sticker:** Rename method correctly to _add ([#6421](https://github.com/discordjs/discord.js/issues/6421)) ([2c449b6](https://github.com/discordjs/discord.js/commit/2c449b6b48f5cbc88e666afa852055b873994ca5))
* **ThreadChannel:** fetchStarterMessage bug ([#6584](https://github.com/discordjs/discord.js/issues/6584)) ([08edc0b](https://github.com/discordjs/discord.js/commit/08edc0b1db52992b2a2f8f6012a6001fb4336f38))
* **threadMembersUpdate:** fixed typo ([#6589](https://github.com/discordjs/discord.js/issues/6589)) ([8826e9f](https://github.com/discordjs/discord.js/commit/8826e9ffbcc8990dbebe3ccdf6e65241ab4c863c))
* **User:** compare flags in #equals ([#6750](https://github.com/discordjs/discord.js/issues/6750)) ([00e1e26](https://github.com/discordjs/discord.js/commit/00e1e2673b86e0041f2bebab7b3ced5722f450bb))
* **UserUpdateAction:** rely on client.user when ids match ([#6511](https://github.com/discordjs/discord.js/issues/6511)) ([1418649](https://github.com/discordjs/discord.js/commit/141864917ac920a081df6f6b34c13ba83e660bbf))
* **Util:** allow empty strings in splitMessage ([#6437](https://github.com/discordjs/discord.js/issues/6437)) ([d6e6244](https://github.com/discordjs/discord.js/commit/d6e6244336ccdcdac9a06ab453debe76b13c9bde))
* **Util:** default `animated` to false when omitted on resolvePartialEmoji ([#6725](https://github.com/discordjs/discord.js/issues/6725)) ([8d80fec](https://github.com/discordjs/discord.js/commit/8d80fec86d39fc640fd746cc03e6270cd574c0cf))
* **VoiceState:** Patch streaming value ([#6747](https://github.com/discordjs/discord.js/issues/6747)) ([7eec061](https://github.com/discordjs/discord.js/commit/7eec06145a141d167afc7814f3cfd9e06eb292e6))
* allow null to be passed in order to reset icon/avatar ([#6646](https://github.com/discordjs/discord.js/issues/6646)) ([6033506](https://github.com/discordjs/discord.js/commit/603350645d0fe9d96b763d169215d15b3f4f71b1))
* await message component collectors should return component interactions not collectors ([#6562](https://github.com/discordjs/discord.js/issues/6562)) ([f49f70a](https://github.com/discordjs/discord.js/commit/f49f70a4ebacf657f22d73043e3a504710821249))
* don't patch set data with undefined ([#6694](https://github.com/discordjs/discord.js/issues/6694)) ([9eb9591](https://github.com/discordjs/discord.js/commit/9eb9591473902a7608aed9c1927690c4445a6fb9))
* **xxxable:** follow more properly with discord behavior ([#6551](https://github.com/discordjs/discord.js/issues/6551)) ([5d87398](https://github.com/discordjs/discord.js/commit/5d87398f9fc57915d5447842b4788f0c80642de0))
### Features
* add support for role icons ([#6633](https://github.com/discordjs/discord.js/issues/6633)) ([7129965](https://github.com/discordjs/discord.js/commit/7129965423e9fb333ca93cecba54b588073873fd))
* **ApplicationCommand:** add #equals ([#6414](https://github.com/discordjs/discord.js/issues/6414)) ([581921f](https://github.com/discordjs/discord.js/commit/581921f8b7152a009cb3bd0496627665b7e3442b))
* **ApplicationCommand:** add support for channel_types ([#6640](https://github.com/discordjs/discord.js/issues/6640)) ([3b14883](https://github.com/discordjs/discord.js/commit/3b14883e349c23a15aec225bb133ce49ed440817))
* **ApplicationCommand:** add version property ([#6603](https://github.com/discordjs/discord.js/issues/6603)) ([f866512](https://github.com/discordjs/discord.js/commit/f866512e8435e03012222298af09addefb605451))
* **BaseGuildTextChannel:** export `BaseGuildTextChannel` ([#6527](https://github.com/discordjs/discord.js/issues/6527)) ([fc51f61](https://github.com/discordjs/discord.js/commit/fc51f61f0cdc66087e918165646aee4be74e6e56))
* **CategoryChannel:** add createChannel shortcut method ([#6614](https://github.com/discordjs/discord.js/issues/6614)) ([3eacf7a](https://github.com/discordjs/discord.js/commit/3eacf7a58785db0639aa38ac4fd455f3b318d4f5))
* **Guild:** Add `Guild#maximumBitrate` getter. ([#6455](https://github.com/discordjs/discord.js/issues/6455)) ([21983de](https://github.com/discordjs/discord.js/commit/21983de3e00b6ae72bb8a41359209f77025a7808))
* **Integration:** add missing props and fix docs/types ([#6623](https://github.com/discordjs/discord.js/issues/6623)) ([caa3b60](https://github.com/discordjs/discord.js/commit/caa3b60c30a8ab13d195e084331889aed820a389))
* **Interaction:** add memberPermissions ([#6741](https://github.com/discordjs/discord.js/issues/6741)) ([28d96e3](https://github.com/discordjs/discord.js/commit/28d96e344bb4b4d9dfb7c9b41a04c95c1eecbd25))
* Allow webhooks to fetch, edit and delete messages in threads ([#6695](https://github.com/discordjs/discord.js/issues/6695)) ([107822d](https://github.com/discordjs/discord.js/commit/107822d28d9de04f6c14fea74647c46fe2fd1016))
* **GuildMember:** add guild avatars ([#5696](https://github.com/discordjs/discord.js/issues/5696)) ([dfd7b40](https://github.com/discordjs/discord.js/commit/dfd7b403a932b2e779b0b1619ebd701a86f70d00))
* **InteractionReponses:** allow fetching of ephemeral messages ([#6426](https://github.com/discordjs/discord.js/issues/6426)) ([d289d5c](https://github.com/discordjs/discord.js/commit/d289d5ccb7153df4656f071c69f41efe74754362))
* **Message:** Add method to resolve a component by id ([#6484](https://github.com/discordjs/discord.js/issues/6484)) ([57b94b9](https://github.com/discordjs/discord.js/commit/57b94b9adf0d7444f494190fc2c8a29d44f1c5eb))
* **Message:** prevent fetching an interaction webhook. ([#6468](https://github.com/discordjs/discord.js/issues/6468)) ([f39b597](https://github.com/discordjs/discord.js/commit/f39b597e3120701287e86acdb247b4815f693c91))
* **MessageAttachment:** add support for ephemeral property ([#6652](https://github.com/discordjs/discord.js/issues/6652)) ([c5db0ff](https://github.com/discordjs/discord.js/commit/c5db0ff60600875534b8bd04666ec99770497870))
* **MessageAttachment:** allow files to be marked as spoilers ([#6509](https://github.com/discordjs/discord.js/issues/6509)) ([96e26c4](https://github.com/discordjs/discord.js/commit/96e26c428d7745b14908d56a96b635226471d699))
* **MessageTypes:** add CONTEXT_MENU_COMMAND (23) ([#6425](https://github.com/discordjs/discord.js/issues/6425)) ([d81590d](https://github.com/discordjs/discord.js/commit/d81590d566f7252832acfa97976343f551405848))
* **PartialGroupDMChannel:** Add recipients & fix name ([#6713](https://github.com/discordjs/discord.js/issues/6713)) ([2803db6](https://github.com/discordjs/discord.js/commit/2803db683defe73a8b24a9f3c98d7f90d9605e5c))
* **Permissions:** add `START_EMBEDDED_ACTIVITIES` ([#6622](https://github.com/discordjs/discord.js/issues/6622)) ([66a90d3](https://github.com/discordjs/discord.js/commit/66a90d3f8903c7dbe17851f7120a06f0e1f2ee96))
* **Threads:** update permissions and fix getters ([#6466](https://github.com/discordjs/discord.js/issues/6466)) ([10478ad](https://github.com/discordjs/discord.js/commit/10478ad14850123625a551b5c26143aa32313ab8))
* **UserManager:** allow #fetch to take UserResolvable ([#6677](https://github.com/discordjs/discord.js/issues/6677)) ([a06a87a](https://github.com/discordjs/discord.js/commit/a06a87a7c49db29b108b77db82cf8e6f4346ef19))
* add api error code 160002 ([#6566](https://github.com/discordjs/discord.js/issues/6566)) ([d16ada9](https://github.com/discordjs/discord.js/commit/d16ada97087e0324134484c9c0724b52a2839bdf))
* add api error code 30042 ([#6635](https://github.com/discordjs/discord.js/issues/6635)) ([183dbd7](https://github.com/discordjs/discord.js/commit/183dbd7e533f17ae3375f42fd95cbaf3ea06bffd))
* add api error code 50101 ([#6663](https://github.com/discordjs/discord.js/issues/6663)) ([42fdcaa](https://github.com/discordjs/discord.js/commit/42fdcaa1da65f097ef441beee5062f78ae03dfda))
* add maximum prune requests reached api error ([#6427](https://github.com/discordjs/discord.js/issues/6427)) ([a4b8623](https://github.com/discordjs/discord.js/commit/a4b8623b60150b3d9e3d2d54a2ef07e240e3c5c7))
* Add support for API command types in `ApplicationCommandManager` ([#6621](https://github.com/discordjs/discord.js/issues/6621)) ([ecd637f](https://github.com/discordjs/discord.js/commit/ecd637f7d6174d4c8e86c8eb8e782eb6a197dd6e))
* default values for setX boolean methods ([#6619](https://github.com/discordjs/discord.js/issues/6619)) ([8add4b0](https://github.com/discordjs/discord.js/commit/8add4b08f5e93ff690454b8f9673f2ad4a678841))
* Give removed `MessageReaction`s on `messageReactionRemoveAll` event ([#6607](https://github.com/discordjs/discord.js/issues/6607)) ([be8912a](https://github.com/discordjs/discord.js/commit/be8912a4219d1c1aa59a8060707973e567b7b5a3))
* **Rest:** expose https.Agent options ([#6177](https://github.com/discordjs/discord.js/issues/6177)) ([5eb3553](https://github.com/discordjs/discord.js/commit/5eb3553fd1d7bcd88f2ddbccb452a470eb853ecb))
* **ThreadChannel:** add fetchStarterMessage ([#6488](https://github.com/discordjs/discord.js/issues/6488)) ([705c5a1](https://github.com/discordjs/discord.js/commit/705c5a1c17bc3ba31f03f7bd6831e4c50dcbddd0))
* **Threads:** add support for invitable in private threads ([#6501](https://github.com/discordjs/discord.js/issues/6501)) ([a693254](https://github.com/discordjs/discord.js/commit/a6932546e2ed919bf130a919a597b4f31ef35307))
* **User:** banners and accent colors ([#6117](https://github.com/discordjs/discord.js/issues/6117)) ([839c6da](https://github.com/discordjs/discord.js/commit/839c6da03d0cc24b9023d807ba53c81704b9cb72))
* export BaseCommandInteraction ([#6478](https://github.com/discordjs/discord.js/issues/6478)) ([c14e594](https://github.com/discordjs/discord.js/commit/c14e594d8a905d5559aa1f6ce013d245552295fd))
* export ContextMenuInteraction ([#6434](https://github.com/discordjs/discord.js/issues/6434)) ([170c0c4](https://github.com/discordjs/discord.js/commit/170c0c4985595f77555c07747e72ae381d98a4d4))
* set methods for MessageActionRow and MessageSelectMenu ([#6490](https://github.com/discordjs/discord.js/issues/6490)) ([fb50dd9](https://github.com/discordjs/discord.js/commit/fb50dd984178b21375928431fb106f3ba5ed91ee))
### Performance Improvements
* use logical assignments instead of if statements ([#6693](https://github.com/discordjs/discord.js/issues/6693)) ([e9daa31](https://github.com/discordjs/discord.js/commit/e9daa31eaf73c90daee667fb89542bd0e5e763ad))
# [13.1.0](https://github.com/discordjs/discord.js/compare/13.0.1...13.1.0) (2021-08-12)
### Bug Fixes
* **Constants:** fix CDN endpoint typings ([#6332](https://github.com/discordjs/discord.js/issues/6332)) ([47d2ef3](https://github.com/discordjs/discord.js/commit/47d2ef3e40165d846b5a901709b26dfffea46ef2))
* **ContextMenuInteractin:** store message as raw value ([#6400](https://github.com/discordjs/discord.js/issues/6400)) ([d9456a1](https://github.com/discordjs/discord.js/commit/d9456a1a76e66bc2bfffa4a4b1dd228132056e9f))
* **Guild:** `preferredLocale` to always be a string ([#6402](https://github.com/discordjs/discord.js/issues/6402)) ([4a64662](https://github.com/discordjs/discord.js/commit/4a64662a7d5526817ad52fa3d2206dc11f38cb29))
* **GuildMemberRoleManager:** typo ([#6335](https://github.com/discordjs/discord.js/issues/6335)) ([d87299b](https://github.com/discordjs/discord.js/commit/d87299ba2036ee19da22b5c8abfae3f9d355ea1e))
* **Managers:** fix typo in unsupported warning ([#6338](https://github.com/discordjs/discord.js/issues/6338)) ([917e71a](https://github.com/discordjs/discord.js/commit/917e71a9ee7d8bd76d8dbea40b40a4fb28276f60))
* **StageInstance:** Ensure `discoverableDisabled` is not `undefined` ([#6395](https://github.com/discordjs/discord.js/issues/6395)) ([dce8fc7](https://github.com/discordjs/discord.js/commit/dce8fc7b9d4603de26b1118058322aaa96ea699a))
* **Util:** remove truthy check before isNaN check ([#6358](https://github.com/discordjs/discord.js/issues/6358)) ([3c17939](https://github.com/discordjs/discord.js/commit/3c17939fd53a1f139d95bd36dfdab85b46538a73))
* **WidgetMember:** Default to `null` and not `undefined` ([#6399](https://github.com/discordjs/discord.js/issues/6399)) ([44bbfa5](https://github.com/discordjs/discord.js/commit/44bbfa5c46a4bb35777aec8681f18590dec9aea4))
### Features
* **CommandInteractionResolvedData:** access to "raw" resolved data ([#6384](https://github.com/discordjs/discord.js/issues/6384)) ([fff887b](https://github.com/discordjs/discord.js/commit/fff887b2f43d19164dbf2878b00abead90a0703f))
* **GuildManager:** allow setting with_counts to false ([#6407](https://github.com/discordjs/discord.js/issues/6407)) ([14aea12](https://github.com/discordjs/discord.js/commit/14aea1290061c225feb9d9f5378508d937e34a69))
* **GuildMemberManager:** add 'list' method ([#6403](https://github.com/discordjs/discord.js/issues/6403)) ([2bf0970](https://github.com/discordjs/discord.js/commit/2bf09703c13afe7481071ae1b064dbc3513468e1))
* **Utils:** add additional formatters ([#6388](https://github.com/discordjs/discord.js/issues/6388)) ([cd40292](https://github.com/discordjs/discord.js/commit/cd4029218fc8b67c395b3cd49a121b1bfa38f021))
* **ContextMenus:** right-clickybois (context menu support for ApplicationCommand and CommandInteraction) ([#6176](https://github.com/discordjs/discord.js/issues/6176)) ([0266f28](https://github.com/discordjs/discord.js/commit/0266f280960729b27bf65ba0ee7b7bd8659f304d))
* **Threads:** max autoArchiveDuration option ([#6304](https://github.com/discordjs/discord.js/issues/6304)) ([394d486](https://github.com/discordjs/discord.js/commit/394d48649fe4faef8c6b30d5c04962588f86261e))
## [13.0.1](https://github.com/discordjs/discord.js/compare/13.0.0...13.0.1) (2021-08-07)
### Bug Fixes
* **GuildMemberManager:** refactor fetchMany ([#6328](https://github.com/discordjs/discord.js/issues/6328)) ([909c873](https://github.com/discordjs/discord.js/commit/909c87353e24eb7947d1cabc78d9c0ee97c3902d))
* **Message:** handle fetched messages ([#6325](https://github.com/discordjs/discord.js/issues/6325)) ([ceae596](https://github.com/discordjs/discord.js/commit/ceae5960edefc63be5f16a52e286e390c14e0d29))
# [13.0.0](https://github.com/discordjs/discord.js/compare/12.5.0...13.0.0) (2021-08-06)
### Bug Fixes
* **Action:** getChannel interaction DM ([#6280](https://github.com/discordjs/discord.js/issues/6280)) ([a72b5a3](https://github.com/discordjs/discord.js/commit/a72b5a355e443f17edf1b348f63d314c743093b9))
* **BaseGuildTextChannel:** call patch ([#6298](https://github.com/discordjs/discord.js/issues/6298)) ([3eb4140](https://github.com/discordjs/discord.js/commit/3eb41405f412ee2b2d05c4245c4ebb80adfcec6b))
* **Caching:** sweep archived threads in all channel caches ([#6312](https://github.com/discordjs/discord.js/issues/6312)) ([3725dca](https://github.com/discordjs/discord.js/commit/3725dcafc0cbb4a40d3ff66d2a9718e986f47c5b))
* **Channel:** add default for destructured options ([#6203](https://github.com/discordjs/discord.js/issues/6203)) ([6872547](https://github.com/discordjs/discord.js/commit/68725476b39d5ef5793ccf62cfb468073e7d9cb2))
* **ChannelUpdate:** restore accidentally removed line ([#6263](https://github.com/discordjs/discord.js/issues/6263)) ([774f5b7](https://github.com/discordjs/discord.js/commit/774f5b77ec6218c30360c773b5fe6185d1efd146))
* **CommandInteractionOptionResolver:** Export CommandInteractionOptio… ([#6146](https://github.com/discordjs/discord.js/issues/6146)) ([8ccfd6e](https://github.com/discordjs/discord.js/commit/8ccfd6e07b3208568c495110c80990366637818e))
* **CommandInteractionOptionResolver:** type should be USER ([#6148](https://github.com/discordjs/discord.js/issues/6148)) ([02f55f0](https://github.com/discordjs/discord.js/commit/02f55f09712af5d6a6f67b5ac369b1969801e23f))
* **Guild:** add invite manager property, extend CachedManager ([#6049](https://github.com/discordjs/discord.js/issues/6049)) ([e3d877d](https://github.com/discordjs/discord.js/commit/e3d877d542518d0f82c476d921968338a859722b))
* **GuildChannel:** Add missing 'cache' property ([#6019](https://github.com/discordjs/discord.js/issues/6019)) ([7e30011](https://github.com/discordjs/discord.js/commit/7e3001191c1529b9db09b6168ddd0c09931598f5))
* **GuildChannel:** setParent not working ([#6276](https://github.com/discordjs/discord.js/issues/6276)) ([7e0618f](https://github.com/discordjs/discord.js/commit/7e0618f17a786708093bc532501b261191e85561))
* **GuildChannel:** use map method on cache not its manager ([#6032](https://github.com/discordjs/discord.js/issues/6032)) ([d58f0d2](https://github.com/discordjs/discord.js/commit/d58f0d243c9bbd803cff7b8da2056c11e0416bef))
* **GuildMemberManager:** fetchMany fixes ([#6314](https://github.com/discordjs/discord.js/issues/6314)) ([52817fc](https://github.com/discordjs/discord.js/commit/52817fc414eef5220043e055a740e4ad0f8287a0))
* **Message:** fix thread getter ([#6309](https://github.com/discordjs/discord.js/issues/6309)) ([913c9fa](https://github.com/discordjs/discord.js/commit/913c9fa17672fa914776beb556edcee5cd2d2dc8))
* **MessageMentions:** check guild exists before adding roles ([#6313](https://github.com/discordjs/discord.js/issues/6313)) ([1200bba](https://github.com/discordjs/discord.js/commit/1200bba7bcc48dab6a454925e533528a7e3c0cf7))
* export various classes that are exported in the typings ([#6166](https://github.com/discordjs/discord.js/issues/6166)) ([30a58dc](https://github.com/discordjs/discord.js/commit/30a58dc80130d334bf8c85e7b37513c109beda1b))
* remove support for overriding caches that break functionality ([#6282](https://github.com/discordjs/discord.js/issues/6282)) ([a6d4035](https://github.com/discordjs/discord.js/commit/a6d4035176ca784e75bd1cbdf30e039658c62fd4))
* **CommandInteraction:** change options type from Collection to array ([#6139](https://github.com/discordjs/discord.js/issues/6139)) ([77784ac](https://github.com/discordjs/discord.js/commit/77784aca431709ff3c17095bd06f9e4016fbd11d))
* **GuildAuditLog:** Assert `target` to null upon not finding invite codes ([#6171](https://github.com/discordjs/discord.js/issues/6171)) ([c8ca7bf](https://github.com/discordjs/discord.js/commit/c8ca7bfd2c5e7b29e54987a78301e9bdfa4a717b))
* **GuildChannel:** clone its PermissionOverwriteManager too ([#6083](https://github.com/discordjs/discord.js/issues/6083)) ([f72ce7c](https://github.com/discordjs/discord.js/commit/f72ce7c136cf2dfe31a67b190c00e30ba7d70bfa))
* **GuildChannel:** only fetch invites for the specific channel ([#6132](https://github.com/discordjs/discord.js/issues/6132)) ([c40c0f9](https://github.com/discordjs/discord.js/commit/c40c0f934a571c100e4b3aa633a80fe48661d836))
* **InviteScope:** added missing 'bot' scope ([#6052](https://github.com/discordjs/discord.js/issues/6052)) ([93e2c04](https://github.com/discordjs/discord.js/commit/93e2c04ec27c44a8c955e576944023dc25075647))
* **Message:** fix typo in sticker_items ([#6173](https://github.com/discordjs/discord.js/issues/6173)) ([870a0de](https://github.com/discordjs/discord.js/commit/870a0de53c01331c9357df4808fc0979ff17b9a4))
* **Message:** make #channel and #guild getters ([#6271](https://github.com/discordjs/discord.js/issues/6271)) ([6e3236a](https://github.com/discordjs/discord.js/commit/6e3236ab64549d27445c631cbb3d88c2bb9bf289))
* **PermissionOverwriteManager:** pass ID to API correctly ([#6026](https://github.com/discordjs/discord.js/issues/6026)) ([8077e4f](https://github.com/discordjs/discord.js/commit/8077e4f4f132f95c4fa21e9fc7313b93a2c4b9d7))
* **PermissionOverwrites:** throw better error if resolving option fails ([#6219](https://github.com/discordjs/discord.js/issues/6219)) ([42a0313](https://github.com/discordjs/discord.js/commit/42a03130345d3a3841f5271d82a2cb8725b6fa0e))
* **PermissionsOverwrites:** only convert type if number ([#6092](https://github.com/discordjs/discord.js/issues/6092)) ([dee5c83](https://github.com/discordjs/discord.js/commit/dee5c83fc0d1147d5b65151a8f91a4a089687a73))
* **PresenceUpdate:** use added presence over nullable getter ([#6077](https://github.com/discordjs/discord.js/issues/6077)) ([637c8e0](https://github.com/discordjs/discord.js/commit/637c8e0fdfb4ce15361646017718c72c3d6af538))
* **SelectMenuInteraction:** set values to empty array if not provided ([#6045](https://github.com/discordjs/discord.js/issues/6045)) ([34708d6](https://github.com/discordjs/discord.js/commit/34708d6d18f94b5c8d9c582973d057e1f89bfe1f))
* **Sticker:** replace 'this.guildID' (undefined) by 'this.guildId' in fetchUser ([#6160](https://github.com/discordjs/discord.js/issues/6160)) ([07017a9](https://github.com/discordjs/discord.js/commit/07017a9699eecc4af7824ace39dd91e8b689f3c6))
* **Structures:** remove Structures ([#6027](https://github.com/discordjs/discord.js/issues/6027)) ([ab0b3b9](https://github.com/discordjs/discord.js/commit/ab0b3b9a07f5e4987e4f25e41b2a007f2db06322))
* **TeamMember:** Fixed incorrect return types. ([#6044](https://github.com/discordjs/discord.js/issues/6044)) ([fe5d56c](https://github.com/discordjs/discord.js/commit/fe5d56c9b11b3e5f05933c6d746237b9f353b392))
* **TextBasedChannel:** Fix MessageCreate handling ([#6217](https://github.com/discordjs/discord.js/issues/6217)) ([6b85f90](https://github.com/discordjs/discord.js/commit/6b85f900fa8e6cc01f7ee14ae730950cf1635dd5))
* **ThreadChannel:** better property handling ([#6172](https://github.com/discordjs/discord.js/issues/6172)) ([9679b90](https://github.com/discordjs/discord.js/commit/9679b9087200e29d2f488d84d115465449021b51))
* **Util:** fix collection import ([#6256](https://github.com/discordjs/discord.js/issues/6256)) ([93e0239](https://github.com/discordjs/discord.js/commit/93e0239c8054293eac63338819a10490dbd49ff1))
* **WebSocketShard:** mark shard ready if no guilds intent ([#6284](https://github.com/discordjs/discord.js/issues/6284)) ([09471be](https://github.com/discordjs/discord.js/commit/09471be30eea2540999c3d5a2b001a985a0d27cc))
* array/keyArray removed ([#6245](https://github.com/discordjs/discord.js/issues/6245)) ([bf221f2](https://github.com/discordjs/discord.js/commit/bf221f2bef2871f019aa4a6978deb8460fff85b9))
* Use `string` instead of `Snowflake` for invites ([#6202](https://github.com/discordjs/discord.js/issues/6202)) ([f060a3f](https://github.com/discordjs/discord.js/commit/f060a3fcd7e1ad30789d582e8baf28dbdddf8063))
* **Typings:** type attachments to InteractionUpdateOptions ([#6162](https://github.com/discordjs/discord.js/issues/6162)) ([4f8ca29](https://github.com/discordjs/discord.js/commit/4f8ca2936a85109757fb3225e9d6cf9aae9714e2))
* channel type check in actions ([#6086](https://github.com/discordjs/discord.js/issues/6086)) ([d433fe8](https://github.com/discordjs/discord.js/commit/d433fe8a0827e6275e2a7ceed537be38411f4f67))
* Remove `connection.url` from open debug message ([#6018](https://github.com/discordjs/discord.js/issues/6018)) ([39db953](https://github.com/discordjs/discord.js/commit/39db95352c91faf175c2fd8ed365f293f965a0e4))
* **Util:** splitMessage not working with array ([#6008](https://github.com/discordjs/discord.js/issues/6008)) ([bd25ff5](https://github.com/discordjs/discord.js/commit/bd25ff59133ba31713647d3e6a5ef66abc4d54fb))
* correct permissions checks and cache on update ([#6015](https://github.com/discordjs/discord.js/issues/6015)) ([568691c](https://github.com/discordjs/discord.js/commit/568691ce6a7994adc85db2b2a5b2227ece8c8358))
* typedefs and typings for image & webhook options ([#5805](https://github.com/discordjs/discord.js/issues/5805)) ([a5a6e22](https://github.com/discordjs/discord.js/commit/a5a6e223166cf9af430da9003780e6582ea17b1c))
* **ApplicationCommand:** default option.required fix ([#5848](https://github.com/discordjs/discord.js/issues/5848)) ([a1f94f6](https://github.com/discordjs/discord.js/commit/a1f94f670e5b6009b9c33932ce06ed512447b953))
* **ApplicationCommand:** default option.required to false ([#5838](https://github.com/discordjs/discord.js/issues/5838)) ([77c1f15](https://github.com/discordjs/discord.js/commit/77c1f15c9f7562465c07727602c3213ddcf02778))
* **ApplicationCommand:** fix typo in JSDoc ([#5994](https://github.com/discordjs/discord.js/issues/5994)) ([6edf55c](https://github.com/discordjs/discord.js/commit/6edf55c04b970235fdc92c00808ee86002e589b6))
* **ApplicationCommand:** stringType isn't supposed to be sent to the API ([#5916](https://github.com/discordjs/discord.js/issues/5916)) ([ca2a36b](https://github.com/discordjs/discord.js/commit/ca2a36b1d713a743045b15adf99eda69a6fdbec7))
* **ApplicationCommands:** allow managing commands for uncached guilds ([#5729](https://github.com/discordjs/discord.js/issues/5729)) ([24e5868](https://github.com/discordjs/discord.js/commit/24e586881865c187ff0a3044ac37f6e338cc51ee))
* **ClientApplication:** freeze flags ([#5811](https://github.com/discordjs/discord.js/issues/5811)) ([e990c35](https://github.com/discordjs/discord.js/commit/e990c35476fb6f7e1a5449493833140144e0469c))
* **Collector:** docs and types ([#5937](https://github.com/discordjs/discord.js/issues/5937)) ([6c447b1](https://github.com/discordjs/discord.js/commit/6c447b12e3f978328cb2577ea3f81a5ab1531bbf))
* **Guild:** don't patch before instance properties ([#5885](https://github.com/discordjs/discord.js/issues/5885)) ([174b7a7](https://github.com/discordjs/discord.js/commit/174b7a7f9c5f95ab182a2c90dae43ccd4f55357b))
* **Guild:** setChannelPositions null parenting ([#5841](https://github.com/discordjs/discord.js/issues/5841)) ([01a1fd6](https://github.com/discordjs/discord.js/commit/01a1fd615bbf017e18bbffe8e97336345f42564a))
* **GuildChannel:** clone errors when options.name isn't provided ([#5804](https://github.com/discordjs/discord.js/issues/5804)) ([41673b7](https://github.com/discordjs/discord.js/commit/41673b738232f64da2ded3b15be0f798135ae351))
* **GuildChannel:** don't force parentID/permissionOverwrites to empty on create ([#5823](https://github.com/discordjs/discord.js/issues/5823)) ([c585933](https://github.com/discordjs/discord.js/commit/c5859337b616c1fe2a60884595d27db4f13d8fee))
* **GuildChannel:** improve empty overwrite handling for permissionsLocked ([#5821](https://github.com/discordjs/discord.js/issues/5821)) ([6df3623](https://github.com/discordjs/discord.js/commit/6df36232a05e396d31461200725755745526d2ed))
* **GuildChannel:** spread clone options to avoid infinite recursion ([#5800](https://github.com/discordjs/discord.js/issues/5800)) ([2f5424b](https://github.com/discordjs/discord.js/commit/2f5424bdac7c97d0a371dd72084ac02d5e774f1a))
* **GuildManager:** #create throws when systemChannelFlags is undefined ([#5832](https://github.com/discordjs/discord.js/issues/5832)) ([29173bf](https://github.com/discordjs/discord.js/commit/29173bf814e2cd795467b9b3814f0eaf0773e9ae))
* **Hooks:** make husky hooks executable ([#5812](https://github.com/discordjs/discord.js/issues/5812)) ([77e28cf](https://github.com/discordjs/discord.js/commit/77e28cf65b0fb3fc2fb7ab07fc7bb0f2f5a400b5))
* **InteractionResponses:** set replied status on editReply ([#5899](https://github.com/discordjs/discord.js/issues/5899)) ([6d3d00b](https://github.com/discordjs/discord.js/commit/6d3d00b44577a70e840f0187d6894043677c5329))
* **Message:** editedTimestamp defaulting to 0 ([#5847](https://github.com/discordjs/discord.js/issues/5847)) ([671436c](https://github.com/discordjs/discord.js/commit/671436cbb89f7f48bd9ae0ccb9dd75a376cc5281))
* **Message:** flags not being parsed on some edits ([#5886](https://github.com/discordjs/discord.js/issues/5886)) ([2d7c12b](https://github.com/discordjs/discord.js/commit/2d7c12b0e9387f56f1809822bc2c8c4ee52a00e9))
* **Message:** Make author of referenced message nullable ([#5929](https://github.com/discordjs/discord.js/issues/5929)) ([dc671c8](https://github.com/discordjs/discord.js/commit/dc671c8ac418c1f932034e82f38def28575a4b65))
* **PermissionOverwrites:** optional allow/deny OverwriteData ([#5810](https://github.com/discordjs/discord.js/issues/5810)) ([a7ebb21](https://github.com/discordjs/discord.js/commit/a7ebb2145c380214567514906393c4ab87932e95))
* **Permissions:** allow admin to override in the missing method ([#5911](https://github.com/discordjs/discord.js/issues/5911)) ([ee025b0](https://github.com/discordjs/discord.js/commit/ee025b05588493b55057b237ca96f88ecc5f0b02))
* **presenceUpdate:** fire when only state/details change on an activity ([#5846](https://github.com/discordjs/discord.js/issues/5846)) ([1f8f3ab](https://github.com/discordjs/discord.js/commit/1f8f3ab0f8dbd346154bbfa14a98726b8df25d57))
* **Sharding:** strict type context and return ([#5933](https://github.com/discordjs/discord.js/issues/5933)) ([1925d01](https://github.com/discordjs/discord.js/commit/1925d01d8f05ca10b2a39b91f25ffcabe363874b))
* **TextBasedChannel:** allow passing an APIMessage with split ([#5815](https://github.com/discordjs/discord.js/issues/5815)) ([93b0a4e](https://github.com/discordjs/discord.js/commit/93b0a4e005b5b1d371f7936238556db2e36cc982))
* **Thread:** make archive_timestamp not nullable ([#5965](https://github.com/discordjs/discord.js/issues/5965)) ([edab5af](https://github.com/discordjs/discord.js/commit/edab5afff9a4c79e5965c7c52b0a0d5ebb9ba35a))
* **ThreadChannel:** check for existence of properties when patching ([#5961](https://github.com/discordjs/discord.js/issues/5961)) ([9ac6867](https://github.com/discordjs/discord.js/commit/9ac68670d782fc81e266784e790af699f280eb0e))
* **ThreadManager:** fixed wrong private and fetchAll check ([#6012](https://github.com/discordjs/discord.js/issues/6012)) ([e4be666](https://github.com/discordjs/discord.js/commit/e4be666c2c273c56f04b8f965efc88bb9aff0032))
* **ThreadMemberManager:** fix ThreadMemberManager#add and ThreadMemberManager#fetch ([#5927](https://github.com/discordjs/discord.js/issues/5927)) ([adecead](https://github.com/discordjs/discord.js/commit/adecead716670278516fd031f240e05792420c75))
* **Typings:** erronous RawMessage ([5842e35](https://github.com/discordjs/discord.js/commit/5842e35881755350764b557d66b475c2c03f249a))
* **Typings:** Fix BitField toJSON/valueOf return types ([#5806](https://github.com/discordjs/discord.js/issues/5806)) ([935f819](https://github.com/discordjs/discord.js/commit/935f819207ac4219d37f3b99a2508e368626e6da))
* **Typings:** Improve components typings in MessageEditOptions ([#6002](https://github.com/discordjs/discord.js/issues/6002)) ([3a718d8](https://github.com/discordjs/discord.js/commit/3a718d8c625ab45bc9f4dfcd9d6bbdef67ae75b4))
* **User:** fix bot and system properties being incorrect in some cases ([#5923](https://github.com/discordjs/discord.js/issues/5923)) ([e44ae96](https://github.com/discordjs/discord.js/commit/e44ae961005358dac7032c75bfc74be3b719e5a1))
* **Webhook:** resolve non-string avatars too ([#5914](https://github.com/discordjs/discord.js/issues/5914)) ([4714a96](https://github.com/discordjs/discord.js/commit/4714a961b87746b0f85214c756614d276666f285))
* **Webhook:** return void from #delete for consistency. ([#5954](https://github.com/discordjs/discord.js/issues/5954)) ([5ad83a6](https://github.com/discordjs/discord.js/commit/5ad83a6a65e5944ceb3a41fee2df40ba1f5b03e4))
* **Webhook:** throw an error if no token is available when it's required ([#5798](https://github.com/discordjs/discord.js/issues/5798)) ([eb98e33](https://github.com/discordjs/discord.js/commit/eb98e33a85cc9bb235ceb509ed01218bae44ba73))
* **WebSocketShard:** don't catch errors thrown in event handlers ([#5803](https://github.com/discordjs/discord.js/issues/5803)) ([53d8e49](https://github.com/discordjs/discord.js/commit/53d8e49dca2d83fe2e066fb0b3d10418acbbc244))
* don't patch missing properties from partial payloads ([#5796](https://github.com/discordjs/discord.js/issues/5796)) ([097c7b9](https://github.com/discordjs/discord.js/commit/097c7b9cdd5e1bb52b037272eed19f556800ccff))
* add missing imports for custom errors ([#5767](https://github.com/discordjs/discord.js/issues/5767)) ([e980948](https://github.com/discordjs/discord.js/commit/e980948de55e91e59c9e3293ac76bc645a058a53))
* **ApiMessage:** only pass objects as options directly ([#5793](https://github.com/discordjs/discord.js/issues/5793)) ([3578159](https://github.com/discordjs/discord.js/commit/35781597d032fa7821e010e483c89f70ec51926c))
* **BitField:** ensure missing returns an array of strings ([#5795](https://github.com/discordjs/discord.js/issues/5795)) ([68f7aeb](https://github.com/discordjs/discord.js/commit/68f7aebcafcfd62bef02de855ca0c304a54e8d4c))
* **BitField:** throw an error if bit to resolve is undefined ([#5565](https://github.com/discordjs/discord.js/issues/5565)) ([0156f69](https://github.com/discordjs/discord.js/commit/0156f693e08fe2ad75133bf67c4aeb3e9c91a02d))
* **ClientPresence:** produce valid activities for set presences ([#5799](https://github.com/discordjs/discord.js/issues/5799)) ([ea0e06f](https://github.com/discordjs/discord.js/commit/ea0e06f9802fb57b41f471413b39ccd09546bb67))
* add components to MessageOption typedefs ([#5768](https://github.com/discordjs/discord.js/issues/5768)) ([657635c](https://github.com/discordjs/discord.js/commit/657635c1c09aa68211130bc3c56d6e8bb6e8e773))
* remove remnants of awaitMessageComponentInteractions ([#5783](https://github.com/discordjs/discord.js/issues/5783)) ([ae78a33](https://github.com/discordjs/discord.js/commit/ae78a336e1d0d190ec9f525449332dc781e0b3bf))
* **APIMessage:** document Interaction as valid MessageTarget ([#5678](https://github.com/discordjs/discord.js/issues/5678)) ([9f491ff](https://github.com/discordjs/discord.js/commit/9f491ffeb96ff380f2ab5ab2f86201d58be64c41))
* **ApplicationCommand:** return string equivalent of ApplicationCommandOptionType ([#5617](https://github.com/discordjs/discord.js/issues/5617)) ([a6079bc](https://github.com/discordjs/discord.js/commit/a6079bc9ce40ecbb4adace033dbf201897b5459f))
* **ApplicationCommandManager:** fix typo in JSDoc ([#5603](https://github.com/discordjs/discord.js/issues/5603)) ([3392eb7](https://github.com/discordjs/discord.js/commit/3392eb7de270842dbf5a54d19aa3e703dd445ba0))
* **ApplicationCommandManager:** limit permission methods to guilds ([#5613](https://github.com/discordjs/discord.js/issues/5613)) ([03256bd](https://github.com/discordjs/discord.js/commit/03256bd9f88c63dc5c2169e2c09ac8078ea84992))
* **ApplicationCommandOptionData:** options property should be itself ([#5679](https://github.com/discordjs/discord.js/issues/5679)) ([b90b0c3](https://github.com/discordjs/discord.js/commit/b90b0c3cfa2278caa38d1ff41eef2ccf4428b99e))
* **CommandInteraction:** channel type should be text based channels ([#5690](https://github.com/discordjs/discord.js/issues/5690)) ([5141ea4](https://github.com/discordjs/discord.js/commit/5141ea4f0694a60375d8bc0801b1225928bb3bd1))
* **CommandInteraction:** cmds with no options throw error ([#5734](https://github.com/discordjs/discord.js/issues/5734)) ([af2fad9](https://github.com/discordjs/discord.js/commit/af2fad94732eeb620fe17d9b537c279471c567c0))
* **CommandInteraction:** update typings and docs for #editReply ([#5630](https://github.com/discordjs/discord.js/issues/5630)) ([56d44fb](https://github.com/discordjs/discord.js/commit/56d44fbf1c922260c497350e8829d7151eb7a331))
* **DataResolver:** fix circular dependency error with GuildTemplate ([#5622](https://github.com/discordjs/discord.js/issues/5622)) ([b376f31](https://github.com/discordjs/discord.js/commit/b376f31af9881b9cd3f82ac4a42a468947cce482))
* **Emoji:** name can be null ([#5513](https://github.com/discordjs/discord.js/issues/5513)) ([5397021](https://github.com/discordjs/discord.js/commit/5397021efb1f9883cf4b48a0ca78d12b713a61fd))
* **GuildEmojiRoleManager:** bug in #remove ([#5666](https://github.com/discordjs/discord.js/issues/5666)) ([c89bdd7](https://github.com/discordjs/discord.js/commit/c89bdd7566599a95a404b0f9e4b0828a866d0a71))
* **GuildMemberManager:** allow moving members to any non-text channel ([#5681](https://github.com/discordjs/discord.js/issues/5681)) ([d21e6af](https://github.com/discordjs/discord.js/commit/d21e6af1d2b81db9847336b3f964f9d2693394e6))
* **GuildMemberRoleManager:** unable to remove roles when passed an array ([#5556](https://github.com/discordjs/discord.js/issues/5556)) ([9572521](https://github.com/discordjs/discord.js/commit/9572521e3c390e610de8e4dc79e4086b3b1d6e44))
* **HTTPOptions:** change default value in jsdoc to 8 ([#5547](https://github.com/discordjs/discord.js/issues/5547)) ([cb50241](https://github.com/discordjs/discord.js/commit/cb50241e6fa7c95891925c8b18840c17df078620))
* **Interaction:** add missing types and fix docs lists ([#5762](https://github.com/discordjs/discord.js/issues/5762)) ([1d57754](https://github.com/discordjs/discord.js/commit/1d57754d4654c5c95aa14afc13f8abe335314767))
* **Message:** bug in #suppressEmbeds due to [#5612](https://github.com/discordjs/discord.js/issues/5612) ([#5644](https://github.com/discordjs/discord.js/issues/5644)) ([840ad0a](https://github.com/discordjs/discord.js/commit/840ad0a35a344a19c5bb84c421f80802fb186d0b))
* **Message:** editing with MessageEmbed or APIMessage ([#5612](https://github.com/discordjs/discord.js/issues/5612)) ([74e97ef](https://github.com/discordjs/discord.js/commit/74e97ef91b413300c83f163bc3914eaf8bd45d89))
* **Message:** update typings and docs related to #edit ([#5745](https://github.com/discordjs/discord.js/issues/5745)) ([a2f0c11](https://github.com/discordjs/discord.js/commit/a2f0c11474826bfd5b770d2a6990b6bd41c89451))
* **MessageComponentInteraction:** correctly type defer method ([#5760](https://github.com/discordjs/discord.js/issues/5760)) ([f0dad26](https://github.com/discordjs/discord.js/commit/f0dad26a5b8c3139b2519d1895df2fe23352b102))
* **MessageEmbed:** import custom RangeError class ([#5740](https://github.com/discordjs/discord.js/issues/5740)) ([bfe01b5](https://github.com/discordjs/discord.js/commit/bfe01b52ab29df1bb26fc2d385f63fb5adbb12b2))
* **PermissionOverwrites:** fix typo in typedef jsdoc ([#5704](https://github.com/discordjs/discord.js/issues/5704)) ([6567ba8](https://github.com/discordjs/discord.js/commit/6567ba821a54d3dc97d07ce8ac55335fef2f346b))
* **RoleManager:** bug in #create ([#5730](https://github.com/discordjs/discord.js/issues/5730)) ([cf22456](https://github.com/discordjs/discord.js/commit/cf224560bc59c05f7801088b0db2ec76c5369302))
* **ShardingManager:** client error event cannot be emitted ([#5559](https://github.com/discordjs/discord.js/issues/5559)) ([d1c5b6f](https://github.com/discordjs/discord.js/commit/d1c5b6fe9e18b532ad69ed4bd82e1874a6dff4df))
* **Types:** make event listeners accept async callbacks ([#5602](https://github.com/discordjs/discord.js/issues/5602)) ([a73a5cf](https://github.com/discordjs/discord.js/commit/a73a5cf91498cf7b08cea85753ad481c194ec089))
* **Typings:** add missing typings for `HttpError` -> `requestData` ([#5742](https://github.com/discordjs/discord.js/issues/5742)) ([3e9ce35](https://github.com/discordjs/discord.js/commit/3e9ce35023e71ffda1f4eaca6f109b0422ec7d29))
* **Webhook:** #editMessage throws error when content is null ([#5757](https://github.com/discordjs/discord.js/issues/5757)) ([2901fd5](https://github.com/discordjs/discord.js/commit/2901fd595be847a0e6c86155b3229d3341cfad32))
* interfaces not importing due to re-export of Snowflake ([#5723](https://github.com/discordjs/discord.js/issues/5723)) ([086c3f0](https://github.com/discordjs/discord.js/commit/086c3f0799d65c64c4e60d6370246a37a27a1eab))
* lint-staged for typescript files ([5f6ec22](https://github.com/discordjs/discord.js/commit/5f6ec2211d1e6555ab2d501579e4a1d97023c647))
* resolve emoji in Message#react ([#5614](https://github.com/discordjs/discord.js/issues/5614)) ([c733436](https://github.com/discordjs/discord.js/commit/c7334363b36c5f7f1c7880fe77a2e9b2eb1a6442))
* typo in GuildMemberManager ([#5616](https://github.com/discordjs/discord.js/issues/5616)) ([73f4114](https://github.com/discordjs/discord.js/commit/73f4114f59fc2f514d570ac8df3eac7d328cca3c))
* **Sticker:** file renamed to SnowflakeUtil ([#5573](https://github.com/discordjs/discord.js/issues/5573)) ([f830eb7](https://github.com/discordjs/discord.js/commit/f830eb7101d05f90bbbf44ff750e4012ecb72449))
* **VoiceReceiver:** fix memory leak ([#5609](https://github.com/discordjs/discord.js/issues/5609)) ([2eac842](https://github.com/discordjs/discord.js/commit/2eac84296b448907213680690ec766bb5fbe5990))
* typings for 'Message' ([#5518](https://github.com/discordjs/discord.js/issues/5518)) ([0d68ca8](https://github.com/discordjs/discord.js/commit/0d68ca8eb9abdb517acee562fe01374416d225ed))
* **ApiMessage:** remove resolve() from typings ([#5241](https://github.com/discordjs/discord.js/issues/5241)) ([a6bc39d](https://github.com/discordjs/discord.js/commit/a6bc39d3c699eec0b7851cda334335baa892c1de))
* **ApplicationFlags:** export class ([#5465](https://github.com/discordjs/discord.js/issues/5465)) ([404ce57](https://github.com/discordjs/discord.js/commit/404ce57bcc3ce39c807457f25a5679a80e69d1bb))
* **BaseGuildEmoji:** typo in requiresColons ([#5076](https://github.com/discordjs/discord.js/issues/5076)) ([e272fd6](https://github.com/discordjs/discord.js/commit/e272fd6909a17941d2d3e4840e75436d98a41198))
* **ChannelManager:** Avoid crash in remove method with uncached channel ([#4937](https://github.com/discordjs/discord.js/issues/4937)) ([12c909e](https://github.com/discordjs/discord.js/commit/12c909eeccb9ed6ab205d314ac8d63fc58713ae6))
* **Collection:** toJSON() errors if the collection includes empty values ([#5129](https://github.com/discordjs/discord.js/issues/5129)) ([2c2249e](https://github.com/discordjs/discord.js/commit/2c2249ee7314401b65be677c233370657e1d4695))
* **Collector:** throw an error if a non-function was provided as filter ([#5034](https://github.com/discordjs/discord.js/issues/5034)) ([7365f40](https://github.com/discordjs/discord.js/commit/7365f403006eeb28ab10f03cbf85416272678ef7))
* **Guild/GuildChannel:** methods reason arg usage ([#5419](https://github.com/discordjs/discord.js/issues/5419)) ([8411b9e](https://github.com/discordjs/discord.js/commit/8411b9e14211f83fddb00f622088979ee6586803))
* **GuildAuditLogsEntry:** executor can be missing ([#5500](https://github.com/discordjs/discord.js/issues/5500)) ([e9bf206](https://github.com/discordjs/discord.js/commit/e9bf206d88b9307e4098b7f89178105d08b07544))
* **GuildChannel:** check for community required channels in GuildChannel#deletable ([#5170](https://github.com/discordjs/discord.js/issues/5170)) ([b710a43](https://github.com/discordjs/discord.js/commit/b710a432326be823beb10f5f06f2a1e3fcd7c0ee))
* **GuildChannel:** overload permissionsFor and BaseManager#resolve[id] ([#5260](https://github.com/discordjs/discord.js/issues/5260)) ([41bd6c2](https://github.com/discordjs/discord.js/commit/41bd6c2717faeeaa36514d39a4816f7cf65b4c02))
* **GuildChannel:** regression on default channel type ([#5251](https://github.com/discordjs/discord.js/issues/5251)) ([e7c4f36](https://github.com/discordjs/discord.js/commit/e7c4f3672e7059c264ba67a94b87a655ea6e4da5))
* **GuildEmoji:** check for cahnges to available in equals ([#5201](https://github.com/discordjs/discord.js/issues/5201)) ([f95f5dc](https://github.com/discordjs/discord.js/commit/f95f5dcd791b39c6a4d60dc8d64b0287e06ed768))
* **GuildManager:** add missing toString() on Permission#resolve fns ([#5324](https://github.com/discordjs/discord.js/issues/5324)) ([0778926](https://github.com/discordjs/discord.js/commit/077892645bd59d1b5c50e3291701cb4241c0bbdf))
* **GuildMember:** correctly check for premium_since ([#5312](https://github.com/discordjs/discord.js/issues/5312)) ([aff3625](https://github.com/discordjs/discord.js/commit/aff3625d4fc3c738d77325f8492b72077e6345e7))
* **GuildTemplate:** 'guild' getter ([#5040](https://github.com/discordjs/discord.js/issues/5040)) ([53529bd](https://github.com/discordjs/discord.js/commit/53529bd05deb449d5d9bbfa332470c9881d8093c))
* **IntegrationApplication:** add missing export to index.js ([#5475](https://github.com/discordjs/discord.js/issues/5475)) ([8023250](https://github.com/discordjs/discord.js/commit/8023250ee7bb79a5e3f12d7297c29589f91d6b81))
* **InviteDelete:** guild can be missing ([#5457](https://github.com/discordjs/discord.js/issues/5457)) ([6c6b105](https://github.com/discordjs/discord.js/commit/6c6b1053b7a6778a5d0402941a13258ca13378f8))
* **Message:** #system non-zero message types are not guaranteed to be system ([#5108](https://github.com/discordjs/discord.js/issues/5108)) ([bb78120](https://github.com/discordjs/discord.js/commit/bb78120283b671d1926c8707a17a9d4d515aafdd))
* **Message:** update getters to take null permissions into account ([#5066](https://github.com/discordjs/discord.js/issues/5066)) ([98b1c58](https://github.com/discordjs/discord.js/commit/98b1c582189faee9ac40d81963008d94801f3837))
* **MessageEmbed:** include `author.name` in length getter ([#5167](https://github.com/discordjs/discord.js/issues/5167)) ([e37160f](https://github.com/discordjs/discord.js/commit/e37160f4e3d647e8e33b5b03d5f9e6c98b065499))
* **MessageMentions#channels:** Fix type of channels of mentions ([#5370](https://github.com/discordjs/discord.js/issues/5370)) ([565d7b3](https://github.com/discordjs/discord.js/commit/565d7b3747d59ceeb01e2d88b20d761a99927a12))
* **MessageReaction:** set MessageReaction#me in patch method ([#5047](https://github.com/discordjs/discord.js/issues/5047)) ([6b322f4](https://github.com/discordjs/discord.js/commit/6b322f47a0f86115dab71c06c7879fe82ea04ec4))
* **ReactionUserManager:** remove before query option ([#5281](https://github.com/discordjs/discord.js/issues/5281)) ([43bd568](https://github.com/discordjs/discord.js/commit/43bd568f1c38a6df38f56a8d607375ccc9da026a))
* **Resolvables:** valid resolvables throw error when uncached ([#5495](https://github.com/discordjs/discord.js/issues/5495)) ([fa5a37e](https://github.com/discordjs/discord.js/commit/fa5a37e51a14fdd95420092fb8c2acffad132c3b))
* **Role:** pass Permissions class, not the bitfield ([#5321](https://github.com/discordjs/discord.js/issues/5321)) ([d744e51](https://github.com/discordjs/discord.js/commit/d744e51c1bdb4c7a26c0faeea1f2f45baaf5fd3c))
* **RoleManager:** fix ID return value, change return type to collection ([#4935](https://github.com/discordjs/discord.js/issues/4935)) ([12a096b](https://github.com/discordjs/discord.js/commit/12a096b5f1c5ad518e73d1b9f50bb388928117dd))
* **typings:** return types for 'Webhook(Client)#send()' ([#4876](https://github.com/discordjs/discord.js/issues/4876)) ([eb28ee7](https://github.com/discordjs/discord.js/commit/eb28ee7905eee248b9ccd248f7d8275933dd0637))
* **typings:** update GuildMemberRoleManager typings to match implementation ([#5497](https://github.com/discordjs/discord.js/issues/5497)) ([900e576](https://github.com/discordjs/discord.js/commit/900e57657e80833df2557c60862fcd71b35d0df1))
* **UserFlags:** correct early bot dev name, remove deprecated aliases ([#5104](https://github.com/discordjs/discord.js/issues/5104)) ([b509862](https://github.com/discordjs/discord.js/commit/b509862bfa924494824af5e7729bd545315d2c67))
* **Voice:** disconnect if voice channel not cached ([#5467](https://github.com/discordjs/discord.js/issues/5467)) ([3af8179](https://github.com/discordjs/discord.js/commit/3af8179878c093985c8a94ee2fd7e99d45243bda))
* **Voice:** only skip undocumented voice packet byte if present ([#5309](https://github.com/discordjs/discord.js/issues/5309)) ([2b52cdc](https://github.com/discordjs/discord.js/commit/2b52cdc915146c6775bc7565e5ecf31e7c9880e7))
* add presence to ClientPresence from ClientOptions ([#5041](https://github.com/discordjs/discord.js/issues/5041)) ([9c7fe34](https://github.com/discordjs/discord.js/commit/9c7fe34c50808ba080527a1919b1846ed6585d4d))
* filtering of string forms of null and undefined ([#5075](https://github.com/discordjs/discord.js/issues/5075)) ([9042d19](https://github.com/discordjs/discord.js/commit/9042d19c4ef54d9976776f41336610ab0a24db27))
* implement valueOf on pseudomanagers ([#4595](https://github.com/discordjs/discord.js/issues/4595)) ([8883a01](https://github.com/discordjs/discord.js/commit/8883a0144b02e76c767c21ecf28fb430b7223c7f))
* typings for 'WebhookMessageOptions' ([#5476](https://github.com/discordjs/discord.js/issues/5476)) ([67025e6](https://github.com/discordjs/discord.js/commit/67025e63e4e8306a2b3ff62ae1067acf4b468a6a))
* **Voice*:** filter out silent audio from video users ([#5035](https://github.com/discordjs/discord.js/issues/5035)) ([4fcb9eb](https://github.com/discordjs/discord.js/commit/4fcb9ebf300633022e2b9867fa06a586307ff17a))
* **VoiceConnection:** make #dispatcher nullable ([#5217](https://github.com/discordjs/discord.js/issues/5217)) ([0d5de43](https://github.com/discordjs/discord.js/commit/0d5de4333d8afa57826aa75475fc4e3dfe8978c4))
* **WebSocketShard:** key name in WebSocketShard#_send. ([#5304](https://github.com/discordjs/discord.js/issues/5304)) ([56d8b44](https://github.com/discordjs/discord.js/commit/56d8b445ede6c7915aec173a68905cda3d91f0ca)), closes [#3722](https://github.com/discordjs/discord.js/issues/3722)
### Code Refactoring
* removed `code` and `split` options ([#5918](https://github.com/discordjs/discord.js/issues/5918)) ([985d4d6](https://github.com/discordjs/discord.js/commit/985d4d6a438fc9123264f6a1c600f34fccc1825f))
### Features
* **ApplicationCommandOptionType:** add NUMBER (10) ([#6128](https://github.com/discordjs/discord.js/issues/6128)) ([2f1cc1f](https://github.com/discordjs/discord.js/commit/2f1cc1fc27f5af6d9b88cdc353605a3ddf76e579))
* **Channel:** add isThread typeguard for better TS support ([#5978](https://github.com/discordjs/discord.js/issues/5978)) ([b7ed675](https://github.com/discordjs/discord.js/commit/b7ed6752ac98e56e79b6fd9fd3a5e47572454d85))
* **Channel:** add isVoice() ([#6297](https://github.com/discordjs/discord.js/issues/6297)) ([5b4efd1](https://github.com/discordjs/discord.js/commit/5b4efd13c9eced97f4160f9c4c19d1c843360943))
* **Client:** add conditional ready typings ([#6073](https://github.com/discordjs/discord.js/issues/6073)) ([4206e35](https://github.com/discordjs/discord.js/commit/4206e35b2316431c1a009664636dcda85d39fff8))
* **Client:** enforce passing scopes to generateInvite ([#6024](https://github.com/discordjs/discord.js/issues/6024)) ([c6e5521](https://github.com/discordjs/discord.js/commit/c6e55216874f1892727db927f55db3de6a1712d8))
* **Collector:** better types for events ([#6058](https://github.com/discordjs/discord.js/issues/6058)) ([c0a814f](https://github.com/discordjs/discord.js/commit/c0a814fdb35cb1fa7418bb3bdd3cec0a8a130bf5))
* **Collector:** return a boolean on checkEnd ([#6289](https://github.com/discordjs/discord.js/issues/6289)) ([f473f43](https://github.com/discordjs/discord.js/commit/f473f43d081c8c703a0888acaf3fdbaf4bb20c6d))
* **CommandInteraction:** add CommandInteractionOptionResolver ([#6107](https://github.com/discordjs/discord.js/issues/6107)) ([f293132](https://github.com/discordjs/discord.js/commit/f293132345294e33e80866272feaedf2e4a70d45))
* **CommandInteractionOptionResolver:** add sub-command required option ([#6165](https://github.com/discordjs/discord.js/issues/6165)) ([690c121](https://github.com/discordjs/discord.js/commit/690c121aa9575f7b878030229b0fedd56c3a1a87))
* **Constants:** added more error codes ([#6234](https://github.com/discordjs/discord.js/issues/6234)) ([6b2098f](https://github.com/discordjs/discord.js/commit/6b2098f7c7592eee2aedbf19e62d3c262e159cba))
* **FetchRecommendedShardsOptions:** account for large bot sharding ([#6184](https://github.com/discordjs/discord.js/issues/6184)) ([19b242a](https://github.com/discordjs/discord.js/commit/19b242ac10aa9b32c1a45a9178c97481d62a9400))
* **Formatters:** added new URL utilities and docs ([#6014](https://github.com/discordjs/discord.js/issues/6014)) ([98e45a5](https://github.com/discordjs/discord.js/commit/98e45a59957842fd1ee55d59e30ee868f985e15d))
* **Guild:** add fetchWidget() for getting widget data ([#6180](https://github.com/discordjs/discord.js/issues/6180)) ([b22272f](https://github.com/discordjs/discord.js/commit/b22272f86075ac5585abf05f54cf05187c4eabf9))
* **GuildAuditLogs:** add threads ([#6195](https://github.com/discordjs/discord.js/issues/6195)) ([26ba0e1](https://github.com/discordjs/discord.js/commit/26ba0e10368ff7c4b7a79a37450c8c0784185fb7))
* **GuildPreview:** add createdAt & createdTimestamp ([#6130](https://github.com/discordjs/discord.js/issues/6130)) ([9f039a8](https://github.com/discordjs/discord.js/commit/9f039a86798352e360d7e47d62d1b9c011c2ec71))
* **InteractionCollector:** reworked to be more generic ([#5999](https://github.com/discordjs/discord.js/issues/5999)) ([374c779](https://github.com/discordjs/discord.js/commit/374c779f7f8bbaa9bf06fa2b5b16f60da5095b5c))
* **Interactions:** option to auto-fetch replies ([#5831](https://github.com/discordjs/discord.js/issues/5831)) ([5e28ff8](https://github.com/discordjs/discord.js/commit/5e28ff83cbc04850077cc2f97bb2039c55b3b8ea))
* **LimitedCollection:** export LimitedCollection ([#6043](https://github.com/discordjs/discord.js/issues/6043)) ([31d3129](https://github.com/discordjs/discord.js/commit/31d31293d314492562104f02511d4d1e117711f3))
* **Managers:** ✨ Add GuildInviteManager ([#5889](https://github.com/discordjs/discord.js/issues/5889)) ([9e08b02](https://github.com/discordjs/discord.js/commit/9e08b02df2c9b31cfd91eac3ad008dab94855a59))
* **Managers:** add customizable caching for managers ([#6013](https://github.com/discordjs/discord.js/issues/6013)) ([8c7cb0e](https://github.com/discordjs/discord.js/commit/8c7cb0eff8e169836decf3c9843d7fa0998a5e84))
* **Message:** add 'failIfNotExists' to ClientOptions ([#6038](https://github.com/discordjs/discord.js/issues/6038)) ([28c5724](https://github.com/discordjs/discord.js/commit/28c57246d1d3cd7a22384ddc7970ab5263a4ace0))
* **MessageEmbed:** add setFields method ([#6186](https://github.com/discordjs/discord.js/issues/6186)) ([a25e165](https://github.com/discordjs/discord.js/commit/a25e16599a2b3d82aabebcaeaef663680f2982a8))
* **REST:** append additional information to the required User Agent ([#6112](https://github.com/discordjs/discord.js/issues/6112)) ([f200f14](https://github.com/discordjs/discord.js/commit/f200f14a409a56df5efe788de0ae45fc061bb46d))
* **RoleManager:** added `edit` method, alias `Role#edit` ([#5983](https://github.com/discordjs/discord.js/issues/5983)) ([1e73c25](https://github.com/discordjs/discord.js/commit/1e73c25fbfc9b3cb62bed719dc79de25f67707ee))
* **StageChannel:** add createStageInstance method & use better naming convention ([#5951](https://github.com/discordjs/discord.js/issues/5951)) ([71fb33a](https://github.com/discordjs/discord.js/commit/71fb33a5fea7398598b603a888e07519fddd56a9))
* **Sticker:** updates, sticker packs, and guild stickers ([#5867](https://github.com/discordjs/discord.js/issues/5867)) ([54d6a3a](https://github.com/discordjs/discord.js/commit/54d6a3a0708105acd6a3a709a8e1636d00c81fc8))
* **ThreadChannel:** add fetchOwner() method ([#6207](https://github.com/discordjs/discord.js/issues/6207)) ([331a9d3](https://github.com/discordjs/discord.js/commit/331a9d3ffc6e45c068bfb454e05b863130559d42))
* **Util:** add SweptCollection for auto sweeping of caches ([#6110](https://github.com/discordjs/discord.js/issues/6110)) ([dbb59ba](https://github.com/discordjs/discord.js/commit/dbb59ba1b29b2f75dd8faab5c3004ade51598abc))
* **Util:** added formatters ([#5976](https://github.com/discordjs/discord.js/issues/5976)) ([8c7a28f](https://github.com/discordjs/discord.js/commit/8c7a28f211dd05ec67cbce667b1d591ed59a40c6))
* **WebhookClient:** allow creation of clients via URLs ([#6192](https://github.com/discordjs/discord.js/issues/6192)) ([e000af5](https://github.com/discordjs/discord.js/commit/e000af5c98483046db25a46e905ed244bdcfe262))
* allow channels from uncached guilds to be returned from fetch ([#6034](https://github.com/discordjs/discord.js/issues/6034)) ([755c180](https://github.com/discordjs/discord.js/commit/755c180659c125532fe6f8e33e6c3b56e275311b))
* make Instance#fetch force true by default, and fix force parameter ([#6116](https://github.com/discordjs/discord.js/issues/6116)) ([366f3c9](https://github.com/discordjs/discord.js/commit/366f3c910a370ff1e184afae054f957db9a98293))
* PermissionOverwriteManager ([#5318](https://github.com/discordjs/discord.js/issues/5318)) ([e7ad2fe](https://github.com/discordjs/discord.js/commit/e7ad2fe20772915dcf3e9c4ae92a072b9c918a07))
* use enums for consistency and speed ([#5843](https://github.com/discordjs/discord.js/issues/5843)) ([f7eeccb](https://github.com/discordjs/discord.js/commit/f7eeccba4b7015496df811f10cc2da2b0fab0630))
* **Client:** make use of with_expiration in #fetchInvite ([#5764](https://github.com/discordjs/discord.js/issues/5764)) ([bf191df](https://github.com/discordjs/discord.js/commit/bf191df9c033404da3e717f73306cdb3f659fafc))
* **Esm:** use `gen-esm-wrapper` instead of manually making the file ([#5700](https://github.com/discordjs/discord.js/issues/5700)) ([db0d7d4](https://github.com/discordjs/discord.js/commit/db0d7d4ea8e7b2bae4d1548e5617875b5ae0bbd4))
* **Interaction:** add guild guard ([#5955](https://github.com/discordjs/discord.js/issues/5955)) ([87e8cdd](https://github.com/discordjs/discord.js/commit/87e8cdd3eba29ae1d741aa86572f1731b05c12fb))
* **Managers:** new ApplicationCommandPermissionsManager ([#5897](https://github.com/discordjs/discord.js/issues/5897)) ([6264c60](https://github.com/discordjs/discord.js/commit/6264c60e97da93b311a7a9fd92e16e59de94104a))
* **MessageComponentInteraction:** component getter ([#5840](https://github.com/discordjs/discord.js/issues/5840)) ([1439183](https://github.com/discordjs/discord.js/commit/1439183ad3f84b2b7500aaead2cf8779199b47d4))
* **MessageMentions:** add repliedUser ([#5905](https://github.com/discordjs/discord.js/issues/5905)) ([2616125](https://github.com/discordjs/discord.js/commit/261612596d37aa6fb48ae070d358b3fde953c769))
* **MessageSelectMenu:** droppybois ([#5692](https://github.com/discordjs/discord.js/issues/5692)) ([e5fcf0b](https://github.com/discordjs/discord.js/commit/e5fcf0bee53a15d7a87d4a5cf4e206823d6e7d87))
* api v9 and threads ([#5570](https://github.com/discordjs/discord.js/issues/5570)) ([7346621](https://github.com/discordjs/discord.js/commit/7346621d15c96906d5b848c483669750ff9c6e12))
* **InteractionCreate:** move to an Action handler ([#5906](https://github.com/discordjs/discord.js/issues/5906)) ([ea49f7c](https://github.com/discordjs/discord.js/commit/ea49f7ca74892495dd53f8d315086035c1814149))
* add missing APIError codes ([#5898](https://github.com/discordjs/discord.js/issues/5898)) ([d930c81](https://github.com/discordjs/discord.js/commit/d930c812bb4511a688b76d9bf1ac66e28bff033e))
* **GuildChannelManager:** add 'fetch' method ([#4966](https://github.com/discordjs/discord.js/issues/4966)) ([e798fb7](https://github.com/discordjs/discord.js/commit/e798fb720ee5ced008471fe899337f6817936770))
* **Interactions:** add InteractionWebhook for better internals ([#5712](https://github.com/discordjs/discord.js/issues/5712)) ([dec191a](https://github.com/discordjs/discord.js/commit/dec191aa1e4f22690285ca06c6eee7e6086b2930))
* **Interactions:** improve error handling for ephemeral responses ([#5892](https://github.com/discordjs/discord.js/issues/5892)) ([bd9f56a](https://github.com/discordjs/discord.js/commit/bd9f56af9a0a1fb12cfa30d9e2e0ad680eb80949))
* add APIError codes for stage instance ([#5888](https://github.com/discordjs/discord.js/issues/5888)) ([c850ae1](https://github.com/discordjs/discord.js/commit/c850ae10270076c4b2e10b130dd8f88eed4ed201))
* **Message:** applicationID for interaction responses ([#5765](https://github.com/discordjs/discord.js/issues/5765)) ([65dc00f](https://github.com/discordjs/discord.js/commit/65dc00f3210065015684b6d585f6747bd5ebadf1))
* **MessageComponents:** clickybois (MessageButton, MessageActionRow, associated Collectors) ([#5674](https://github.com/discordjs/discord.js/issues/5674)) ([cbd7f2b](https://github.com/discordjs/discord.js/commit/cbd7f2b9aa44a9240947ed716d0e72257ac499f7))
* **Rest:** optional ratelimit errors ([#5659](https://github.com/discordjs/discord.js/issues/5659)) ([16f261e](https://github.com/discordjs/discord.js/commit/16f261e773a353c54a75f38008f9b28435ae6603))
* **Sharding*:** contexts for broadcastEval ([#5756](https://github.com/discordjs/discord.js/issues/5756)) ([c6aeebb](https://github.com/discordjs/discord.js/commit/c6aeebb18d6b969f7c8bdb1b719883d4384dd03e))
* **WelcomeScreen:** welcome screens ([#5490](https://github.com/discordjs/discord.js/issues/5490)) ([44e2ee7](https://github.com/discordjs/discord.js/commit/44e2ee7b20dbec79c993dbc1f30ddb643d943347))
* stage instance invite ([#5856](https://github.com/discordjs/discord.js/issues/5856)) ([2d12db0](https://github.com/discordjs/discord.js/commit/2d12db000f2a0a22a8919d7a63989a6e762ae335))
* document and support embeds field in message create endpoint ([#5792](https://github.com/discordjs/discord.js/issues/5792)) ([99ff715](https://github.com/discordjs/discord.js/commit/99ff7151379fe03a1cfd52f252c0e6fc892d7776))
* **Guild:** add enum for mfa_level ([#5797](https://github.com/discordjs/discord.js/issues/5797)) ([ffabec3](https://github.com/discordjs/discord.js/commit/ffabec3a5e3651e5a0b8bcac83ee26bb909695fa))
* **Guild:** add enum for premium_tier ([#5868](https://github.com/discordjs/discord.js/issues/5868)) ([a3cbcca](https://github.com/discordjs/discord.js/commit/a3cbcca13da1af416c219bd64a0a6e84bb87a057))
* **GuildAuditLogs:** make #target a channel for channel related logs ([#5781](https://github.com/discordjs/discord.js/issues/5781)) ([eb0291d](https://github.com/discordjs/discord.js/commit/eb0291d9a5078836183c1b63ea96461ec112f96e))
* **RequestHandler:** emit more info when a rate limit was hit ([#5801](https://github.com/discordjs/discord.js/issues/5801)) ([18ac72e](https://github.com/discordjs/discord.js/commit/18ac72e457fa137d7f7f7bde876436ff643b4a63))
* **Widget:** wrapper for widget.json ([#5619](https://github.com/discordjs/discord.js/issues/5619)) ([038ee99](https://github.com/discordjs/discord.js/commit/038ee99604cded41d4c67edf4bd6bc7969712f52))
* add new APIErrors ([#5794](https://github.com/discordjs/discord.js/issues/5794)) ([e0ab836](https://github.com/discordjs/discord.js/commit/e0ab836b2d88caf0d9e1f9eba76ae46be9df0554))
* enforce strings ([#4880](https://github.com/discordjs/discord.js/issues/4880)) ([7b85a72](https://github.com/discordjs/discord.js/commit/7b85a7259f563ab14ae6c0a665a3dd43c486fde4))
* **APIRequest:** support setting global headers in HTTPOptions ([#5586](https://github.com/discordjs/discord.js/issues/5586)) ([135abcc](https://github.com/discordjs/discord.js/commit/135abccd9c75c33c8510cdcbe33b0dea4198fe33))
* **CommandInteraction:** ephemeral followup messages ([#5618](https://github.com/discordjs/discord.js/issues/5618)) ([68b40dd](https://github.com/discordjs/discord.js/commit/68b40dd91df70593c8271bd455fd0b3c6d19d334))
* **CommandInteraction:** make options a collection ([#5705](https://github.com/discordjs/discord.js/issues/5705)) ([fdad140](https://github.com/discordjs/discord.js/commit/fdad14099779e61cb84dcd1cb2497e0e853a6144))
* **Guild:** add the new nsfw_level property ([#5660](https://github.com/discordjs/discord.js/issues/5660)) ([3fe7add](https://github.com/discordjs/discord.js/commit/3fe7add2c5c07023d3cc83c06bba846c1328e446))
* **GuildChannel:** createInvite target options ([#5514](https://github.com/discordjs/discord.js/issues/5514)) ([f831872](https://github.com/discordjs/discord.js/commit/f831872125214e39c8866ce1cf7c63159a3dba39))
* **GuildChannel:** make createOverwrite and updateOverwrite not dependent on cache ([#5489](https://github.com/discordjs/discord.js/issues/5489)) ([58763b0](https://github.com/discordjs/discord.js/commit/58763b0e91b78d068121521ea3e853627b3ea325))
* **GuildChannel#clone:** support for position property ([#5236](https://github.com/discordjs/discord.js/issues/5236)) ([d455cb6](https://github.com/discordjs/discord.js/commit/d455cb65a6188e7d7b6720848b5ce37dbf8b5dff))
* **GuildMemberManager:** extend API coverage ([#4872](https://github.com/discordjs/discord.js/issues/4872)) ([2e2464b](https://github.com/discordjs/discord.js/commit/2e2464bf07c2b2e08d396b093126f887d19aec57))
* **Message:** add ReplyMessageOptions for #reply ([#5296](https://github.com/discordjs/discord.js/issues/5296)) ([7ce741d](https://github.com/discordjs/discord.js/commit/7ce741dacd06fd8af0ab501e38be08cf6b506a62))
* **Message:** allow editing files into messages ([#5718](https://github.com/discordjs/discord.js/issues/5718)) ([b212b64](https://github.com/discordjs/discord.js/commit/b212b64214ecee4f6118e78f9b90f3d3da574ecc))
* **Rest:** show the data that is sent to Discord when an errors occurs ([#5701](https://github.com/discordjs/discord.js/issues/5701)) ([ef92339](https://github.com/discordjs/discord.js/commit/ef92339d073f82cdaa2bc69f7be8443ec16789a7))
* add support for fetching multiple guilds ([#5472](https://github.com/discordjs/discord.js/issues/5472)) ([48d6850](https://github.com/discordjs/discord.js/commit/48d6850d9a8c34f407a22b6b401f2ed74415acd0))
* easier guards for channelUpdate ([#5716](https://github.com/discordjs/discord.js/issues/5716)) ([d52bcd4](https://github.com/discordjs/discord.js/commit/d52bcd46ec5985f9f18da37ba9d7d77209f58337))
* general component improvements ([#5787](https://github.com/discordjs/discord.js/issues/5787)) ([c4f1c75](https://github.com/discordjs/discord.js/commit/c4f1c75efa1cff1f9c775a266dccbe581305e79d))
* GuildBanManager ([#5276](https://github.com/discordjs/discord.js/issues/5276)) ([6d09160](https://github.com/discordjs/discord.js/commit/6d09160f5ba878fcd1f8bae88b5e6347e632cd2c))
* InteractionDeferOptions ([#5641](https://github.com/discordjs/discord.js/issues/5641)) ([ed593c9](https://github.com/discordjs/discord.js/commit/ed593c91fb7b87ae8b512c6f127e12f33c9631b6))
* **Guild:** allow description and features in edit ([#5505](https://github.com/discordjs/discord.js/issues/5505)) ([8a059cc](https://github.com/discordjs/discord.js/commit/8a059cccb8ecbd0bf60d2ed395a8de0806b3395a))
* **Guild:** nsfw guilds ([#5525](https://github.com/discordjs/discord.js/issues/5525)) ([5968323](https://github.com/discordjs/discord.js/commit/596832371cefef7739e8d714248d1c6d438eb8df))
* **Guild:** replace `owner` with `fetchOwner` ([#5480](https://github.com/discordjs/discord.js/issues/5480)) ([1be67b8](https://github.com/discordjs/discord.js/commit/1be67b88516b104073e46574a180498bad2aa02b))
* **Guild:** setChannelPositions parent, lockPermissions keys ([#5507](https://github.com/discordjs/discord.js/issues/5507)) ([4866e26](https://github.com/discordjs/discord.js/commit/4866e2672f28bfc481cf03533f7ba259050c80f4))
* **GuildFeatures:** added the new screening features ([#5328](https://github.com/discordjs/discord.js/issues/5328)) ([3c175cb](https://github.com/discordjs/discord.js/commit/3c175cb5116fe50ba3084163565dd244a25b657f))
* **GuildManager:** allow system channel flags in create ([#5504](https://github.com/discordjs/discord.js/issues/5504)) ([d9fa180](https://github.com/discordjs/discord.js/commit/d9fa180cf93f1a339192ae95dfb512482bd0ed0b))
* **Message:** allow removing attachments ([#5557](https://github.com/discordjs/discord.js/issues/5557)) ([ca9e5a0](https://github.com/discordjs/discord.js/commit/ca9e5a0ee1afca544192df1daef744d5a35f1727))
* **Message:** replace referencedMessage with fetchReference ([#5577](https://github.com/discordjs/discord.js/issues/5577)) ([1398431](https://github.com/discordjs/discord.js/commit/1398431bca9a3743758295f1effa2e7f6c35093e))
* **MessageEmbed:** remove normalizeField validation ([#5459](https://github.com/discordjs/discord.js/issues/5459)) ([ff2f737](https://github.com/discordjs/discord.js/commit/ff2f7372f23f901620d3afff215f33be487521d5))
* **MessageManager:** extend API coverage ([#4869](https://github.com/discordjs/discord.js/issues/4869)) ([c56c4a8](https://github.com/discordjs/discord.js/commit/c56c4a8dc86b0f37dd7c9ee9a4d422a52070b50c))
* **ShardingManager:** add options typings ([#5583](https://github.com/discordjs/discord.js/issues/5583)) ([31b4390](https://github.com/discordjs/discord.js/commit/31b4390042e6557f7f9d2f258c79ea50ba4929e2))
* add support for application command events ([#5596](https://github.com/discordjs/discord.js/issues/5596)) ([9f74f95](https://github.com/discordjs/discord.js/commit/9f74f95f69f4aa8a9a23c160e25dc61010c0a8e0))
* interactions ([#5448](https://github.com/discordjs/discord.js/issues/5448)) ([f7643f7](https://github.com/discordjs/discord.js/commit/f7643f7bbe64003ad8b221006190dd15529651e9))
* **Activity:** add missing fields ([#4984](https://github.com/discordjs/discord.js/issues/4984)) ([63ff6a0](https://github.com/discordjs/discord.js/commit/63ff6a07ebcba7e9134e3902e338e8dc6564ee63))
* **APIMessage:** remove disableMentions ([#4836](https://github.com/discordjs/discord.js/issues/4836)) ([4107899](https://github.com/discordjs/discord.js/commit/41078997aefce2a9e683b9805aad6436612a3aa7))
* **Application:** application flags ([#5147](https://github.com/discordjs/discord.js/issues/5147)) ([06e9d86](https://github.com/discordjs/discord.js/commit/06e9d86cb3dd11708c9cdd81f15970979e5b090d))
* **BitField:** move problematic bit into the error message ([#5228](https://github.com/discordjs/discord.js/issues/5228)) ([273e955](https://github.com/discordjs/discord.js/commit/273e9557be68eb1c2466f29e1c41e9b146a777c1))
* **Client:** add InviteGenerationOptions#additionalScopes ([#5215](https://github.com/discordjs/discord.js/issues/5215)) ([ae3c3d8](https://github.com/discordjs/discord.js/commit/ae3c3d80ee603fc46a28140107cb90c81da0afc9))
* **ClientEvents:** add tuple labels to event arguments ([#5225](https://github.com/discordjs/discord.js/issues/5225)) ([764966e](https://github.com/discordjs/discord.js/commit/764966e398e693a5ec868bc22d722f8518656b3a))
* **GuildChannel:** support conversion between text and news ([#5022](https://github.com/discordjs/discord.js/issues/5022)) ([5ac3b57](https://github.com/discordjs/discord.js/commit/5ac3b57f9bd53d1c20549a70942b023826f6f726))
* **GuildEmojiManager:** implement GuildEmojiManager#fetch ([#4933](https://github.com/discordjs/discord.js/issues/4933)) ([ffe3140](https://github.com/discordjs/discord.js/commit/ffe31405ff559202be55473db7e8b34894fbf4a7))
* **GuildMember:** #pending ([#5121](https://github.com/discordjs/discord.js/issues/5121)) ([c4c8171](https://github.com/discordjs/discord.js/commit/c4c817116f868cedb4ec20bcbf90b9b3d382621e))
* **GuildMember:** make GuildMember#setNickname first param nullable ([#5070](https://github.com/discordjs/discord.js/issues/5070)) ([d70127c](https://github.com/discordjs/discord.js/commit/d70127cee69e66e87702a6db4b58ad12aa85f96c))
* **GuildMemberManager:** add 'search' method ([#4154](https://github.com/discordjs/discord.js/issues/4154)) ([0ba2bcb](https://github.com/discordjs/discord.js/commit/0ba2bcb54582b38ee8eec8d1547b979bf1b7c755))
* **GuildMemberManager:** throw TypeError on incorrect GuildMemberManager#ban params ([#4816](https://github.com/discordjs/discord.js/issues/4816)) ([863734a](https://github.com/discordjs/discord.js/commit/863734aba46c5e0d04fbc83d2ed314726bddcbc2))
* **Message:** added string type for message nonce ([#4782](https://github.com/discordjs/discord.js/issues/4782)) ([4b555fd](https://github.com/discordjs/discord.js/commit/4b555fdf4c3b35fa0ea284f9cd56765ecb608b89))
* **MessageAttachment:** support for #contentType ([#5481](https://github.com/discordjs/discord.js/issues/5481)) ([7b161f9](https://github.com/discordjs/discord.js/commit/7b161f93a040a6bdce6e7e26d7a3c3b6c61a04fd))
* **SysChanFlags:** new flag and rename in sync with client ([#5506](https://github.com/discordjs/discord.js/issues/5506)) ([fe93a7e](https://github.com/discordjs/discord.js/commit/fe93a7e084189b54b8af82461809dee1da112b75))
* move internal regular expressions to static properties ([#5384](https://github.com/discordjs/discord.js/issues/5384)) ([207735c](https://github.com/discordjs/discord.js/commit/207735cedcf9a998571a328c7c7b2414d3ebe9d5))
* **Message|TextChannel:** Inline replies ([#4874](https://github.com/discordjs/discord.js/issues/4874)) ([60e5a0e](https://github.com/discordjs/discord.js/commit/60e5a0e46f57cf297b66f1a940d24a20f46b5319))
* **ReactionCollector:** event create ([#4108](https://github.com/discordjs/discord.js/issues/4108)) ([09d1f2f](https://github.com/discordjs/discord.js/commit/09d1f2f18f5ec536bb25156553986fee51c80d1e)), closes [#2844](https://github.com/discordjs/discord.js/issues/2844)
* **Rest:** better handling of global rate limit and invalid request tracking ([#4711](https://github.com/discordjs/discord.js/issues/4711)) ([9d2d606](https://github.com/discordjs/discord.js/commit/9d2d60691eb4bde729f40fb633ae257cf5bc6545))
* **typings:** add ShardingManager.shardList to type definitions ([#5446](https://github.com/discordjs/discord.js/issues/5446)) ([32b0d71](https://github.com/discordjs/discord.js/commit/32b0d71af7e3afc401898753b1e8cb1e991b70e7))
* **typings:** explicitly type PremiumTier and Collectors ([#5458](https://github.com/discordjs/discord.js/issues/5458)) ([7c49612](https://github.com/discordjs/discord.js/commit/7c49612d4bedfe13f7ed676c125cc7f7f33596df))
* jsdelivr default file support ([#5424](https://github.com/discordjs/discord.js/issues/5424)) ([f469402](https://github.com/discordjs/discord.js/commit/f46940228e9f82db4af09ae2f2dad684db0d74ed))
* make changes to PresenceData typings and docs ([#5317](https://github.com/discordjs/discord.js/issues/5317)) ([eb43ce4](https://github.com/discordjs/discord.js/commit/eb43ce4d4fb4d634696c5b0f026174dc0e435fe3))
* promisified single interaction collection ([#5770](https://github.com/discordjs/discord.js/issues/5770)) ([c2b3ed0](https://github.com/discordjs/discord.js/commit/c2b3ed09a0ec7f9b7453d0bcf9f2900e408f5001))
* **MessageTypes:** add 16 and 17 ([#4685](https://github.com/discordjs/discord.js/issues/4685)) ([c9107e3](https://github.com/discordjs/discord.js/commit/c9107e35fa8b74f8ad7a7d3ee7d7178a35790e18))
* stage channels ([#5456](https://github.com/discordjs/discord.js/issues/5456)) ([eec7cf7](https://github.com/discordjs/discord.js/commit/eec7cf7634653fc02ee4f94e970960174a0e6d1b))
* stage instances ([#5749](https://github.com/discordjs/discord.js/issues/5749)) ([918921e](https://github.com/discordjs/discord.js/commit/918921e8211fc16e9b12d2502f3168264246ea22))
* **Browser:** remove browser <20> ([#5113](https://github.com/discordjs/discord.js/issues/5113)) ([0a591a9](https://github.com/discordjs/discord.js/commit/0a591a96974ab8b2aef7d7b9b64ec63d0fbe4ec4))
* **Role:** role tags ([#4628](https://github.com/discordjs/discord.js/issues/4628)) ([d6234b7](https://github.com/discordjs/discord.js/commit/d6234b764ecbf12ebc0a795429a6aa3a650f5a6c))
* **ShardingManager:** Allow b-Eval/fetchClientValues on a specific shard when not all are ready ([#5222](https://github.com/discordjs/discord.js/issues/5222)) ([001676c](https://github.com/discordjs/discord.js/commit/001676c7a97f4e44c6601dd84aa0354ea94b7c25))
* **Sticker:** added Sticker ([#4909](https://github.com/discordjs/discord.js/issues/4909)) ([026afc2](https://github.com/discordjs/discord.js/commit/026afc2c1a88bc210c973bcf235fef3484571111))
* **Util:** allow array for StringOptions' char ([#5566](https://github.com/discordjs/discord.js/issues/5566)) ([fbcbb29](https://github.com/discordjs/discord.js/commit/fbcbb29884a35308a7af2169f5f9ae5658c458e8))
* **Util:** make `cleanContent` take a channel instead of a message ([#5535](https://github.com/discordjs/discord.js/issues/5535)) ([f1c0c04](https://github.com/discordjs/discord.js/commit/f1c0c043b516f4158ab9d473419e3b5e125a4c03))
* **Voice:** implement support for @discordjs/voice ([#5402](https://github.com/discordjs/discord.js/issues/5402)) ([7b2e12b](https://github.com/discordjs/discord.js/commit/7b2e12b102984abf61132e1057558ef7f04e6d83))
* **Webhook:** add '(edit|delete)Message' methods ([#5223](https://github.com/discordjs/discord.js/issues/5223)) ([7cabc1c](https://github.com/discordjs/discord.js/commit/7cabc1c490ddd9518528e12a58a746d65e43d4eb))
* **Webhook:** add 'fetchMessage' method ([#5530](https://github.com/discordjs/discord.js/issues/5530)) ([63398d6](https://github.com/discordjs/discord.js/commit/63398d6ae46f0487c4d5d8bfe823952a803e4a5a))
* **Webhook:** sourceGuild, sourceChannel, improve owner ([#5508](https://github.com/discordjs/discord.js/issues/5508)) ([116ecf2](https://github.com/discordjs/discord.js/commit/116ecf246e89db4d629a13877a440260c7504e30))
* **WebSocketManager:** let identify throw on depleted limits ([#5283](https://github.com/discordjs/discord.js/issues/5283)) ([624a446](https://github.com/discordjs/discord.js/commit/624a4464ca86bfa0b095ecb2cdaac2e8030cc413))
* BaseGuildEmojiManager ([#4934](https://github.com/discordjs/discord.js/issues/4934)) ([8d650a7](https://github.com/discordjs/discord.js/commit/8d650a72509a3f369ae31ec421d1892d182175e4))
### Reverts
* support for nested arrays of components, fix error handling ([#6081](https://github.com/discordjs/discord.js/issues/6081)) ([1dcad05](https://github.com/discordjs/discord.js/commit/1dcad051a835407bc24de3446dbd0ac3c0efeefc))
* **BitField:** ⏪ Bring back-compatibility after BitField serialization ([#5910](https://github.com/discordjs/discord.js/issues/5910)) ([0a0630c](https://github.com/discordjs/discord.js/commit/0a0630c0498d8ae24e703a2bfdf978541deb9b60))
* 5047 ([#5050](https://github.com/discordjs/discord.js/issues/5050)) ([b2a6720](https://github.com/discordjs/discord.js/commit/b2a672047745b0a47729ef775482e06a20b38db3))
### BREAKING CHANGES
For breaking changes please reference: <https://discordjs.guide/additional-info/changes-in-v13.html>

View File

@@ -175,7 +175,8 @@
END OF TERMS AND CONDITIONS
Copyright 2015 - 2020 Amish Shah
Copyright 2015 - 2021 Noel Buechler
Copyright 2015 - 2021 Amish Shah
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

114
README.md
View File

@@ -5,34 +5,17 @@
</p>
<br />
<p>
<a href="https://discord.gg/bRCvFy9"><img src="https://discordapp.com/api/guilds/222078108977594368/embed.png" alt="Discord server" /></a>
<a href="https://www.npmjs.com/package/discord.js"><img src="https://img.shields.io/npm/v/discord.js.svg?maxAge=3600" alt="NPM version" /></a>
<a href="https://www.npmjs.com/package/discord.js"><img src="https://img.shields.io/npm/dt/discord.js.svg?maxAge=3600" alt="NPM downloads" /></a>
<a href="https://github.com/discordjs/discord.js/actions"><img src="https://github.com/discordjs/discord.js/workflows/Testing/badge.svg" alt="Build status" /></a>
<a href="https://david-dm.org/discordjs/discord.js"><img src="https://img.shields.io/david/discordjs/discord.js.svg?maxAge=3600" alt="Dependencies" /></a>
<a href="https://www.patreon.com/discordjs"><img src="https://img.shields.io/badge/donate-patreon-F96854.svg" alt="Patreon" /></a>
</p>
<p>
<a href="https://nodei.co/npm/discord.js/"><img src="https://nodei.co/npm/discord.js.png?downloads=true&stars=true" alt="npm installnfo" /></a>
<a href="https://discord.gg/djs"><img src="https://img.shields.io/discord/222078108977594368?color=5865F2&logo=discord&logoColor=white" alt="Discord server" /></a>
<a href="https://www.npmjs.com/package/discord.js"><img src="https://img.shields.io/npm/v/discord.js.svg?maxAge=3600" alt="npm version" /></a>
<a href="https://www.npmjs.com/package/discord.js"><img src="https://img.shields.io/npm/dt/discord.js.svg?maxAge=3600" alt="npm downloads" /></a>
<a href="https://github.com/discordjs/discord.js/actions"><img src="https://github.com/discordjs/discord.js/workflows/Testing/badge.svg" alt="Tests status" /></a>
</p>
</div>
## Table of contents
- [About](#about)
- [Installation](#installation)
- [Audio engines](#audio-engines)
- [Optional packages](#optional-packages)
- [Example Usage](#example-usage)
- [Links](#links)
- [Extensions](#extensions)
- [Contributing](#contributing)
- [Help](#help)
## About
discord.js is a powerful [Node.js](https://nodejs.org) module that allows you to easily interact with the
[Discord API](https://discordapp.com/developers/docs/intro).
[Discord API](https://discord.com/developers/docs/intro).
- Object-oriented
- Predictable abstractions
@@ -41,42 +24,73 @@ discord.js is a powerful [Node.js](https://nodejs.org) module that allows you to
## Installation
**Node.js 12.0.0 or newer is required.**
Ignore any warnings about unmet peer dependencies, as they're all optional.
**Node.js 16.6.0 or newer is required.**
Without voice support: `npm install discord.js`
With voice support ([@discordjs/opus](https://www.npmjs.com/package/@discordjs/opus)): `npm install discord.js @discordjs/opus`
With voice support ([opusscript](https://www.npmjs.com/package/opusscript)): `npm install discord.js opusscript`
### Audio engines
The preferred audio engine is @discordjs/opus, as it performs significantly better than opusscript. When both are available, discord.js will automatically choose @discordjs/opus.
Using opusscript is only recommended for development environments where @discordjs/opus is tough to get working.
For production bots, using @discordjs/opus should be considered a necessity, especially if they're going to be running on multiple servers.
```sh-session
npm install discord.js
yarn add discord.js
pnpm add discord.js
```
### Optional packages
- [zlib-sync](https://www.npmjs.com/package/zlib-sync) for WebSocket data compression and inflation (`npm install zlib-sync`)
- [erlpack](https://github.com/discordapp/erlpack) for significantly faster WebSocket data (de)serialisation (`npm install discordapp/erlpack`)
- One of the following packages can be installed for faster voice packet encryption and decryption:
- [sodium](https://www.npmjs.com/package/sodium) (`npm install sodium`)
- [libsodium.js](https://www.npmjs.com/package/libsodium-wrappers) (`npm install libsodium-wrappers`)
- [erlpack](https://github.com/discord/erlpack) for significantly faster WebSocket data (de)serialisation (`npm install discord/erlpack`)
- [bufferutil](https://www.npmjs.com/package/bufferutil) for a much faster WebSocket connection (`npm install bufferutil`)
- [utf-8-validate](https://www.npmjs.com/package/utf-8-validate) in combination with `bufferutil` for much faster WebSocket processing (`npm install utf-8-validate`)
- [@discordjs/voice](https://github.com/discordjs/voice) for interacting with the Discord Voice API (`npm install @discordjs/voice`)
## Example usage
Install all required dependencies:
```sh-session
npm install discord.js @discordjs/rest discord-api-types
yarn add discord.js @discordjs/rest discord-api-types
pnpm add discord.js @discordjs/rest discord-api-types
```
Register a slash command against the Discord API:
```js
const Discord = require('discord.js');
const client = new Discord.Client();
const { REST } = require('@discordjs/rest');
const { Routes } = require('discord-api-types/v9');
const commands = [{
name: 'ping',
description: 'Replies with Pong!'
}];
const rest = new REST({ version: '9' }).setToken('token');
(async () => {
try {
console.log('Started refreshing application (/) commands.');
await rest.put(
Routes.applicationGuildCommands(CLIENT_ID, GUILD_ID),
{ body: commands },
);
console.log('Successfully reloaded application (/) commands.');
} catch (error) {
console.error(error);
}
})();
```
Afterwards we can create a quite simple example bot:
```js
const { Client, Intents } = require('discord.js');
const client = new Client({ intents: [Intents.FLAGS.GUILDS] });
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('message', msg => {
if (msg.content === 'ping') {
msg.reply('pong');
client.on('interactionCreate', async interaction => {
if (!interaction.isCommand()) return;
if (interaction.commandName === 'ping') {
await interaction.reply('Pong!');
}
});
@@ -86,14 +100,14 @@ client.login('token');
## Links
- [Website](https://discord.js.org/) ([source](https://github.com/discordjs/website))
- [Documentation](https://discord.js.org/#/docs/main/master/general/welcome)
- [Guide](https://discordjs.guide/) ([source](https://github.com/discordjs/guide)) - this is still for stable
See also the [Update Guide](https://discordjs.guide/additional-info/changes-in-v12.html), including updated and removed items in the library.
- [Discord.js Discord server](https://discord.gg/bRCvFy9)
- [Documentation](https://discord.js.org/#/docs)
- [Guide](https://discordjs.guide/) ([source](https://github.com/discordjs/guide))
See also the [Update Guide](https://discordjs.guide/additional-info/changes-in-v13.html), including updated and removed items in the library.
- [discord.js Discord server](https://discord.gg/djs)
- [Discord API Discord server](https://discord.gg/discord-api)
- [GitHub](https://github.com/discordjs/discord.js)
- [NPM](https://www.npmjs.com/package/discord.js)
- [Related libraries](https://discordapi.com/unofficial/libs.html)
- [npm](https://www.npmjs.com/package/discord.js)
- [Related libraries](https://discord.com/developers/docs/topics/community-resources#libraries)
### Extensions
@@ -103,9 +117,9 @@ client.login('token');
Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the
[documentation](https://discord.js.org/#/docs).
See [the contribution guide](https://github.com/discordjs/discord.js/blob/master/.github/CONTRIBUTING.md) if you'd like to submit a PR.
See [the contribution guide](https://github.com/discordjs/discord.js/blob/main/.github/CONTRIBUTING.md) if you'd like to submit a PR.
## Help
If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle
nudge in the right direction, please don't hesitate to join our official [Discord.js Server](https://discord.gg/bRCvFy9).
nudge in the right direction, please don't hesitate to join our official [discord.js Server](https://discord.gg/djs).

View File

@@ -1,163 +0,0 @@
# Sending Attachments
In here you'll see a few examples showing how you can send an attachment using discord.js.
## Sending an attachment using a URL
There are a few ways you can do this, but we'll show you the easiest.
The following examples use [MessageAttachment](/#/docs/main/master/class/MessageAttachment).
```js
// Extract the required classes from the discord.js module
const { Client, MessageAttachment } = require('discord.js');
// Create an instance of a Discord client
const client = new Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
client.on('message', message => {
// If the message is '!rip'
if (message.content === '!rip') {
// Create the attachment using MessageAttachment
const attachment = new MessageAttachment('https://i.imgur.com/w3duR07.png');
// Send the attachment in the message channel
message.channel.send(attachment);
}
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');
```
And here is the result:
![Image showing the result](/static/attachment-example1.png)
But what if you want to send an attachment with a message content? Fear not, for it is easy to do that too! We'll recommend reading [the TextChannel's "send" function documentation](/#/docs/main/master/class/TextChannel?scrollTo=send) to see what other options are available.
```js
// Extract the required classes from the discord.js module
const { Client, MessageAttachment } = require('discord.js');
// Create an instance of a Discord client
const client = new Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
client.on('message', message => {
// If the message is '!rip'
if (message.content === '!rip') {
// Create the attachment using MessageAttachment
const attachment = new MessageAttachment('https://i.imgur.com/w3duR07.png');
// Send the attachment in the message channel with a content
message.channel.send(`${message.author},`, attachment);
}
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');
```
And here's the result of this one:
![Image showing the result](/static/attachment-example2.png)
## Sending a local file or buffer
Sending a local file isn't hard either! We'll be using [MessageAttachment](/#/docs/main/master/class/MessageAttachment) for these examples too.
```js
// Extract the required classes from the discord.js module
const { Client, MessageAttachment } = require('discord.js');
// Create an instance of a Discord client
const client = new Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
client.on('message', message => {
// If the message is '!rip'
if (message.content === '!rip') {
// Create the attachment using MessageAttachment
const attachment = new MessageAttachment('./rip.png');
// Send the attachment in the message channel with a content
message.channel.send(`${message.author},`, attachment);
}
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');
```
The results are the same as the URL examples:
![Image showing result](/static/attachment-example1.png)
But what if you have a buffer from an image? Or a text document? Well, it's the same as sending a local file or a URL!
In the following example, we'll be getting the buffer from a `memes.txt` file, and send it in the message channel.
You can use any buffer you want, and send it. Just make sure to overwrite the filename if it isn't an image!
```js
// Extract the required classes from the discord.js module
const { Client, MessageAttachment } = require('discord.js');
// Import the native fs module
const fs = require('fs');
// Create an instance of a Discord client
const client = new Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
client.on('message', message => {
// If the message is '!memes'
if (message.content === '!memes') {
// Get the buffer from the 'memes.txt', assuming that the file exists
const buffer = fs.readFileSync('./memes.txt');
/**
* Create the attachment using MessageAttachment,
* overwritting the default file name to 'memes.txt'
* Read more about it over at
* http://discord.js.org/#/docs/main/master/class/MessageAttachment
*/
const attachment = new MessageAttachment(buffer, 'memes.txt');
// Send the attachment in the message channel with a content
message.channel.send(`${message.author}, here are your memes!`, attachment);
}
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');
```
And of course, the results are:
![Attachment File example 3](/static/attachment-example3.png)

View File

@@ -1,31 +0,0 @@
'use strict';
/**
* Send a user a link to their avatar
*/
// Import the discord.js module
const Discord = require('discord.js');
// Create an instance of a Discord client
const client = new Discord.Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
// Create an event listener for messages
client.on('message', message => {
// If the message is "what is my avatar"
if (message.content === 'what is my avatar') {
// Send the user's avatar URL
message.reply(message.author.displayAvatarURL());
}
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');

View File

@@ -1,40 +0,0 @@
'use strict';
/**
* An example of how you can send embeds
*/
// Extract the required classes from the discord.js module
const { Client, MessageEmbed } = require('discord.js');
// Create an instance of a Discord client
const client = new Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
client.on('message', message => {
// If the message is "how to embed"
if (message.content === 'how to embed') {
// We can create embeds using the MessageEmbed constructor
// Read more about all that you can do with the constructor
// over at https://discord.js.org/#/docs/main/master/class/MessageEmbed
const embed = new MessageEmbed()
// Set the title of the field
.setTitle('A slick little embed')
// Set the color of the embed
.setColor(0xff0000)
// Set the main content of the embed
.setDescription('Hello, this is a slick embed!');
// Send the embed to the same channel as the message
message.channel.send(embed);
}
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');

View File

@@ -1,32 +0,0 @@
'use strict';
/**
* A bot that welcomes new guild members when they join
*/
// Import the discord.js module
const Discord = require('discord.js');
// Create an instance of a Discord client
const client = new Discord.Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
// Create an event listener for new guild members
client.on('guildMemberAdd', member => {
// Send the message to a designated channel on a server:
const channel = member.guild.channels.cache.find(ch => ch.name === 'member-log');
// Do nothing if the channel wasn't found on this server
if (!channel) return;
// Send the message, mentioning the member
channel.send(`Welcome to the server, ${member}`);
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');

View File

@@ -1,151 +0,0 @@
# Moderation
In here, you'll see some basic examples for kicking and banning a member.
## Kicking a member
Let's say you have a member that you'd like to kick. Here is an example of how you _can_ do it.
```js
// Import the discord.js module
const Discord = require('discord.js');
// Create an instance of a Discord client
const client = new Discord.Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
client.on('message', message => {
// Ignore messages that aren't from a guild
if (!message.guild) return;
// If the message content starts with "!kick"
if (message.content.startsWith('!kick')) {
// Assuming we mention someone in the message, this will return the user
// Read more about mentions over at https://discord.js.org/#/docs/main/master/class/MessageMentions
const user = message.mentions.users.first();
// If we have a user mentioned
if (user) {
// Now we get the member from the user
const member = message.guild.member(user);
// If the member is in the guild
if (member) {
/**
* Kick the member
* Make sure you run this on a member, not a user!
* There are big differences between a user and a member
*/
member
.kick('Optional reason that will display in the audit logs')
.then(() => {
// We let the message author know we were able to kick the person
message.reply(`Successfully kicked ${user.tag}`);
})
.catch(err => {
// An error happened
// This is generally due to the bot not being able to kick the member,
// either due to missing permissions or role hierarchy
message.reply('I was unable to kick the member');
// Log the error
console.error(err);
});
} else {
// The mentioned user isn't in this guild
message.reply("That user isn't in this guild!");
}
// Otherwise, if no user was mentioned
} else {
message.reply("You didn't mention the user to kick!");
}
}
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');
```
And the result is:
![Image showing the result](/static/kick-example.png)
## Banning a member
Banning works the same way as kicking, but it has slightly more options that can be changed.
```js
// Import the discord.js module
const Discord = require('discord.js');
// Create an instance of a Discord client
const client = new Discord.Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
client.on('message', message => {
// Ignore messages that aren't from a guild
if (!message.guild) return;
// if the message content starts with "!ban"
if (message.content.startsWith('!ban')) {
// Assuming we mention someone in the message, this will return the user
// Read more about mentions over at https://discord.js.org/#/docs/main/master/class/MessageMentions
const user = message.mentions.users.first();
// If we have a user mentioned
if (user) {
// Now we get the member from the user
const member = message.guild.member(user);
// If the member is in the guild
if (member) {
/**
* Ban the member
* Make sure you run this on a member, not a user!
* There are big differences between a user and a member
* Read more about what ban options there are over at
* https://discord.js.org/#/docs/main/master/class/GuildMember?scrollTo=ban
*/
member
.ban({
reason: 'They were bad!',
})
.then(() => {
// We let the message author know we were able to ban the person
message.reply(`Successfully banned ${user.tag}`);
})
.catch(err => {
// An error happened
// This is generally due to the bot not being able to ban the member,
// either due to missing permissions or role hierarchy
message.reply('I was unable to ban the member');
// Log the error
console.error(err);
});
} else {
// The mentioned user isn't in this guild
message.reply("That user isn't in this guild!");
}
} else {
// Otherwise, if no user was mentioned
message.reply("You didn't mention the user to ban!");
}
}
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');
```
And the result is:
![Image showing the result](/static/ban-example.png)

View File

@@ -1,31 +0,0 @@
'use strict';
/**
* A ping pong bot, whenever you send "ping", it replies "pong".
*/
// Import the discord.js module
const Discord = require('discord.js');
// Create an instance of a Discord client
const client = new Discord.Client();
/**
* The ready event is vital, it means that only _after_ this will your bot start reacting to information
* received from Discord
*/
client.on('ready', () => {
console.log('I am ready!');
});
// Create an event listener for messages
client.on('message', message => {
// If the message is "ping"
if (message.content === 'ping') {
// Send "pong" to the same channel
message.channel.send('pong');
}
});
// Log our bot in using the token from https://discordapp.com/developers/applications/me
client.login('your token here');

View File

@@ -1,14 +0,0 @@
'use strict';
/**
* Send a message using a webhook
*/
// Import the discord.js module
const Discord = require('discord.js');
// Create a new webhook
const hook = new Discord.WebhookClient('webhook id', 'webhook token');
// Send a message using the webhook
hook.send('I am now alive!');

View File

@@ -1,30 +0,0 @@
# Frequently Asked Questions
These questions are some of the most frequently asked.
## No matter what, I get `SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode`‽
Update to Node.js 12.0.0 or newer.
## How do I get voice working?
- Install FFMPEG.
- Install either the `@discordjs/opus` package or the `opusscript` package.
@discordjs/opus is greatly preferred, due to it having significantly better performance.
## How do I install FFMPEG?
- **npm:** `npm install ffmpeg-binaries`
- **Ubuntu 16.04:** `sudo apt install ffmpeg`
- **Ubuntu 14.04:** `sudo apt-get install libav-tools`
- **Windows:** `npm install ffmpeg-binaries` or see the [FFMPEG section of AoDude's guide](https://github.com/bdistin/OhGodMusicBot/blob/master/README.md#download-ffmpeg).
## How do I set up @discordjs/opus?
- **Ubuntu:** Simply run `npm install @discordjs/opus`, and it's done. Congrats!
- **Windows:** Run `npm install --global --production windows-build-tools` in an admin command prompt or PowerShell.
Then, running `npm install @discordjs/opus` in your bot's directory should successfully build it. Woo!
Other questions can be found at the [official Discord.js guide](https://discordjs.guide/popular-topics/common-questions.html)
If you have issues not listed here or on the guide, feel free to ask in the [official Discord.js server](https://discord.gg/bRCvFy9).
Always make sure to read the [documentation](https://discord.js.org/#/docs/main/stable/general/welcome).

View File

@@ -1,195 +0,0 @@
# Version 12.0.0
v12.0.0 contains many new and improved features, optimisations, and bug fixes.
See [the changelog](https://github.com/discordjs/discord.js/releases/tag/12.0.0) for a full list of changes.
You can also visit [the guide](https://discordjs.guide/additional-info/changes-in-v12.html) for help with updating your v11 code to v12.
# Version 11.1.0
v11.1.0 features improved voice and gateway stability, as well as support for new features such as audit logs and searching for messages.
See [the changelog](https://github.com/discordjs/discord.js/releases/tag/11.1.0) for a full list of changes, including
information about deprecations.
# Version 11
Version 11 contains loads of new and improved features, optimisations, and bug fixes.
See [the changelog](https://github.com/discordjs/discord.js/releases/tag/11.0.0) for a full list of changes.
## Significant additions
- Message Reactions and Embeds (rich text)
- Support for uws and erlpack for better performance
- OAuthApplication support
- Web distributions
## Breaking changes
### Client.login() no longer supports logging in with email + password
Logging in with an email and password has always been heavily discouraged since the advent of proper token support, but in v11 we have made the decision to completely remove the functionality, since Hammer & Chisel have [officially stated](https://github.com/hammerandchisel/discord-api-docs/issues/69#issuecomment-223886862) it simply shouldn't be done.
User accounts can still log in with tokens just like bot accounts. To obtain the token for a user account, you can log in to Discord with that account, and use Ctrl + Shift + I to open the developer tools. In the console tab, evaluating `localStorage.token` will give you the token for that account.
### ClientUser.setEmail()/setPassword() now require the current password, as well as setUsername() on user accounts
Since you can no longer log in with email and password, you must provide the current account password to the `setEmail()`, `setPassword()`, and `setUsername()` methods for user accounts (self-bots).
### Removed TextBasedChannel.sendTTSMessage()
This method was deemed to be an entirely pointless shortcut that virtually nobody even used.
The same results can be achieved by passing options to `send()` or `sendMessage()`.
Example:
```js
channel.send('Hi there', { tts: true });
```
### Using Collection.find()/exists() with IDs will throw an error
This is simply to help prevent a common mistake that is made frequently.
To find something or check its existence using an ID, you should use `.get()` and `.has()` which are part of the [ES6 Map class](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Map), which Collection is an extension of.
# Version 10
Version 10's non-BC changes focus on cleaning up some inconsistencies that exist in previous versions.
Upgrading from v9 should be quick and painless.
## Client options
All client options have been converted to camelCase rather than snake_case, and `max_message_cache` was renamed to `messageCacheMaxSize`.
v9 code example:
```js
const client = new Discord.Client({
disable_everyone: true,
max_message_cache: 500,
message_cache_lifetime: 120,
message_sweep_interval: 60,
});
```
v10 code example:
```js
const client = new Discord.Client({
disableEveryone: true,
messageCacheMaxSize: 500,
messageCacheLifetime: 120,
messageSweepInterval: 60,
});
```
## Presences
Presences have been completely restructured.
Previous versions of discord.js assumed that users had the same presence amongst all guilds - with the introduction of sharding, however, this is no longer the case.
v9 discord.js code may look something like this:
```js
User.status; // the status of the user
User.game; // the game that the user is playing
ClientUser.setStatus(status, game, url); // set the new status for the user
```
v10 moves presences to GuildMember instances. For the sake of simplicity, though, User classes also expose presences.
When accessing a presence on a User object, it simply finds the first GuildMember for the user, and uses its presence.
Additionally, the introduction of the Presence class keeps all of the presence data organised.
**It is strongly recommended that you use a GuildMember's presence where available, rather than a User.
A user may have an entirely different presence between two different guilds.**
v10 code:
```js
MemberOrUser.presence.status; // the status of the member or user
MemberOrUser.presence.game; // the game that the member or user is playing
ClientUser.setStatus(status); // online, idle, dnd, offline
ClientUser.setGame(game, streamingURL); // a game
ClientUser.setPresence(fullPresence); // status and game combined
```
## Voice
Voice has been rewritten internally, but in a backwards-compatible manner.
There is only one breaking change here; the `disconnected` event was renamed to `disconnect`.
Several more events have been made available to a VoiceConnection, so see the documentation.
## Events
Many events have been renamed or had their arguments change.
### Client events
| Version 9 | Version 10 |
| ---------------------------------------------- | --------------------------------------- |
| guildMemberAdd(guild, member) | guildMemberAdd(member) |
| guildMemberAvailable(guild, member) | guildMemberAvailable(member) |
| guildMemberRemove(guild, member) | guildMemberRemove(member) |
| guildMembersChunk(guild, members) | guildMembersChunk(members) |
| guildMemberUpdate(guild, oldMember, newMember) | guildMemberUpdate(oldMember, newMember) |
| guildRoleCreate(guild, role) | roleCreate(role) |
| guildRoleDelete(guild, role) | roleDelete(role) |
| guildRoleUpdate(guild, oldRole, newRole) | roleUpdate(oldRole, newRole) |
The guild parameter that has been dropped from the guild-related events can still be derived using `member.guild` or `role.guild`.
### VoiceConnection events
| Version 9 | Version 10 |
| ------------ | ---------- |
| disconnected | disconnect |
## Dates and timestamps
All dates/timestamps on the structures have been refactored to have a consistent naming scheme and availability.
All of them are named similarly to this:
**Date:** `Message.createdAt`
**Timestamp:** `Message.createdTimestamp`
See the docs for each structure to see which date/timestamps are available on them.
# Version 9
The version 9 (v9) rewrite takes a much more object-oriented approach than previous versions,
which allows your code to be much more readable and manageable.
It's been rebuilt from the ground up and should be much more stable, fixing caching issues that affected
older versions. It also has support for newer Discord Features, such as emojis.
Version 9, while containing a sizable number of breaking changes, does not require much change in your code's logic -
most of the concepts are still the same, but loads of functions have been moved around.
The vast majority of methods you're used to using have been moved out of the Client class,
into other more relevant classes where they belong.
Because of this, you will need to convert most of your calls over to the new methods.
Here are a few examples of methods that have changed:
- `Client.sendMessage(channel, message)` ==> `TextChannel.sendMessage(message)`
- `Client.sendMessage(user, message)` ==> `User.sendMessage(message)`
- `Client.updateMessage(message, "New content")` ==> `Message.edit("New Content")`
- `Client.getChannelLogs(channel, limit)` ==> `TextChannel.fetchMessages({options})`
- `Server.detailsOfUser(User)` ==> `Server.members.get(User).properties` (retrieving a member gives a GuildMember object)
- `Client.joinVoiceChannel(voicechannel)` => `VoiceChannel.join()`
A couple more important details:
- `Client.loginWithToken("token")` ==> `client.login("token")`
- `Client.servers.length` ==> `client.guilds.size` (all instances of `server` are now `guild`)
## No more callbacks!
Version 9 eschews callbacks in favour of Promises. This means all code relying on callbacks must be changed.
For example, the following code:
```js
client.getChannelLogs(channel, 100, function(messages) {
console.log(`${messages.length} messages found`);
});
```
```js
channel.fetchMessages({ limit: 100 }).then(messages => {
console.log(`${messages.size} messages found`);
});
```

View File

@@ -1,103 +0,0 @@
<div align="center">
<br />
<p>
<a href="https://discord.js.org"><img src="/static/logo.svg" width="546" alt="discord.js" id="djs-logo" /></a>
</p>
<br />
<p>
<a href="https://discord.gg/bRCvFy9"><img src="https://discordapp.com/api/guilds/222078108977594368/embed.png" alt="Discord server" /></a>
<a href="https://www.npmjs.com/package/discord.js"><img src="https://img.shields.io/npm/v/discord.js.svg?maxAge=3600" alt="NPM version" /></a>
<a href="https://www.npmjs.com/package/discord.js"><img src="https://img.shields.io/npm/dt/discord.js.svg?maxAge=3600" alt="NPM downloads" /></a>
<a href="https://travis-ci.org/discordjs/discord.js"><img src="https://travis-ci.org/discordjs/discord.js.svg" alt="Build status" /></a>
<a href="https://david-dm.org/discordjs/discord.js"><img src="https://img.shields.io/david/discordjs/discord.js.svg?maxAge=3600" alt="Dependencies" /></a>
<a href="https://www.patreon.com/discordjs"><img src="https://img.shields.io/badge/donate-patreon-F96854.svg" alt="Patreon" /></a>
</p>
<p>
<a href="https://nodei.co/npm/discord.js/"><img src="https://nodei.co/npm/discord.js.png?downloads=true&stars=true" alt="NPM info" /></a>
</p>
</div>
# Welcome!
Welcome to the discord.js v12 documentation.
## About
discord.js is a powerful [Node.js](https://nodejs.org) module that allows you to easily interact with the
[Discord API](https://discordapp.com/developers/docs/intro).
- Object-oriented
- Predictable abstractions
- Performant
- 100% coverage of the Discord API
## Installation
**Node.js 12.0.0 or newer is required.**
Ignore any warnings about unmet peer dependencies, as they're all optional.
Without voice support: `npm install discord.js`
With voice support ([@discordjs/opus](https://www.npmjs.com/package/@discordjs/opus)): `npm install discord.js @discordjs/opus`
With voice support ([opusscript](https://www.npmjs.com/package/opusscript)): `npm install discord.js opusscript`
### Audio engines
The preferred audio engine is @discordjs/opus, as it performs significantly better than opusscript. When both are available, discord.js will automatically choose @discordjs/opus.
Using opusscript is only recommended for development environments where @discordjs/opus is tough to get working.
For production bots, using @discordjs/opus should be considered a necessity, especially if they're going to be running on multiple servers.
### Optional packages
- [zlib-sync](https://www.npmjs.com/package/zlib-sync) for WebSocket data compression and inflation (`npm install zlib-sync`)
- [erlpack](https://github.com/discordapp/erlpack) for significantly faster WebSocket data (de)serialisation (`npm install discordapp/erlpack`)
- One of the following packages can be installed for faster voice packet encryption and decryption:
- [sodium](https://www.npmjs.com/package/sodium) (`npm install sodium`)
- [libsodium.js](https://www.npmjs.com/package/libsodium-wrappers) (`npm install libsodium-wrappers`)
- [bufferutil](https://www.npmjs.com/package/bufferutil) for a much faster WebSocket connection (`npm install bufferutil`)
- [utf-8-validate](https://www.npmjs.com/package/utf-8-validate) in combination with `bufferutil` for much faster WebSocket processing (`npm install utf-8-validate`)
## Example usage
```js
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('message', msg => {
if (msg.content === 'ping') {
msg.reply('pong');
}
});
client.login('token');
```
## Links
- [Website](https://discord.js.org/) ([source](https://github.com/discordjs/website))
- [Documentation](https://discord.js.org/#/docs/main/master/general/welcome)
- [Guide](https://discordjs.guide/) ([source](https://github.com/discordjs/guide)) - this is still for stable
See also the WIP [Update Guide](https://discordjs.guide/additional-info/changes-in-v12.html) also including updated and removed items in the library.
- [Discord.js Discord server](https://discord.gg/bRCvFy9)
- [Discord API Discord server](https://discord.gg/discord-api)
- [GitHub](https://github.com/discordjs/discord.js)
- [NPM](https://www.npmjs.com/package/discord.js)
- [Related libraries](https://discordapi.com/unofficial/libs.html)
### Extensions
- [RPC](https://www.npmjs.com/package/discord-rpc) ([source](https://github.com/discordjs/RPC))
## Contributing
Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the
[documentation](https://discord.js.org/#/docs).
See [the contribution guide](https://github.com/discordjs/discord.js/blob/master/.github/CONTRIBUTING.md) if you'd like to submit a PR.
## Help
If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle
nudge in the right direction, please don't hesitate to join our official [Discord.js Server](https://discord.gg/bRCvFy9).

View File

@@ -1,32 +1,5 @@
- name: General
files:
- name: Welcome
path: welcome.md
- name: Updating your code
path: updating.md
- name: FAQ
path: faq.md
- name: Topics
files:
- name: Voice
path: voice.md
- name: Web builds
path: web.md
- name: Partials
path: partials.md
- name: Examples
files:
- name: Ping
path: ping.js
- name: Avatars
path: avatars.js
- name: Attachments
path: attachments.md
- name: Server greeting
path: greeting.js
- name: Message Embed
path: embed.js
- name: Moderation
path: moderation.md
- name: Webhook
path: webhook.js
id: welcome
path: ../../README.md

View File

@@ -1,65 +0,0 @@
# Partials
Partials allow you to receive events that contain uncached instances, providing structures that contain very minimal
data. For example, if you were to receive a `messageDelete` event with an uncached message, normally Discord.js would
discard the event. With partials, you're able to receive the event, with a Message object that contains just an ID.
## Opting in
Partials are opt-in, and you can enable them in the Client options by specifying [PartialTypes](/#/docs/main/master/typedef/PartialType):
```js
// Accept partial messages, DM channels, and reactions when emitting events
new Client({ partials: ['MESSAGE', 'CHANNEL', 'REACTION'] });
```
## Usage & warnings
<warn>The only guaranteed data a partial structure can store is its ID. All other properties/methods should be
considered invalid/defunct while accessing a partial structure.</warn>
After opting-in with the above, you begin to allow partial messages and channels in your caches, so it's important
to check whether they're safe to access whenever you encounter them, whether it be in events or through normal cache
usage.
All instance of structures that you opted-in for will have a `partial` property. As you'd expect, this value is `true`
when the instance is partial. Partial structures are only guaranteed to contain an ID, any other properties and methods
no longer carry their normal type guarantees.
This means you have to take time to consider possible parts of your program that might need checks put in place to
prevent accessing partial data:
```js
client.on('messageDelete', message => {
console.log(`${message.id} was deleted!`);
// Partial messages do not contain any content so skip them
if (!message.partial) {
console.log(`It had content: "${message.content}"`);
}
});
// You can also try to upgrade partials to full instances:
client.on('messageReactionAdd', async (reaction, user) => {
// If a message gains a reaction and it is uncached, fetch and cache the message
// You should account for any errors while fetching, it could return API errors if the resource is missing
if (reaction.message.partial) await reaction.message.fetch();
// Now the message has been cached and is fully available:
console.log(`${reaction.message.author}'s message "${reaction.message.content}" gained a reaction!`);
// Fetches and caches the reaction itself, updating resources that were possibly defunct.
if (reaction.partial) await reaction.fetch();
// Now the reaction is fully available and the properties will be reflected accurately:
console.log(`${reaction.count} user(s) have given the same reaction to this message!`);
});
```
<info>If a message is deleted and both the message and channel are uncached, you must enable both 'MESSAGE' and
'CHANNEL' in the client options to receive the messageDelete event.</info>
## Why?
This allows developers to listen to events that contain uncached data, which is useful if you're running a moderation
bot or any bot that relies on still receiving updates to resources you don't have cached -- message reactions are a
good example.
Currently, the only type of channel that can be uncached is a DM channel, there is no reason why guild channels should
not be cached.

View File

@@ -1,140 +0,0 @@
# Introduction to Voice
Voice in discord.js can be used for many things, such as music bots, recording or relaying audio.
In discord.js, you can use voice by connecting to a `VoiceChannel` to obtain a `VoiceConnection`, where you can start streaming and receiving audio.
To get started, make sure you have:
- FFmpeg - `npm install ffmpeg-static`
- an opus encoder, choose one from below:
- `npm install @discordjs/opus` (better performance)
- `npm install opusscript`
- a good network connection
The preferred opus engine is @discordjs/opus, as it performs significantly better than opusscript. When both are available, discord.js will automatically choose @discordjs/opus.
Using opusscript is only recommended for development environments where @discordjs/opus is tough to get working.
For production bots, using @discordjs/opus should be considered a necessity, especially if they're going to be running on multiple servers.
## Joining a voice channel
The example below reacts to a message and joins the sender's voice channel, catching any errors. This is important
as it allows us to obtain a `VoiceConnection` that we can start to stream audio with.
```js
const Discord = require('discord.js');
const client = new Discord.Client();
client.login('token here');
client.on('message', async message => {
// Voice only works in guilds, if the message does not come from a guild,
// we ignore it
if (!message.guild) return;
if (message.content === '/join') {
// Only try to join the sender's voice channel if they are in one themselves
if (message.member.voice.channel) {
const connection = await message.member.voice.channel.join();
} else {
message.reply('You need to join a voice channel first!');
}
}
});
```
## Streaming to a Voice Channel
In the previous example, we looked at how to join a voice channel in order to obtain a `VoiceConnection`. Now that we
have obtained a voice connection, we can start streaming audio to it.
### Introduction to playing on voice connections
The most basic example of playing audio over a connection would be playing a local file:
```js
const dispatcher = connection.play('/home/discord/audio.mp3');
```
The `dispatcher` in this case is a `StreamDispatcher` - here you can control the volume and playback of the stream:
```js
dispatcher.pause();
dispatcher.resume();
dispatcher.setVolume(0.5); // half the volume
dispatcher.on('finish', () => {
console.log('Finished playing!');
});
dispatcher.destroy(); // end the stream
```
We can also pass in options when we first play the stream:
```js
const dispatcher = connection.play('/home/discord/audio.mp3', {
volume: 0.5,
});
```
### What can I play?
Discord.js allows you to play a lot of things:
```js
// ReadableStreams, in this example YouTube audio
const ytdl = require('ytdl-core');
connection.play(ytdl('https://www.youtube.com/watch?v=ZlAU_w7-Xp8', { filter: 'audioonly' }));
// Files on the internet
connection.play('http://www.sample-videos.com/audio/mp3/wave.mp3');
// Local files
connection.play('/home/discord/audio.mp3');
```
New to v12 is the ability to play OggOpus and WebmOpus streams with much better performance by skipping out Ffmpeg. Note this comes at the cost of no longer having volume control over the stream:
```js
connection.play(fs.createReadStream('./media.webm'), {
type: 'webm/opus',
});
connection.play(fs.createReadStream('./media.ogg'), {
type: 'ogg/opus',
});
```
Make sure to consult the documentation for a full list of what you can play - there's too much to cover here!
## Voice Broadcasts
A voice broadcast is very useful for "radio" bots, that play the same audio across multiple channels. It means audio is only transcoded once, and is much better on performance.
```js
const broadcast = client.voice.createBroadcast();
broadcast.on('subscribe', dispatcher => {
console.log('New broadcast subscriber!');
});
broadcast.on('unsubscribe', dispatcher => {
console.log('Channel unsubscribed from broadcast :(');
});
```
`broadcast` is an instance of `VoiceBroadcast`, which has the same `play` method you are used to with regular VoiceConnections:
```js
const dispatcher = broadcast.play('./audio.mp3');
connection.play(broadcast);
```
It's important to note that the `dispatcher` stored above is a `BroadcastDispatcher` - it controls all the dispatcher subscribed to the broadcast, e.g. setting the volume of this dispatcher affects the volume of all subscribers.
## Voice Receive
coming soon&trade;

View File

@@ -1,52 +0,0 @@
# Web builds
In addition to your usual Node applications, discord.js has special distributions available that are capable of running in web browsers.
This is useful for client-side web apps that need to interact with the Discord API.
[Webpack 3](https://webpack.js.org/) is used to build these.
## Restrictions
- Any voice-related functionality is unavailable, as there is currently no audio encoding/decoding capabilities without external native libraries,
which web browsers do not support.
- The ShardingManager cannot be used, since it relies on being able to spawn child processes for shards.
- None of the native optional packages are usable.
### Require Library
If you are making your own webpack project, you can require `discord.js/browser` wherever you need to use discord.js, like so:
```js
const Discord = require('discord.js/browser');
// do something with Discord like you normally would
```
### Webpack File
You can obtain your desired version of discord.js' web build from the [webpack branch](https://github.com/discordjs/discord.js/tree/webpack) of the GitHub repository.
There is a file for each branch and version of the library, and the ones ending in `.min.js` are minified to substantially reduce the size of the source code.
Include the file on the page just as you would any other JS library, like so:
```html
<script type="text/javascript" src="discord.VERSION.min.js"></script>
```
Rather than importing discord.js with `require('discord.js')`, the entire `Discord` object is available as a global (on the `window`) object.
The usage of the API isn't any different from using it in Node.js.
#### Example
```html
<script type="text/javascript" src="discord.11.1.0.min.js"></script>
<script type="text/javascript">
const client = new Discord.Client();
client.on('message', msg => {
const guildTag = msg.channel.type === 'text' ? `[${msg.guild.name}]` : '[DM]';
const channelTag = msg.channel.type === 'text' ? `[#${msg.channel.name}]` : '';
console.log(`${guildTag}${channelTag} ${msg.author.tag}: ${msg.content}`);
});
client.login('some crazy token');
</script>
```

View File

@@ -1,3 +0,0 @@
{
"plugins": ["node_modules/jsdoc-strip-async-await"]
}

22366
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,24 +1,38 @@
{
"name": "discord.js",
"version": "12.0.1",
"version": "13.4.0",
"description": "A powerful library for interacting with the Discord API",
"main": "./src/index",
"types": "./typings/index.d.ts",
"scripts": {
"test": "npm run lint && npm run docs:test && npm run lint:typings",
"docs": "docgen --source src --custom docs/index.yml --output docs/docs.json",
"docs:test": "docgen --source src --custom docs/index.yml",
"test": "npm run lint && npm run docs:test && npm run lint:typings && npm run test:typescript",
"test:typescript": "tsc --noEmit && tsd",
"lint": "eslint src",
"lint:fix": "eslint src --fix",
"lint:typings": "tslint typings/index.d.ts",
"prettier": "prettier --write --single-quote --print-width 120 --trailing-comma all --end-of-line lf src/**/*.js typings/**/*.ts",
"build:browser": "webpack",
"prepublishOnly": "npm run test && NODE_ENV=production npm run build:browser"
"format": "prettier --write src/**/*.js typings/**/*.ts",
"prepare": "is-ci || husky install",
"docs": "docgen --source src --custom docs/index.yml --output docs/docs.json",
"docs:test": "docgen --source src --custom docs/index.yml",
"prepublishOnly": "npm run test",
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s"
},
"repository": {
"type": "git",
"url": "git+https://github.com/discordjs/discord.js.git"
"main": "./src/index.js",
"types": "./typings/index.d.ts",
"files": [
"src",
"typings"
],
"directories": {
"lib": "src",
"test": "test"
},
"contributors": [
"Crawl <icrawltogo@gmail.com>",
"Amish Shah <amishshah.2k@gmail.com>",
"Vlad Frangu <kingdgrizzle@gmail.com>",
"SpaceEEC <spaceeec@yahoo.com>",
"Antonio Roman <kyradiscord@gmail.com>"
],
"license": "Apache-2.0",
"keywords": [
"discord",
"api",
@@ -27,141 +41,48 @@
"node",
"discordapp"
],
"author": "Amish Shah <amishshah.2k@gmail.com>",
"license": "Apache-2.0",
"repository": {
"type": "git",
"url": "https://github.com/discordjs/discord.js.git"
},
"bugs": {
"url": "https://github.com/discordjs/discord.js/issues"
},
"homepage": "https://github.com/discordjs/discord.js#readme",
"runkitExampleFilename": "./docs/examples/ping.js",
"unpkg": "./webpack/discord.min.js",
"homepage": "https://discord.js.org",
"dependencies": {
"@discordjs/collection": "^0.1.5",
"abort-controller": "^3.0.0",
"form-data": "^3.0.0",
"node-fetch": "^2.6.0",
"prism-media": "^1.2.0",
"setimmediate": "^1.0.5",
"tweetnacl": "^1.0.3",
"ws": "^7.2.1"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
"erlpack": "discordapp/erlpack",
"libsodium-wrappers": "^0.7.6",
"sodium": "^3.0.2",
"utf-8-validate": "^5.0.2",
"zlib-sync": "^0.1.6"
},
"peerDependenciesMeta": {
"bufferutil": {
"optional": true
},
"erlpack": {
"optional": true
},
"libsodium-wrappers": {
"optional": true
},
"sodium": {
"optional": true
},
"utf-8-validate": {
"optional": true
},
"zlib-sync": {
"optional": true
}
"@discordjs/builders": "^0.10.0",
"@discordjs/collection": "^0.4.0",
"@sapphire/async-queue": "^1.1.9",
"@types/node-fetch": "^2.5.12",
"@types/ws": "^8.2.2",
"discord-api-types": "^0.25.2",
"form-data": "^4.0.0",
"node-fetch": "^2.6.1",
"ws": "^8.4.0"
},
"devDependencies": {
"@commitlint/cli": "^8.3.5",
"@commitlint/config-angular": "^8.3.4",
"@types/node": "^10.12.24",
"@types/ws": "^7.2.1",
"discord.js-docgen": "discordjs/docgen",
"dtslint": "^3.0.0",
"eslint": "^6.8.0",
"eslint-config-prettier": "^6.10.0",
"eslint-plugin-import": "^2.20.1",
"eslint-plugin-prettier": "^3.1.2",
"husky": "^4.2.3",
"jest": "^25.1.0",
"json-filter-loader": "^1.0.0",
"lint-staged": "^10.0.8",
"prettier": "^1.19.1",
"terser-webpack-plugin": "^1.2.2",
"tslint": "^6.0.0",
"typescript": "^3.8.2",
"webpack": "^4.41.6",
"webpack-cli": "^3.3.11"
"@commitlint/cli": "^15.0.0",
"@commitlint/config-angular": "^15.0.0",
"@discordjs/docgen": "^0.11.0",
"@favware/npm-deprecate": "^1.0.4",
"@types/node": "^16.11.12",
"conventional-changelog-cli": "^2.1.1",
"dtslint": "^4.2.1",
"eslint": "^8.5.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-import": "^2.25.3",
"eslint-plugin-prettier": "^4.0.0",
"husky": "^7.0.4",
"is-ci": "^3.0.1",
"jest": "^27.4.5",
"lint-staged": "^12.1.4",
"prettier": "^2.5.1",
"tsd": "^0.19.0",
"tslint": "^6.1.3",
"typescript": "^4.5.4"
},
"engines": {
"node": ">=12.0.0"
},
"browser": {
"@discordjs/opus": false,
"https": false,
"ws": false,
"erlpack": false,
"prism-media": false,
"opusscript": false,
"node-opus": false,
"tweetnacl": false,
"sodium": false,
"worker_threads": false,
"zlib-sync": false,
"src/sharding/Shard.js": false,
"src/sharding/ShardClientUtil.js": false,
"src/sharding/ShardingManager.js": false,
"src/client/voice/ClientVoiceManager.js": false,
"src/client/voice/VoiceBroadcast.js": false,
"src/client/voice/VoiceConnection.js": false,
"src/client/voice/dispatcher/BroadcastDispatcher.js": false,
"src/client/voice/dispatcher/StreamDispatcher.js": false,
"src/client/voice/networking/VoiceUDPClient.js": false,
"src/client/voice/networking/VoiceWebSocket.js": false,
"src/client/voice/player/AudioPlayer.js": false,
"src/client/voice/player/BasePlayer.js": false,
"src/client/voice/player/BroadcastAudioPlayer.js": false,
"src/client/voice/receiver/PacketHandler.js": false,
"src/client/voice/receiver/Receiver.js": false,
"src/client/voice/util/PlayInterface.js": false,
"src/client/voice/util/Secretbox.js": false,
"src/client/voice/util/Silence.js": false,
"src/client/voice/util/VolumeInterface.js": false
},
"husky": {
"hooks": {
"pre-commit": "lint-staged",
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
},
"lint-staged": {
"*.js": "eslint --fix",
"*.ts": "prettier --write --single-quote --print-width 120 --trailing-comma all --end-of-line lf"
},
"commitlint": {
"extends": [
"@commitlint/config-angular"
],
"rules": {
"type-enum": [
2,
"always",
[
"chore",
"build",
"ci",
"docs",
"feat",
"fix",
"perf",
"refactor",
"revert",
"style",
"test"
]
]
}
"node": ">=16.6.0",
"npm": ">=7.0.0"
}
}

6
scripts/.eslintrc.json Normal file
View File

@@ -0,0 +1,6 @@
{
"extends": "../.eslintrc.json",
"parserOptions": {
"sourceType": "module"
}
}

View File

@@ -0,0 +1,41 @@
import { readdir, writeFile } from 'node:fs/promises';
import { Constants } from '../src/index.js';
async function writeWebsocketHandlerImports() {
const lines = ["'use strict';\n", 'const handlers = Object.fromEntries(['];
for (const name of Object.keys(Constants.WSEvents)) {
lines.push(` ['${name}', require('./${name}')],`);
}
lines.push(']);\n\nmodule.exports = handlers;\n');
const outputFile = new URL('../src/client/websocket/handlers/index.js', import.meta.url);
await writeFile(outputFile, lines.join('\n'));
}
async function writeClientActionImports() {
const lines = ["'use strict';\n", 'class ActionsManager {', ' constructor(client) {', ' this.client = client;\n'];
const actionsDirectory = new URL('../src/client/actions', import.meta.url);
for (const file of (await readdir(actionsDirectory)).sort()) {
if (file === 'Action.js' || file === 'ActionsManager.js') continue;
lines.push(` this.register(require('./${file.slice(0, -3)}'));`);
}
lines.push(' }\n');
lines.push(' register(Action) {');
lines.push(" this[Action.name.replace(/Action$/, '')] = new Action(this.client);");
lines.push(' }');
lines.push('}\n');
lines.push('module.exports = ActionsManager;\n');
const outputFile = new URL('../src/client/actions/ActionsManager.js', import.meta.url);
await writeFile(outputFile, lines.join('\n'));
}
writeWebsocketHandlerImports();
writeClientActionImports();

View File

@@ -1,7 +1,5 @@
'use strict';
const { browser } = require('./util/Constants');
let erlpack;
try {
@@ -9,15 +7,7 @@ try {
if (!erlpack.pack) erlpack = null;
} catch {} // eslint-disable-line no-empty
let TextDecoder;
if (browser) {
TextDecoder = window.TextDecoder; // eslint-disable-line no-undef
exports.WebSocket = window.WebSocket; // eslint-disable-line no-undef
} else {
TextDecoder = require('util').TextDecoder;
exports.WebSocket = require('ws');
}
exports.WebSocket = require('ws');
const ab = new TextDecoder();
@@ -42,7 +32,6 @@ exports.create = (gateway, query = {}, ...args) => {
query = new URLSearchParams(query);
if (q) new URLSearchParams(q).forEach((v, k) => query.set(k, v));
const ws = new exports.WebSocket(`${g}?${query}`, ...args);
if (browser) ws.binaryType = 'arraybuffer';
return ws;
};

View File

@@ -1,9 +1,8 @@
'use strict';
require('setimmediate');
const EventEmitter = require('events');
const EventEmitter = require('node:events');
const RESTManager = require('../rest/RESTManager');
const { DefaultOptions } = require('../util/Constants');
const Options = require('../util/Options');
const Util = require('../util/Util');
/**
@@ -14,39 +13,18 @@ class BaseClient extends EventEmitter {
constructor(options = {}) {
super();
/**
* Timeouts set by {@link BaseClient#setTimeout} that are still active
* @type {Set<Timeout>}
* @private
*/
this._timeouts = new Set();
/**
* Intervals set by {@link BaseClient#setInterval} that are still active
* @type {Set<Timeout>}
* @private
*/
this._intervals = new Set();
/**
* Intervals set by {@link BaseClient#setImmediate} that are still active
* @type {Set<Immediate>}
* @private
*/
this._immediates = new Set();
/**
* The options the client was instantiated with
* @type {ClientOptions}
*/
this.options = Util.mergeDefault(DefaultOptions, options);
this.options = Util.mergeDefault(Options.createDefault(), options);
/**
* The REST manager of the client
* @type {RESTManager}
* @private
*/
this.rest = new RESTManager(this, options._tokenType);
this.rest = new RESTManager(this);
}
/**
@@ -61,82 +39,32 @@ class BaseClient extends EventEmitter {
/**
* Destroys all assets used by the base client.
* @returns {void}
*/
destroy() {
for (const t of this._timeouts) this.clearTimeout(t);
for (const i of this._intervals) this.clearInterval(i);
for (const i of this._immediates) this.clearImmediate(i);
this._timeouts.clear();
this._intervals.clear();
this._immediates.clear();
if (this.rest.sweepInterval) clearInterval(this.rest.sweepInterval);
}
/**
* Sets a timeout that will be automatically cancelled if the client is destroyed.
* @param {Function} fn Function to execute
* @param {number} delay Time to wait before executing (in milliseconds)
* @param {...*} args Arguments for the function
* @returns {Timeout}
* Increments max listeners by one, if they are not zero.
* @private
*/
setTimeout(fn, delay, ...args) {
const timeout = setTimeout(() => {
fn(...args);
this._timeouts.delete(timeout);
}, delay);
this._timeouts.add(timeout);
return timeout;
incrementMaxListeners() {
const maxListeners = this.getMaxListeners();
if (maxListeners !== 0) {
this.setMaxListeners(maxListeners + 1);
}
}
/**
* Clears a timeout.
* @param {Timeout} timeout Timeout to cancel
* Decrements max listeners by one, if they are not zero.
* @private
*/
clearTimeout(timeout) {
clearTimeout(timeout);
this._timeouts.delete(timeout);
}
/**
* Sets an interval that will be automatically cancelled if the client is destroyed.
* @param {Function} fn Function to execute
* @param {number} delay Time to wait between executions (in milliseconds)
* @param {...*} args Arguments for the function
* @returns {Timeout}
*/
setInterval(fn, delay, ...args) {
const interval = setInterval(fn, delay, ...args);
this._intervals.add(interval);
return interval;
}
/**
* Clears an interval.
* @param {Timeout} interval Interval to cancel
*/
clearInterval(interval) {
clearInterval(interval);
this._intervals.delete(interval);
}
/**
* Sets an immediate that will be automatically cancelled if the client is destroyed.
* @param {Function} fn Function to execute
* @param {...*} args Arguments for the function
* @returns {Immediate}
*/
setImmediate(fn, ...args) {
const immediate = setImmediate(fn, ...args);
this._immediates.add(immediate);
return immediate;
}
/**
* Clears an immediate.
* @param {Immediate} immediate Immediate to cancel
*/
clearImmediate(immediate) {
clearImmediate(immediate);
this._immediates.delete(immediate);
decrementMaxListeners() {
const maxListeners = this.getMaxListeners();
if (maxListeners !== 0) {
this.setMaxListeners(maxListeners - 1);
}
}
toJSON(...props) {
@@ -145,3 +73,9 @@ class BaseClient extends EventEmitter {
}
module.exports = BaseClient;
/**
* Emitted for general debugging information.
* @event BaseClient#debug
* @param {string} info The debug information
*/

View File

@@ -1,25 +1,31 @@
'use strict';
const { Collection } = require('@discordjs/collection');
const BaseClient = require('./BaseClient');
const ActionsManager = require('./actions/ActionsManager');
const ClientVoiceManager = require('./voice/ClientVoiceManager');
const WebSocketManager = require('./websocket/WebSocketManager');
const { Error, TypeError, RangeError } = require('../errors');
const BaseGuildEmojiManager = require('../managers/BaseGuildEmojiManager');
const ChannelManager = require('../managers/ChannelManager');
const GuildEmojiManager = require('../managers/GuildEmojiManager');
const GuildManager = require('../managers/GuildManager');
const UserManager = require('../managers/UserManager');
const ShardClientUtil = require('../sharding/ShardClientUtil');
const ClientApplication = require('../structures/ClientApplication');
const ClientPresence = require('../structures/ClientPresence');
const GuildPreview = require('../structures/GuildPreview');
const GuildTemplate = require('../structures/GuildTemplate');
const Invite = require('../structures/Invite');
const { Sticker } = require('../structures/Sticker');
const StickerPack = require('../structures/StickerPack');
const VoiceRegion = require('../structures/VoiceRegion');
const Webhook = require('../structures/Webhook');
const Collection = require('../util/Collection');
const { Events, browser, DefaultOptions } = require('../util/Constants');
const Widget = require('../structures/Widget');
const { Events, InviteScopes, Status } = require('../util/Constants');
const DataResolver = require('../util/DataResolver');
const Intents = require('../util/Intents');
const Options = require('../util/Options');
const Permissions = require('../util/Permissions');
const Structures = require('../util/Structures');
const Sweepers = require('../util/Sweepers');
/**
* The main hub for interacting with the Discord API, and the starting point for any bot.
@@ -27,27 +33,21 @@ const Structures = require('../util/Structures');
*/
class Client extends BaseClient {
/**
* @param {ClientOptions} [options] Options for the client
* @param {ClientOptions} options Options for the client
*/
constructor(options = {}) {
super(Object.assign({ _tokenType: 'Bot' }, options));
constructor(options) {
super(options);
// Obtain shard details from environment or if present, worker threads
let data = process.env;
try {
// Test if worker threads module is present and used
data = require('worker_threads').workerData || data;
} catch {
// Do nothing
}
const data = require('node:worker_threads').workerData ?? process.env;
const defaults = Options.createDefault();
if (this.options.shards === DefaultOptions.shards) {
if (this.options.shards === defaults.shards) {
if ('SHARDS' in data) {
this.options.shards = JSON.parse(data.SHARDS);
}
}
if (this.options.shardCount === DefaultOptions.shardCount) {
if (this.options.shardCount === defaults.shardCount) {
if ('SHARD_COUNT' in data) {
this.options.shardCount = Number(data.SHARD_COUNT);
} else if (Array.isArray(this.options.shards)) {
@@ -73,6 +73,20 @@ class Client extends BaseClient {
this._validateOptions();
/**
* Functions called when a cache is garbage collected or the Client is destroyed
* @type {Set<Function>}
* @private
*/
this._cleanups = new Set();
/**
* The finalizers used to cleanup items.
* @type {FinalizationRegistry}
* @private
*/
this._finalizers = new FinalizationRegistry(this._finalize.bind(this));
/**
* The WebSocket manager of the client
* @type {WebSocketManager}
@@ -87,35 +101,34 @@ class Client extends BaseClient {
this.actions = new ActionsManager(this);
/**
* The voice manager of the client (`null` in browsers)
* @type {?ClientVoiceManager}
* The voice manager of the client
* @type {ClientVoiceManager}
*/
this.voice = !browser ? new ClientVoiceManager(this) : null;
this.voice = new ClientVoiceManager(this);
/**
* Shard helpers for the client (only if the process was spawned from a {@link ShardingManager})
* @type {?ShardClientUtil}
*/
this.shard =
!browser && process.env.SHARDING_MANAGER
? ShardClientUtil.singleton(this, process.env.SHARDING_MANAGER_MODE)
: null;
this.shard = process.env.SHARDING_MANAGER
? ShardClientUtil.singleton(this, process.env.SHARDING_MANAGER_MODE)
: null;
/**
* All of the {@link User} objects that have been cached at any point, mapped by their IDs
* All of the {@link User} objects that have been cached at any point, mapped by their ids
* @type {UserManager}
*/
this.users = new UserManager(this);
/**
* All of the guilds the client is currently handling, mapped by their IDs -
* All of the guilds the client is currently handling, mapped by their ids -
* as long as sharding isn't being used, this will be *every* guild the bot is a member of
* @type {GuildManager}
*/
this.guilds = new GuildManager(this);
/**
* All of the {@link Channel}s that the client is currently handling, mapped by their IDs -
* All of the {@link Channel}s that the client is currently handling, mapped by their ids -
* as long as sharding isn't being used, this will be *every* channel in *every* guild the bot
* is a member of. Note that DM channels will not be initially cached, and thus not be present
* in the Manager without their explicit fetching or use.
@@ -123,18 +136,24 @@ class Client extends BaseClient {
*/
this.channels = new ChannelManager(this);
const ClientPresence = Structures.get('ClientPresence');
/**
* The sweeping functions and their intervals used to periodically sweep caches
* @type {Sweepers}
*/
this.sweepers = new Sweepers(this, this.options.sweepers);
/**
* The presence of the Client
* @private
* @type {ClientPresence}
*/
this.presence = new ClientPresence(this);
this.presence = new ClientPresence(this, this.options.presence);
Object.defineProperty(this, 'token', { writable: true });
if (!browser && !this.token && 'DISCORD_TOKEN' in process.env) {
if (!this.token && 'DISCORD_TOKEN' in process.env) {
/**
* Authorization token for the logged in bot
* Authorization token for the logged in bot.
* If present, this defaults to `process.env.DISCORD_TOKEN` when instantiating the client
* <warn>This should be kept private at all times.</warn>
* @type {?string}
*/
@@ -149,6 +168,12 @@ class Client extends BaseClient {
*/
this.user = null;
/**
* The application of this bot
* @type {?ClientApplication}
*/
this.application = null;
/**
* Time at which the client was last regarded as being in the `READY` state
* (each time the client disconnects and successfully reconnects, this will be overwritten)
@@ -157,17 +182,24 @@ class Client extends BaseClient {
this.readyAt = null;
if (this.options.messageSweepInterval > 0) {
this.setInterval(this.sweepMessages.bind(this), this.options.messageSweepInterval * 1000);
process.emitWarning(
'The message sweeping client options are deprecated, use the global sweepers instead.',
'DeprecationWarning',
);
this.sweepMessageInterval = setInterval(
this.sweepMessages.bind(this),
this.options.messageSweepInterval * 1_000,
).unref();
}
}
/**
* All custom emojis that the client has access to, mapped by their IDs
* @type {GuildEmojiManager}
* All custom emojis that the client has access to, mapped by their ids
* @type {BaseGuildEmojiManager}
* @readonly
*/
get emojis() {
const emojis = new GuildEmojiManager({ client: this });
const emojis = new BaseGuildEmojiManager(this);
for (const guild of this.guilds.cache.values()) {
if (guild.available) for (const emoji of guild.emojis.cache.values()) emojis.cache.set(emoji.id, emoji);
}
@@ -180,7 +212,7 @@ class Client extends BaseClient {
* @readonly
*/
get readyTimestamp() {
return this.readyAt ? this.readyAt.getTime() : null;
return this.readyAt?.getTime() ?? null;
}
/**
@@ -193,8 +225,8 @@ class Client extends BaseClient {
}
/**
* Logs the client in, establishing a websocket connection to Discord.
* @param {string} token Token of the account to log in with
* Logs the client in, establishing a WebSocket connection to Discord.
* @param {string} [token=this.token] Token of the account to log in with
* @returns {Promise<string>} Token of the account used
* @example
* client.login('my token');
@@ -211,7 +243,7 @@ class Client extends BaseClient {
);
if (this.options.presence) {
this.options.ws.presence = await this.presence._parse(this.options.presence);
this.options.ws.presence = this.presence._parse(this.options.presence);
}
this.emit(Events.DEBUG, 'Preparing to connect to the gateway...');
@@ -225,36 +257,75 @@ class Client extends BaseClient {
}
}
/**
* Returns whether the client has logged in, indicative of being able to access
* properties such as `user` and `application`.
* @returns {boolean}
*/
isReady() {
return this.ws.status === Status.READY;
}
/**
* Logs out, terminates the connection to Discord, and destroys the client.
* @returns {void}
*/
destroy() {
super.destroy();
for (const fn of this._cleanups) fn();
this._cleanups.clear();
if (this.sweepMessageInterval) clearInterval(this.sweepMessageInterval);
this.sweepers.destroy();
this.ws.destroy();
this.token = null;
}
/**
* Options used when fetching an invite from Discord.
* @typedef {Object} ClientFetchInviteOptions
* @property {Snowflake} [guildScheduledEventId] The id of the guild scheduled event to include with
* the invite
*/
/**
* Obtains an invite from Discord.
* @param {InviteResolvable} invite Invite code or URL
* @param {ClientFetchInviteOptions} [options] Options for fetching the invite
* @returns {Promise<Invite>}
* @example
* client.fetchInvite('https://discord.gg/bRCvFy9')
* client.fetchInvite('https://discord.gg/djs')
* .then(invite => console.log(`Obtained invite with code: ${invite.code}`))
* .catch(console.error);
*/
fetchInvite(invite) {
async fetchInvite(invite, options) {
const code = DataResolver.resolveInviteCode(invite);
return this.api
.invites(code)
.get({ query: { with_counts: true } })
.then(data => new Invite(this, data));
const data = await this.api.invites(code).get({
query: { with_counts: true, with_expiration: true, guild_scheduled_event_id: options?.guildScheduledEventId },
});
return new Invite(this, data);
}
/**
* Obtains a template from Discord.
* @param {GuildTemplateResolvable} template Template code or URL
* @returns {Promise<GuildTemplate>}
* @example
* client.fetchGuildTemplate('https://discord.new/FKvmczH2HyUf')
* .then(template => console.log(`Obtained template with code: ${template.code}`))
* .catch(console.error);
*/
async fetchGuildTemplate(template) {
const code = DataResolver.resolveGuildTemplateCode(template);
const data = await this.api.guilds.templates(code).get();
return new GuildTemplate(this, data);
}
/**
* Obtains a webhook from Discord.
* @param {Snowflake} id ID of the webhook
* @param {Snowflake} id The webhook's id
* @param {string} [token] Token for the webhook
* @returns {Promise<Webhook>}
* @example
@@ -262,11 +333,9 @@ class Client extends BaseClient {
* .then(webhook => console.log(`Obtained webhook with name: ${webhook.name}`))
* .catch(console.error);
*/
fetchWebhook(id, token) {
return this.api
.webhooks(id, token)
.get()
.then(data => new Webhook(this, data));
async fetchWebhook(id, token) {
const data = await this.api.webhooks(id, token).get();
return new Webhook(this, { token, ...data });
}
/**
@@ -277,12 +346,56 @@ class Client extends BaseClient {
* .then(regions => console.log(`Available regions are: ${regions.map(region => region.name).join(', ')}`))
* .catch(console.error);
*/
fetchVoiceRegions() {
return this.api.voice.regions.get().then(res => {
const regions = new Collection();
for (const region of res) regions.set(region.id, new VoiceRegion(region));
return regions;
});
async fetchVoiceRegions() {
const apiRegions = await this.api.voice.regions.get();
const regions = new Collection();
for (const region of apiRegions) regions.set(region.id, new VoiceRegion(region));
return regions;
}
/**
* Obtains a sticker from Discord.
* @param {Snowflake} id The sticker's id
* @returns {Promise<Sticker>}
* @example
* client.fetchSticker('id')
* .then(sticker => console.log(`Obtained sticker with name: ${sticker.name}`))
* .catch(console.error);
*/
async fetchSticker(id) {
const data = await this.api.stickers(id).get();
return new Sticker(this, data);
}
/**
* Obtains the list of sticker packs available to Nitro subscribers from Discord.
* @returns {Promise<Collection<Snowflake, StickerPack>>}
* @example
* client.fetchPremiumStickerPacks()
* .then(packs => console.log(`Available sticker packs are: ${packs.map(pack => pack.name).join(', ')}`))
* .catch(console.error);
*/
async fetchPremiumStickerPacks() {
const data = await this.api('sticker-packs').get();
return new Collection(data.sticker_packs.map(p => [p.id, new StickerPack(this, p)]));
}
/**
* A last ditch cleanup function for garbage collection.
* @param {Function} options.cleanup The function called to GC
* @param {string} [options.message] The message to send after a successful GC
* @param {string} [options.name] The name of the item being GCed
* @private
*/
_finalize({ cleanup, message, name }) {
try {
cleanup();
this._cleanups.delete(cleanup);
if (message) {
this.emit(Events.DEBUG, message);
}
} catch {
this.emit(Events.DEBUG, `Garbage collection failed on ${name ?? 'an unknown item'}.`);
}
}
/**
@@ -306,62 +419,109 @@ class Client extends BaseClient {
return -1;
}
const lifetimeMs = lifetime * 1000;
const now = Date.now();
let channels = 0;
let messages = 0;
for (const channel of this.channels.cache.values()) {
if (!channel.messages) continue;
channels++;
messages += channel.messages.cache.sweep(
message => now - (message.editedTimestamp || message.createdTimestamp) > lifetimeMs,
);
}
this.emit(
Events.DEBUG,
`Swept ${messages} messages older than ${lifetime} seconds in ${channels} text-based channels`,
);
const messages = this.sweepers.sweepMessages(Sweepers.outdatedMessageSweepFilter(lifetime)());
this.emit(Events.DEBUG, `Swept ${messages} messages older than ${lifetime} seconds`);
return messages;
}
/**
* Obtains the OAuth Application of this bot from Discord.
* @returns {Promise<ClientApplication>}
* Obtains a guild preview from Discord, available for all guilds the bot is in and all Discoverable guilds.
* @param {GuildResolvable} guild The guild to fetch the preview for
* @returns {Promise<GuildPreview>}
*/
fetchApplication() {
return this.api.oauth2
.applications('@me')
.get()
.then(app => new ClientApplication(this, app));
async fetchGuildPreview(guild) {
const id = this.guilds.resolveId(guild);
if (!id) throw new TypeError('INVALID_TYPE', 'guild', 'GuildResolvable');
const data = await this.api.guilds(id).preview.get();
return new GuildPreview(this, data);
}
/**
* Generates a link that can be used to invite the bot to a guild.
* @param {PermissionResolvable} [permissions] Permissions to request
* @returns {Promise<string>}
* @example
* client.generateInvite(['SEND_MESSAGES', 'MANAGE_GUILD', 'MENTION_EVERYONE'])
* .then(link => console.log(`Generated bot invite link: ${link}`))
* .catch(console.error);
* Obtains the widget data of a guild from Discord, available for guilds with the widget enabled.
* @param {GuildResolvable} guild The guild to fetch the widget data for
* @returns {Promise<Widget>}
*/
async generateInvite(permissions) {
permissions = Permissions.resolve(permissions);
const application = await this.fetchApplication();
async fetchGuildWidget(guild) {
const id = this.guilds.resolveId(guild);
if (!id) throw new TypeError('INVALID_TYPE', 'guild', 'GuildResolvable');
const data = await this.api.guilds(id, 'widget.json').get();
return new Widget(this, data);
}
/**
* Options for {@link Client#generateInvite}.
* @typedef {Object} InviteGenerationOptions
* @property {InviteScope[]} scopes Scopes that should be requested
* @property {PermissionResolvable} [permissions] Permissions to request
* @property {GuildResolvable} [guild] Guild to preselect
* @property {boolean} [disableGuildSelect] Whether to disable the guild selection
*/
/**
* Generates a link that can be used to invite the bot to a guild.
* @param {InviteGenerationOptions} [options={}] Options for the invite
* @returns {string}
* @example
* const link = client.generateInvite({
* scopes: ['applications.commands'],
* });
* console.log(`Generated application invite link: ${link}`);
* @example
* const link = client.generateInvite({
* permissions: [
* Permissions.FLAGS.SEND_MESSAGES,
* Permissions.FLAGS.MANAGE_GUILD,
* Permissions.FLAGS.MENTION_EVERYONE,
* ],
* scopes: ['bot'],
* });
* console.log(`Generated bot invite link: ${link}`);
*/
generateInvite(options = {}) {
if (typeof options !== 'object') throw new TypeError('INVALID_TYPE', 'options', 'object', true);
if (!this.application) throw new Error('CLIENT_NOT_READY', 'generate an invite link');
const query = new URLSearchParams({
client_id: application.id,
permissions: permissions,
scope: 'bot',
client_id: this.application.id,
});
const { scopes } = options;
if (typeof scopes === 'undefined') {
throw new TypeError('INVITE_MISSING_SCOPES');
}
if (!Array.isArray(scopes)) {
throw new TypeError('INVALID_TYPE', 'scopes', 'Array of Invite Scopes', true);
}
if (!scopes.some(scope => ['bot', 'applications.commands'].includes(scope))) {
throw new TypeError('INVITE_MISSING_SCOPES');
}
const invalidScope = scopes.find(scope => !InviteScopes.includes(scope));
if (invalidScope) {
throw new TypeError('INVALID_ELEMENT', 'Array', 'scopes', invalidScope);
}
query.set('scope', scopes.join(' '));
if (options.permissions) {
const permissions = Permissions.resolve(options.permissions);
if (permissions) query.set('permissions', permissions);
}
if (options.disableGuildSelect) {
query.set('disable_guild_select', true);
}
if (options.guild) {
const guildId = this.guilds.resolveId(options.guild);
if (!guildId) throw new TypeError('INVALID_TYPE', 'options.guild', 'GuildResolvable');
query.set('guild_id', guildId);
}
return `${this.options.http.api}${this.api.oauth2.authorize}?${query}`;
}
toJSON() {
return super.toJSON({
readyAt: false,
presences: false,
});
}
@@ -382,8 +542,10 @@ class Client extends BaseClient {
* @private
*/
_validateOptions(options = this.options) {
if (typeof options.ws.intents !== 'undefined') {
options.ws.intents = Intents.resolve(options.ws.intents);
if (typeof options.intents === 'undefined') {
throw new TypeError('CLIENT_MISSING_INTENTS');
} else {
options.intents = Intents.resolve(options.intents);
}
if (typeof options.shardCount !== 'number' || isNaN(options.shardCount) || options.shardCount < 1) {
throw new TypeError('CLIENT_INVALID_OPTION', 'shardCount', 'a number greater than or equal to 1');
@@ -392,8 +554,8 @@ class Client extends BaseClient {
throw new TypeError('CLIENT_INVALID_OPTION', 'shards', "'auto', a number or array of numbers");
}
if (options.shards && !options.shards.length) throw new RangeError('CLIENT_INVALID_PROVIDED_SHARDS');
if (typeof options.messageCacheMaxSize !== 'number' || isNaN(options.messageCacheMaxSize)) {
throw new TypeError('CLIENT_INVALID_OPTION', 'messageCacheMaxSize', 'a number');
if (typeof options.makeCache !== 'function') {
throw new TypeError('CLIENT_INVALID_OPTION', 'makeCache', 'a function');
}
if (typeof options.messageCacheLifetime !== 'number' || isNaN(options.messageCacheLifetime)) {
throw new TypeError('CLIENT_INVALID_OPTION', 'The messageCacheLifetime', 'a number');
@@ -401,11 +563,11 @@ class Client extends BaseClient {
if (typeof options.messageSweepInterval !== 'number' || isNaN(options.messageSweepInterval)) {
throw new TypeError('CLIENT_INVALID_OPTION', 'messageSweepInterval', 'a number');
}
if (typeof options.fetchAllMembers !== 'boolean') {
throw new TypeError('CLIENT_INVALID_OPTION', 'fetchAllMembers', 'a boolean');
if (typeof options.sweepers !== 'object' || options.sweepers === null) {
throw new TypeError('CLIENT_INVALID_OPTION', 'sweepers', 'an object');
}
if (typeof options.disableMentions !== 'string') {
throw new TypeError('CLIENT_INVALID_OPTION', 'disableMentions', 'a string');
if (typeof options.invalidRequestWarningInterval !== 'number' || isNaN(options.invalidRequestWarningInterval)) {
throw new TypeError('CLIENT_INVALID_OPTION', 'invalidRequestWarningInterval', 'a number');
}
if (!Array.isArray(options.partials)) {
throw new TypeError('CLIENT_INVALID_OPTION', 'partials', 'an Array');
@@ -416,12 +578,27 @@ class Client extends BaseClient {
if (typeof options.restRequestTimeout !== 'number' || isNaN(options.restRequestTimeout)) {
throw new TypeError('CLIENT_INVALID_OPTION', 'restRequestTimeout', 'a number');
}
if (typeof options.restGlobalRateLimit !== 'number' || isNaN(options.restGlobalRateLimit)) {
throw new TypeError('CLIENT_INVALID_OPTION', 'restGlobalRateLimit', 'a number');
}
if (typeof options.restSweepInterval !== 'number' || isNaN(options.restSweepInterval)) {
throw new TypeError('CLIENT_INVALID_OPTION', 'restSweepInterval', 'a number');
}
if (typeof options.retryLimit !== 'number' || isNaN(options.retryLimit)) {
throw new TypeError('CLIENT_INVALID_OPTION', 'retryLimit', 'a number');
}
if (typeof options.failIfNotExists !== 'boolean') {
throw new TypeError('CLIENT_INVALID_OPTION', 'failIfNotExists', 'a boolean');
}
if (!Array.isArray(options.userAgentSuffix)) {
throw new TypeError('CLIENT_INVALID_OPTION', 'userAgentSuffix', 'an array of strings');
}
if (
typeof options.rejectOnRateLimit !== 'undefined' &&
!(typeof options.rejectOnRateLimit === 'function' || Array.isArray(options.rejectOnRateLimit))
) {
throw new TypeError('CLIENT_INVALID_OPTION', 'rejectOnRateLimit', 'an array or a function');
}
}
}
@@ -434,7 +611,6 @@ module.exports = Client;
*/
/**
* Emitted for general debugging information.
* @event Client#debug
* @param {string} info The debug information
* @external Collection
* @see {@link https://discord.js.org/#/docs/collection/main/class/Collection}
*/

View File

@@ -1,6 +1,7 @@
'use strict';
const BaseClient = require('./BaseClient');
const { Error } = require('../errors');
const Webhook = require('../structures/Webhook');
/**
@@ -10,20 +11,49 @@ const Webhook = require('../structures/Webhook');
*/
class WebhookClient extends BaseClient {
/**
* @param {Snowflake} id ID of the webhook
* @param {string} token Token of the webhook
* @param {ClientOptions} [options] Options for the client
* @example
* // Create a new webhook and send a message
* const hook = new Discord.WebhookClient('1234', 'abcdef');
* hook.send('This will send a message').catch(console.error);
* The data for the webhook client containing either an id and token or just a URL
* @typedef {Object} WebhookClientData
* @property {Snowflake} [id] The id of the webhook
* @property {string} [token] The token of the webhook
* @property {string} [url] The full URL for the webhook client
*/
constructor(id, token, options) {
/**
* @param {WebhookClientData} data The data of the webhook
* @param {ClientOptions} [options] Options for the client
*/
constructor(data, options) {
super(options);
Object.defineProperty(this, 'client', { value: this });
let { id, token } = data;
if ('url' in data) {
const url = data.url.match(
// eslint-disable-next-line no-useless-escape
/^https?:\/\/(?:canary|ptb)?\.?discord\.com\/api\/webhooks(?:\/v[0-9]\d*)?\/([^\/]+)\/([^\/]+)/i,
);
if (!url || url.length <= 1) throw new Error('WEBHOOK_URL_INVALID');
[, id, token] = url;
}
this.id = id;
Object.defineProperty(this, 'token', { value: token, writable: true, configurable: true });
}
// These are here only for documentation purposes - they are implemented by Webhook
/* eslint-disable no-empty-function */
send() {}
sendSlackMessage() {}
fetchMessage() {}
edit() {}
editMessage() {}
delete() {}
deleteMessage() {}
get createdTimestamp() {}
get createdAt() {}
get url() {}
}
Webhook.applyToClass(WebhookClient);

View File

@@ -26,20 +26,20 @@ class GenericAction {
getPayload(data, manager, id, partialType, cache) {
const existing = manager.cache.get(id);
if (!existing && this.client.options.partials.includes(partialType)) {
return manager.add(data, cache);
return manager._add(data, cache);
}
return existing;
}
getChannel(data) {
const id = data.channel_id || data.id;
const id = data.channel_id ?? data.id;
return (
data.channel ||
data.channel ??
this.getPayload(
{
id,
guild_id: data.guild_id,
recipients: [data.author || { id: data.user_id }],
recipients: [data.author ?? data.user ?? { id: data.user_id }],
},
this.client.channels,
id,
@@ -49,14 +49,14 @@ class GenericAction {
}
getMessage(data, channel, cache) {
const id = data.message_id || data.id;
const id = data.message_id ?? data.id;
return (
data.message ||
data.message ??
this.getPayload(
{
id,
channel_id: channel.id,
guild_id: data.guild_id || (channel.guild ? channel.guild.id : null),
guild_id: data.guild_id ?? channel.guild?.id,
},
channel.messages,
id,
@@ -67,12 +67,12 @@ class GenericAction {
}
getReaction(data, message, user) {
const id = data.emoji.id || decodeURIComponent(data.emoji.name);
const id = data.emoji.id ?? decodeURIComponent(data.emoji.name);
return this.getPayload(
{
emoji: data.emoji,
count: message.partial ? null : 0,
me: user ? user.id === this.client.user.id : false,
me: user?.id === this.client.user.id,
},
message.reactions,
id,
@@ -81,22 +81,34 @@ class GenericAction {
}
getMember(data, guild) {
const id = data.user.id;
return this.getPayload(
{
user: {
id,
},
},
guild.members,
id,
PartialTypes.GUILD_MEMBER,
);
return this.getPayload(data, guild.members, data.user.id, PartialTypes.GUILD_MEMBER);
}
getUser(data) {
const id = data.user_id;
return data.user || this.getPayload({ id }, this.client.users, id, PartialTypes.USER);
return data.user ?? this.getPayload({ id }, this.client.users, id, PartialTypes.USER);
}
getUserFromMember(data) {
if (data.guild_id && data.member?.user) {
const guild = this.client.guilds.cache.get(data.guild_id);
if (guild) {
return guild.members._add(data.member).user;
} else {
return this.client.users._add(data.member.user);
}
}
return this.getUser(data);
}
getScheduledEvent(data, guild) {
const id = data.guild_scheduled_event_id ?? data.id;
return this.getPayload(
{ id, guild_id: data.guild_id ?? guild.id },
guild.scheduledEvents,
id,
PartialTypes.GUILD_SCHEDULED_EVENT,
);
}
}

View File

@@ -4,36 +4,57 @@ class ActionsManager {
constructor(client) {
this.client = client;
this.register(require('./MessageCreate'));
this.register(require('./MessageDelete'));
this.register(require('./MessageDeleteBulk'));
this.register(require('./MessageUpdate'));
this.register(require('./MessageReactionAdd'));
this.register(require('./MessageReactionRemove'));
this.register(require('./MessageReactionRemoveAll'));
this.register(require('./MessageReactionRemoveEmoji'));
this.register(require('./ChannelCreate'));
this.register(require('./ChannelDelete'));
this.register(require('./ChannelUpdate'));
this.register(require('./GuildDelete'));
this.register(require('./GuildUpdate'));
this.register(require('./InviteCreate'));
this.register(require('./InviteDelete'));
this.register(require('./GuildMemberRemove'));
this.register(require('./GuildBanAdd'));
this.register(require('./GuildBanRemove'));
this.register(require('./GuildRoleCreate'));
this.register(require('./GuildRoleDelete'));
this.register(require('./GuildRoleUpdate'));
this.register(require('./PresenceUpdate'));
this.register(require('./UserUpdate'));
this.register(require('./VoiceStateUpdate'));
this.register(require('./GuildChannelsPositionUpdate'));
this.register(require('./GuildDelete'));
this.register(require('./GuildEmojiCreate'));
this.register(require('./GuildEmojiDelete'));
this.register(require('./GuildEmojiUpdate'));
this.register(require('./GuildEmojisUpdate'));
this.register(require('./GuildRolesPositionUpdate'));
this.register(require('./GuildChannelsPositionUpdate'));
this.register(require('./GuildIntegrationsUpdate'));
this.register(require('./GuildMemberRemove'));
this.register(require('./GuildMemberUpdate'));
this.register(require('./GuildRoleCreate'));
this.register(require('./GuildRoleDelete'));
this.register(require('./GuildRoleUpdate'));
this.register(require('./GuildRolesPositionUpdate'));
this.register(require('./GuildScheduledEventCreate'));
this.register(require('./GuildScheduledEventDelete'));
this.register(require('./GuildScheduledEventUpdate'));
this.register(require('./GuildScheduledEventUserAdd'));
this.register(require('./GuildScheduledEventUserRemove'));
this.register(require('./GuildStickerCreate'));
this.register(require('./GuildStickerDelete'));
this.register(require('./GuildStickerUpdate'));
this.register(require('./GuildStickersUpdate'));
this.register(require('./GuildUpdate'));
this.register(require('./InteractionCreate'));
this.register(require('./InviteCreate'));
this.register(require('./InviteDelete'));
this.register(require('./MessageCreate'));
this.register(require('./MessageDelete'));
this.register(require('./MessageDeleteBulk'));
this.register(require('./MessageReactionAdd'));
this.register(require('./MessageReactionRemove'));
this.register(require('./MessageReactionRemoveAll'));
this.register(require('./MessageReactionRemoveEmoji'));
this.register(require('./MessageUpdate'));
this.register(require('./PresenceUpdate'));
this.register(require('./StageInstanceCreate'));
this.register(require('./StageInstanceDelete'));
this.register(require('./StageInstanceUpdate'));
this.register(require('./ThreadCreate'));
this.register(require('./ThreadDelete'));
this.register(require('./ThreadListSync'));
this.register(require('./ThreadMemberUpdate'));
this.register(require('./ThreadMembersUpdate'));
this.register(require('./TypingStart'));
this.register(require('./UserUpdate'));
this.register(require('./VoiceStateUpdate'));
this.register(require('./WebhooksUpdate'));
}

View File

@@ -7,12 +7,12 @@ class ChannelCreateAction extends Action {
handle(data) {
const client = this.client;
const existing = client.channels.cache.has(data.id);
const channel = client.channels.add(data);
const channel = client.channels._add(data);
if (!existing && channel) {
/**
* Emitted whenever a channel is created.
* Emitted whenever a guild channel is created.
* @event Client#channelCreate
* @param {DMChannel|GuildChannel} channel The channel that was created
* @param {GuildChannel} channel The channel that was created
*/
client.emit(Events.CHANNEL_CREATE, channel);
}

View File

@@ -1,7 +1,9 @@
'use strict';
const Action = require('./Action');
const { deletedChannels } = require('../../structures/Channel');
const DMChannel = require('../../structures/DMChannel');
const { deletedMessages } = require('../../structures/Message');
const { Events } = require('../../util/Constants');
class ChannelDeleteAction extends Action {
@@ -12,14 +14,14 @@ class ChannelDeleteAction extends Action {
handle(data) {
const client = this.client;
let channel = client.channels.cache.get(data.id);
const channel = client.channels.cache.get(data.id);
if (channel) {
client.channels.remove(channel.id);
channel.deleted = true;
client.channels._remove(channel.id);
deletedChannels.add(channel);
if (channel.messages && !(channel instanceof DMChannel)) {
for (const message of channel.messages.cache.values()) {
message.deleted = true;
deletedMessages.add(message);
}
}
/**

View File

@@ -1,7 +1,7 @@
'use strict';
const Action = require('./Action');
const Channel = require('../../structures/Channel');
const { Channel } = require('../../structures/Channel');
const { ChannelTypes } = require('../../util/Constants');
class ChannelUpdateAction extends Action {
@@ -12,10 +12,9 @@ class ChannelUpdateAction extends Action {
if (channel) {
const old = channel._update(data);
if (ChannelTypes[channel.type.toUpperCase()] !== data.type) {
if (ChannelTypes[channel.type] !== data.type) {
const newChannel = Channel.create(this.client, data, channel.guild);
for (const [id, message] of channel.messages.cache) newChannel.messages.cache.set(id, message);
newChannel._typing = new Map(channel._typing);
channel = newChannel;
this.client.channels.cache.set(channel.id, channel);
}
@@ -24,6 +23,8 @@ class ChannelUpdateAction extends Action {
old,
updated: channel,
};
} else {
client.channels._add(data);
}
return {};

View File

@@ -0,0 +1,20 @@
'use strict';
const Action = require('./Action');
const { Events } = require('../../util/Constants');
class GuildBanAdd extends Action {
handle(data) {
const client = this.client;
const guild = client.guilds.cache.get(data.guild_id);
/**
* Emitted whenever a member is banned from a guild.
* @event Client#guildBanAdd
* @param {GuildBan} ban The ban that occurred
*/
if (guild) client.emit(Events.GUILD_BAN_ADD, guild.bans._add(data));
}
}
module.exports = GuildBanAdd;

View File

@@ -1,20 +1,24 @@
'use strict';
const Action = require('./Action');
const GuildBan = require('../../structures/GuildBan');
const { Events } = require('../../util/Constants');
class GuildBanRemove extends Action {
handle(data) {
const client = this.client;
const guild = client.guilds.cache.get(data.guild_id);
const user = client.users.add(data.user);
/**
* Emitted whenever a member is unbanned from a guild.
* @event Client#guildBanRemove
* @param {Guild} guild The guild that the unban occurred in
* @param {User} user The user that was unbanned
* @param {GuildBan} ban The ban that was removed
*/
if (guild && user) client.emit(Events.GUILD_BAN_REMOVE, guild, user);
if (guild) {
const ban = guild.bans.cache.get(data.user.id) ?? new GuildBan(client, data, guild);
guild.bans.cache.delete(ban.user.id);
client.emit(Events.GUILD_BAN_REMOVE, ban);
}
}
}

View File

@@ -1,6 +1,7 @@
'use strict';
const Action = require('./Action');
const { deletedGuilds } = require('../../structures/Guild');
const { Events } = require('../../util/Constants');
class GuildDeleteAction extends Action {
@@ -14,11 +15,7 @@ class GuildDeleteAction extends Action {
let guild = client.guilds.cache.get(data.id);
if (guild) {
for (const channel of guild.channels.cache.values()) {
if (channel.type === 'text') channel.stopTyping(true);
}
if (guild.available && data.unavailable) {
if (data.unavailable) {
// Guild is unavailable
guild.available = false;
@@ -36,12 +33,12 @@ class GuildDeleteAction extends Action {
};
}
for (const channel of guild.channels.cache.values()) this.client.channels.remove(channel.id);
if (guild.voice && guild.voice.connection) guild.voice.connection.disconnect();
for (const channel of guild.channels.cache.values()) this.client.channels._remove(channel.id);
client.voice.adapters.get(data.id)?.destroy();
// Delete guild
client.guilds.cache.delete(guild.id);
guild.deleted = true;
deletedGuilds.add(guild);
/**
* Emitted whenever a guild kicks the client or the guild is deleted/left.
@@ -53,14 +50,14 @@ class GuildDeleteAction extends Action {
this.deleted.set(guild.id, guild);
this.scheduleForDeletion(guild.id);
} else {
guild = this.deleted.get(data.id) || null;
guild = this.deleted.get(data.id) ?? null;
}
return { guild };
}
scheduleForDeletion(id) {
this.client.setTimeout(() => this.deleted.delete(id), this.client.options.restWsBridgeTimeout);
setTimeout(() => this.deleted.delete(id), this.client.options.restWsBridgeTimeout).unref();
}
}

View File

@@ -5,13 +5,14 @@ const { Events } = require('../../util/Constants');
class GuildEmojiCreateAction extends Action {
handle(guild, createdEmoji) {
const emoji = guild.emojis.add(createdEmoji);
const already = guild.emojis.cache.has(createdEmoji.id);
const emoji = guild.emojis._add(createdEmoji);
/**
* Emitted whenever a custom emoji is created in a guild.
* @event Client#emojiCreate
* @param {GuildEmoji} emoji The emoji that was created
*/
this.client.emit(Events.GUILD_EMOJI_CREATE, emoji);
if (!already) this.client.emit(Events.GUILD_EMOJI_CREATE, emoji);
return { emoji };
}
}

View File

@@ -1,12 +1,13 @@
'use strict';
const Action = require('./Action');
const { deletedEmojis } = require('../../structures/Emoji');
const { Events } = require('../../util/Constants');
class GuildEmojiDeleteAction extends Action {
handle(emoji) {
emoji.guild.emojis.cache.delete(emoji.id);
emoji.deleted = true;
deletedEmojis.add(emoji);
/**
* Emitted whenever a custom emoji is deleted in a guild.
* @event Client#emojiDelete

View File

@@ -5,7 +5,7 @@ const Action = require('./Action');
class GuildEmojisUpdateAction extends Action {
handle(data) {
const guild = this.client.guilds.cache.get(data.guild_id);
if (!guild || !guild.emojis) return;
if (!guild?.emojis) return;
const deletions = new Map(guild.emojis.cache);

View File

@@ -1,6 +1,7 @@
'use strict';
const Action = require('./Action');
const { deletedGuildMembers } = require('../../structures/GuildMember');
const { Events, Status } = require('../../util/Constants');
class GuildMemberRemoveAction extends Action {
@@ -9,10 +10,10 @@ class GuildMemberRemoveAction extends Action {
const guild = client.guilds.cache.get(data.guild_id);
let member = null;
if (guild) {
member = this.getMember(data, guild);
member = this.getMember({ user: data.user }, guild);
guild.memberCount--;
if (member) {
member.deleted = true;
deletedGuildMembers.add(member);
guild.members.cache.delete(member.id);
/**
* Emitted whenever a member leaves a guild, or is kicked.

View File

@@ -0,0 +1,43 @@
'use strict';
const Action = require('./Action');
const { Status, Events } = require('../../util/Constants');
class GuildMemberUpdateAction extends Action {
handle(data, shard) {
const { client } = this;
if (data.user.username) {
const user = client.users.cache.get(data.user.id);
if (!user) {
client.users._add(data.user);
} else if (!user._equals(data.user)) {
client.actions.UserUpdate.handle(data.user);
}
}
const guild = client.guilds.cache.get(data.guild_id);
if (guild) {
const member = this.getMember({ user: data.user }, guild);
if (member) {
const old = member._update(data);
/**
* Emitted whenever a guild member changes - i.e. new role, removed role, nickname.
* @event Client#guildMemberUpdate
* @param {GuildMember} oldMember The member before the update
* @param {GuildMember} newMember The member after the update
*/
if (shard.status === Status.READY && !member.equals(old)) client.emit(Events.GUILD_MEMBER_UPDATE, old, member);
} else {
const newMember = guild.members._add(data);
/**
* Emitted whenever a member becomes available in a large guild.
* @event Client#guildMemberAvailable
* @param {GuildMember} member The member that became available
*/
this.client.emit(Events.GUILD_MEMBER_AVAILABLE, newMember);
}
}
}
}
module.exports = GuildMemberUpdateAction;

View File

@@ -10,7 +10,7 @@ class GuildRoleCreate extends Action {
let role;
if (guild) {
const already = guild.roles.cache.has(data.role.id);
role = guild.roles.add(data.role);
role = guild.roles._add(data.role);
/**
* Emitted whenever a role is created.
* @event Client#roleCreate

View File

@@ -1,6 +1,7 @@
'use strict';
const Action = require('./Action');
const { deletedRoles } = require('../../structures/Role');
const { Events } = require('../../util/Constants');
class GuildRoleDeleteAction extends Action {
@@ -13,7 +14,7 @@ class GuildRoleDeleteAction extends Action {
role = guild.roles.cache.get(data.role_id);
if (role) {
guild.roles.cache.delete(data.role_id);
role.deleted = true;
deletedRoles.add(role);
/**
* Emitted whenever a guild role is deleted.
* @event Client#roleDelete

View File

@@ -0,0 +1,27 @@
'use strict';
const Action = require('./Action');
const { Events } = require('../../util/Constants');
class GuildScheduledEventCreateAction extends Action {
handle(data) {
const client = this.client;
const guild = client.guilds.cache.get(data.guild_id);
if (guild) {
const guildScheduledEvent = guild.scheduledEvents._add(data);
/**
* Emitted whenever a guild scheduled event is created.
* @event Client#guildScheduledEventCreate
* @param {GuildScheduledEvent} guildScheduledEvent The created guild scheduled event
*/
client.emit(Events.GUILD_SCHEDULED_EVENT_CREATE, guildScheduledEvent);
return { guildScheduledEvent };
}
return {};
}
}
module.exports = GuildScheduledEventCreateAction;

View File

@@ -0,0 +1,31 @@
'use strict';
const Action = require('./Action');
const { Events } = require('../../util/Constants');
class GuildScheduledEventDeleteAction extends Action {
handle(data) {
const client = this.client;
const guild = client.guilds.cache.get(data.guild_id);
if (guild) {
const guildScheduledEvent = this.getScheduledEvent(data, guild);
if (guildScheduledEvent) {
guild.scheduledEvents.cache.delete(guildScheduledEvent.id);
/**
* Emitted whenever a guild scheduled event is deleted.
* @event Client#guildScheduledEventDelete
* @param {GuildScheduledEvent} guildScheduledEvent The deleted guild scheduled event
*/
client.emit(Events.GUILD_SCHEDULED_EVENT_DELETE, guildScheduledEvent);
return { guildScheduledEvent };
}
}
return {};
}
}
module.exports = GuildScheduledEventDeleteAction;

View File

@@ -0,0 +1,30 @@
'use strict';
const Action = require('./Action');
const { Events } = require('../../util/Constants');
class GuildScheduledEventUpdateAction extends Action {
handle(data) {
const client = this.client;
const guild = client.guilds.cache.get(data.guild_id);
if (guild) {
const oldGuildScheduledEvent = guild.scheduledEvents.cache.get(data.id)?._clone() ?? null;
const newGuildScheduledEvent = guild.scheduledEvents._add(data);
/**
* Emitted whenever a guild scheduled event gets updated.
* @event Client#guildScheduledEventUpdate
* @param {?GuildScheduledEvent} oldGuildScheduledEvent The guild scheduled event object before the update
* @param {GuildScheduledEvent} newGuildScheduledEvent The guild scheduled event object after the update
*/
client.emit(Events.GUILD_SCHEDULED_EVENT_UPDATE, oldGuildScheduledEvent, newGuildScheduledEvent);
return { oldGuildScheduledEvent, newGuildScheduledEvent };
}
return {};
}
}
module.exports = GuildScheduledEventUpdateAction;

View File

@@ -0,0 +1,32 @@
'use strict';
const Action = require('./Action');
const { Events } = require('../../util/Constants');
class GuildScheduledEventUserAddAction extends Action {
handle(data) {
const client = this.client;
const guild = client.guilds.cache.get(data.guild_id);
if (guild) {
const guildScheduledEvent = this.getScheduledEvent(data, guild);
const user = this.getUser(data);
if (guildScheduledEvent && user) {
/**
* Emitted whenever a user subscribes to a guild scheduled event
* @event Client#guildScheduledEventUserAdd
* @param {GuildScheduledEvent} guildScheduledEvent The guild scheduled event
* @param {User} user The user who subscribed
*/
client.emit(Events.GUILD_SCHEDULED_EVENT_USER_ADD, guildScheduledEvent, user);
return { guildScheduledEvent, user };
}
}
return {};
}
}
module.exports = GuildScheduledEventUserAddAction;

View File

@@ -0,0 +1,32 @@
'use strict';
const Action = require('./Action');
const { Events } = require('../../util/Constants');
class GuildScheduledEventUserRemoveAction extends Action {
handle(data) {
const client = this.client;
const guild = client.guilds.cache.get(data.guild_id);
if (guild) {
const guildScheduledEvent = this.getScheduledEvent(data, guild);
const user = this.getUser(data);
if (guildScheduledEvent && user) {
/**
* Emitted whenever a user unsubscribes from a guild scheduled event
* @event Client#guildScheduledEventUserRemove
* @param {GuildScheduledEvent} guildScheduledEvent The guild scheduled event
* @param {User} user The user who unsubscribed
*/
client.emit(Events.GUILD_SCHEDULED_EVENT_USER_REMOVE, guildScheduledEvent, user);
return { guildScheduledEvent, user };
}
}
return {};
}
}
module.exports = GuildScheduledEventUserRemoveAction;

View File

@@ -0,0 +1,20 @@
'use strict';
const Action = require('./Action');
const { Events } = require('../../util/Constants');
class GuildStickerCreateAction extends Action {
handle(guild, createdSticker) {
const already = guild.stickers.cache.has(createdSticker.id);
const sticker = guild.stickers._add(createdSticker);
/**
* Emitted whenever a custom sticker is created in a guild.
* @event Client#stickerCreate
* @param {Sticker} sticker The sticker that was created
*/
if (!already) this.client.emit(Events.GUILD_STICKER_CREATE, sticker);
return { sticker };
}
}
module.exports = GuildStickerCreateAction;

View File

@@ -0,0 +1,21 @@
'use strict';
const Action = require('./Action');
const { deletedStickers } = require('../../structures/Sticker');
const { Events } = require('../../util/Constants');
class GuildStickerDeleteAction extends Action {
handle(sticker) {
sticker.guild.stickers.cache.delete(sticker.id);
deletedStickers.add(sticker);
/**
* Emitted whenever a custom sticker is deleted in a guild.
* @event Client#stickerDelete
* @param {Sticker} sticker The sticker that was deleted
*/
this.client.emit(Events.GUILD_STICKER_DELETE, sticker);
return { sticker };
}
}
module.exports = GuildStickerDeleteAction;

View File

@@ -0,0 +1,20 @@
'use strict';
const Action = require('./Action');
const { Events } = require('../../util/Constants');
class GuildStickerUpdateAction extends Action {
handle(current, data) {
const old = current._update(data);
/**
* Emitted whenever a custom sticker is updated in a guild.
* @event Client#stickerUpdate
* @param {Sticker} oldSticker The old sticker
* @param {Sticker} newSticker The new sticker
*/
this.client.emit(Events.GUILD_STICKER_UPDATE, old, current);
return { sticker: current };
}
}
module.exports = GuildStickerUpdateAction;

View File

@@ -0,0 +1,34 @@
'use strict';
const Action = require('./Action');
class GuildStickersUpdateAction extends Action {
handle(data) {
const guild = this.client.guilds.cache.get(data.guild_id);
if (!guild?.stickers) return;
const deletions = new Map(guild.stickers.cache);
for (const sticker of data.stickers) {
// Determine type of sticker event
const cachedSticker = guild.stickers.cache.get(sticker.id);
if (cachedSticker) {
deletions.delete(sticker.id);
if (!cachedSticker.equals(sticker)) {
// Sticker updated
this.client.actions.GuildStickerUpdate.handle(cachedSticker, sticker);
}
} else {
// Sticker added
this.client.actions.GuildStickerCreate.handle(guild, sticker);
}
}
for (const sticker of deletions.values()) {
// Sticker deleted
this.client.actions.GuildStickerDelete.handle(sticker);
}
}
}
module.exports = GuildStickersUpdateAction;

View File

@@ -0,0 +1,88 @@
'use strict';
const Action = require('./Action');
const AutocompleteInteraction = require('../../structures/AutocompleteInteraction');
const ButtonInteraction = require('../../structures/ButtonInteraction');
const CommandInteraction = require('../../structures/CommandInteraction');
const MessageContextMenuInteraction = require('../../structures/MessageContextMenuInteraction');
const SelectMenuInteraction = require('../../structures/SelectMenuInteraction');
const UserContextMenuInteraction = require('../../structures/UserContextMenuInteraction');
const { Events, InteractionTypes, MessageComponentTypes, ApplicationCommandTypes } = require('../../util/Constants');
let deprecationEmitted = false;
class InteractionCreateAction extends Action {
handle(data) {
const client = this.client;
// Resolve and cache partial channels for Interaction#channel getter
this.getChannel(data);
let InteractionType;
switch (data.type) {
case InteractionTypes.APPLICATION_COMMAND:
switch (data.data.type) {
case ApplicationCommandTypes.CHAT_INPUT:
InteractionType = CommandInteraction;
break;
case ApplicationCommandTypes.USER:
InteractionType = UserContextMenuInteraction;
break;
case ApplicationCommandTypes.MESSAGE:
InteractionType = MessageContextMenuInteraction;
break;
default:
client.emit(
Events.DEBUG,
`[INTERACTION] Received application command interaction with unknown type: ${data.data.type}`,
);
return;
}
break;
case InteractionTypes.MESSAGE_COMPONENT:
switch (data.data.component_type) {
case MessageComponentTypes.BUTTON:
InteractionType = ButtonInteraction;
break;
case MessageComponentTypes.SELECT_MENU:
InteractionType = SelectMenuInteraction;
break;
default:
client.emit(
Events.DEBUG,
`[INTERACTION] Received component interaction with unknown type: ${data.data.component_type}`,
);
return;
}
break;
case InteractionTypes.APPLICATION_COMMAND_AUTOCOMPLETE:
InteractionType = AutocompleteInteraction;
break;
default:
client.emit(Events.DEBUG, `[INTERACTION] Received interaction with unknown type: ${data.type}`);
return;
}
const interaction = new InteractionType(client, data);
/**
* Emitted when an interaction is created.
* @event Client#interactionCreate
* @param {Interaction} interaction The interaction which was created
*/
client.emit(Events.INTERACTION_CREATE, interaction);
/**
* Emitted when an interaction is created.
* @event Client#interaction
* @param {Interaction} interaction The interaction which was created
* @deprecated Use {@link Client#event:interactionCreate} instead
*/
if (client.emit('interaction', interaction) && !deprecationEmitted) {
deprecationEmitted = true;
process.emitWarning('The interaction event is deprecated. Use interactionCreate instead', 'DeprecationWarning');
}
}
}
module.exports = InteractionCreateAction;

View File

@@ -1,7 +1,6 @@
'use strict';
const Action = require('./Action');
const Invite = require('../../structures/Invite');
const { Events } = require('../../util/Constants');
class InviteCreateAction extends Action {
@@ -9,14 +8,15 @@ class InviteCreateAction extends Action {
const client = this.client;
const channel = client.channels.cache.get(data.channel_id);
const guild = client.guilds.cache.get(data.guild_id);
if (!channel && !guild) return false;
if (!channel) return false;
const inviteData = Object.assign(data, { channel, guild });
const invite = new Invite(client, inviteData);
const invite = guild.invites._add(inviteData);
/**
* Emitted when an invite is created.
* <info> This event only triggers if the client has `MANAGE_GUILD` permissions for the guild,
* or `MANAGE_CHANNEL` permissions for the channel.</info>
* or `MANAGE_CHANNELS` permissions for the channel.</info>
* @event Client#inviteCreate
* @param {Invite} invite The invite that was created
*/

View File

@@ -9,15 +9,16 @@ class InviteDeleteAction extends Action {
const client = this.client;
const channel = client.channels.cache.get(data.channel_id);
const guild = client.guilds.cache.get(data.guild_id);
if (!channel && !guild) return false;
if (!channel) return false;
const inviteData = Object.assign(data, { channel, guild });
const invite = new Invite(client, inviteData);
guild.invites.cache.delete(invite.code);
/**
* Emitted when an invite is deleted.
* <info> This event only triggers if the client has `MANAGE_GUILD` permissions for the guild,
* or `MANAGE_CHANNEL` permissions for the channel.</info>
* or `MANAGE_CHANNELS` permissions for the channel.</info>
* @event Client#inviteDelete
* @param {Invite} invite The invite that was deleted
*/

View File

@@ -3,32 +3,38 @@
const Action = require('./Action');
const { Events } = require('../../util/Constants');
let deprecationEmitted = false;
class MessageCreateAction extends Action {
handle(data) {
const client = this.client;
const channel = client.channels.cache.get(data.channel_id);
const channel = this.getChannel(data);
if (channel) {
if (!channel.isText()) return {};
const existing = channel.messages.cache.get(data.id);
if (existing) return { message: existing };
const message = channel.messages.add(data);
const user = message.author;
let member = message.member;
channel.lastMessageID = data.id;
if (user) {
user.lastMessageID = data.id;
user.lastMessageChannelID = channel.id;
}
if (member) {
member.lastMessageID = data.id;
member.lastMessageChannelID = channel.id;
}
const message = channel.messages._add(data);
channel.lastMessageId = data.id;
/**
* Emitted whenever a message is created.
* @event Client#messageCreate
* @param {Message} message The created message
*/
client.emit(Events.MESSAGE_CREATE, message);
/**
* Emitted whenever a message is created.
* @event Client#message
* @param {Message} message The created message
* @deprecated Use {@link Client#event:messageCreate} instead
*/
client.emit(Events.MESSAGE_CREATE, message);
if (client.emit('message', message) && !deprecationEmitted) {
deprecationEmitted = true;
process.emitWarning('The message event is deprecated. Use messageCreate instead', 'DeprecationWarning');
}
return { message };
}

View File

@@ -1,6 +1,7 @@
'use strict';
const Action = require('./Action');
const { deletedMessages } = require('../../structures/Message');
const { Events } = require('../../util/Constants');
class MessageDeleteAction extends Action {
@@ -9,10 +10,12 @@ class MessageDeleteAction extends Action {
const channel = this.getChannel(data);
let message;
if (channel) {
if (!channel.isText()) return {};
message = this.getMessage(data, channel);
if (message) {
channel.messages.cache.delete(message.id);
message.deleted = true;
deletedMessages.add(message);
/**
* Emitted whenever a message is deleted.
* @event Client#messageDelete

View File

@@ -1,7 +1,8 @@
'use strict';
const { Collection } = require('@discordjs/collection');
const Action = require('./Action');
const Collection = require('../../util/Collection');
const { deletedMessages } = require('../../structures/Message');
const { Events } = require('../../util/Constants');
class MessageDeleteBulkAction extends Action {
@@ -10,6 +11,8 @@ class MessageDeleteBulkAction extends Action {
const channel = client.channels.cache.get(data.channel_id);
if (channel) {
if (!channel.isText()) return {};
const ids = data.ids;
const messages = new Collection();
for (const id of ids) {
@@ -22,7 +25,7 @@ class MessageDeleteBulkAction extends Action {
false,
);
if (message) {
message.deleted = true;
deletedMessages.add(message);
messages.set(message.id, message);
channel.messages.cache.delete(id);
}
@@ -31,7 +34,7 @@ class MessageDeleteBulkAction extends Action {
/**
* Emitted whenever messages are deleted in bulk.
* @event Client#messageDeleteBulk
* @param {Collection<Snowflake, Message>} messages The deleted messages, mapped by their ID
* @param {Collection<Snowflake, Message>} messages The deleted messages, mapped by their id
*/
if (messages.size > 0) client.emit(Events.MESSAGE_BULK_DELETE, messages);
return { messages };

View File

@@ -8,33 +8,38 @@ const { PartialTypes } = require('../../util/Constants');
{ user_id: 'id',
message_id: 'id',
emoji: { name: '<27>', id: null },
channel_id: 'id' } }
channel_id: 'id',
// If originating from a guild
guild_id: 'id',
member: { ..., user: { ... } } }
*/
class MessageReactionAdd extends Action {
handle(data) {
handle(data, fromStructure = false) {
if (!data.emoji) return false;
const user = this.getUser(data);
const user = this.getUserFromMember(data);
if (!user) return false;
// Verify channel
const channel = this.getChannel(data);
if (!channel || channel.type === 'voice') return false;
if (!channel || !channel.isText()) return false;
// Verify message
const message = this.getMessage(data, channel);
if (!message) return false;
// Verify reaction
if (message.partial && !this.client.options.partials.includes(PartialTypes.REACTION)) return false;
const reaction = message.reactions.add({
const includePartial = this.client.options.partials.includes(PartialTypes.REACTION);
if (message.partial && !includePartial) return false;
const reaction = message.reactions._add({
emoji: data.emoji,
count: message.partial ? null : 0,
me: user.id === this.client.user.id,
});
if (!reaction) return false;
reaction._add(user);
if (fromStructure) return { message, reaction, user };
/**
* Emitted whenever a reaction is added to a cached message.
* @event Client#messageReactionAdd

View File

@@ -7,7 +7,8 @@ const { Events } = require('../../util/Constants');
{ user_id: 'id',
message_id: 'id',
emoji: { name: '<27>', id: null },
channel_id: 'id' } }
channel_id: 'id',
guild_id: 'id' }
*/
class MessageReactionRemove extends Action {
@@ -19,7 +20,7 @@ class MessageReactionRemove extends Action {
// Verify channel
const channel = this.getChannel(data);
if (!channel || channel.type === 'voice') return false;
if (!channel || !channel.isText()) return false;
// Verify message
const message = this.getMessage(data, channel);

View File

@@ -7,14 +7,17 @@ class MessageReactionRemoveAll extends Action {
handle(data) {
// Verify channel
const channel = this.getChannel(data);
if (!channel || channel.type === 'voice') return false;
if (!channel || !channel.isText()) return false;
// Verify message
const message = this.getMessage(data, channel);
if (!message) return false;
// Copy removed reactions to emit for the event.
const removed = message.reactions.cache.clone();
message.reactions.cache.clear();
this.client.emit(Events.MESSAGE_REACTION_REMOVE_ALL, message);
this.client.emit(Events.MESSAGE_REACTION_REMOVE_ALL, message, removed);
return { message };
}
@@ -24,6 +27,7 @@ class MessageReactionRemoveAll extends Action {
* Emitted whenever all reactions are removed from a cached message.
* @event Client#messageReactionRemoveAll
* @param {Message} message The message the reactions were removed from
* @param {Collection<string|Snowflake, MessageReaction>} reactions The cached message reactions that were removed.
*/
module.exports = MessageReactionRemoveAll;

View File

@@ -6,14 +6,14 @@ const { Events } = require('../../util/Constants');
class MessageReactionRemoveEmoji extends Action {
handle(data) {
const channel = this.getChannel(data);
if (!channel || channel.type === 'voice') return false;
if (!channel || !channel.isText()) return false;
const message = this.getMessage(data, channel);
if (!message) return false;
const reaction = this.getReaction(data, message);
if (!reaction) return false;
if (!message.partial) message.reactions.cache.delete(reaction.emoji.id || reaction.emoji.name);
if (!message.partial) message.reactions.cache.delete(reaction.emoji.id ?? reaction.emoji.name);
/**
* Emitted when a bot removes an emoji reaction from a cached message.

View File

@@ -6,12 +6,14 @@ class MessageUpdateAction extends Action {
handle(data) {
const channel = this.getChannel(data);
if (channel) {
if (!channel.isText()) return {};
const { id, channel_id, guild_id, author, timestamp, type } = data;
const message = this.getMessage({ id, channel_id, guild_id, author, timestamp, type }, channel);
if (message) {
message.patch(data);
const old = message._update(data);
return {
old: message._edits[0],
old,
updated: message,
};
}

View File

@@ -6,37 +6,35 @@ const { Events } = require('../../util/Constants');
class PresenceUpdateAction extends Action {
handle(data) {
let user = this.client.users.cache.get(data.user.id);
if (!user && data.user.username) user = this.client.users.add(data.user);
if (!user && data.user?.username) user = this.client.users._add(data.user);
if (!user) return;
if (data.user && data.user.username) {
if (!user.equals(data.user)) this.client.actions.UserUpdate.handle(data.user);
if (data.user?.username) {
if (!user._equals(data.user)) this.client.actions.UserUpdate.handle(data.user);
}
const guild = this.client.guilds.cache.get(data.guild_id);
if (!guild) return;
let oldPresence = guild.presences.cache.get(user.id);
if (oldPresence) oldPresence = oldPresence._clone();
const oldPresence = guild.presences.cache.get(user.id)?._clone() ?? null;
let member = guild.members.cache.get(user.id);
if (!member && data.status !== 'offline') {
member = guild.members.add({
member = guild.members._add({
user,
roles: data.roles,
deaf: false,
mute: false,
});
this.client.emit(Events.GUILD_MEMBER_AVAILABLE, member);
}
guild.presences.add(Object.assign(data, { guild }));
if (member && this.client.listenerCount(Events.PRESENCE_UPDATE)) {
const newPresence = guild.presences._add(Object.assign(data, { guild }));
if (this.client.listenerCount(Events.PRESENCE_UPDATE) && !newPresence.equals(oldPresence)) {
/**
* Emitted whenever a guild member's presence (e.g. status, activity) is changed.
* @event Client#presenceUpdate
* @param {?Presence} oldPresence The presence before the update, if one at all
* @param {Presence} newPresence The presence after the update
*/
this.client.emit(Events.PRESENCE_UPDATE, oldPresence, member.presence);
this.client.emit(Events.PRESENCE_UPDATE, oldPresence, newPresence);
}
}
}

View File

@@ -0,0 +1,28 @@
'use strict';
const Action = require('./Action');
const { Events } = require('../../util/Constants');
class StageInstanceCreateAction extends Action {
handle(data) {
const client = this.client;
const channel = this.getChannel(data);
if (channel) {
const stageInstance = channel.guild.stageInstances._add(data);
/**
* Emitted whenever a stage instance is created.
* @event Client#stageInstanceCreate
* @param {StageInstance} stageInstance The created stage instance
*/
client.emit(Events.STAGE_INSTANCE_CREATE, stageInstance);
return { stageInstance };
}
return {};
}
}
module.exports = StageInstanceCreateAction;

View File

@@ -0,0 +1,33 @@
'use strict';
const Action = require('./Action');
const { deletedStageInstances } = require('../../structures/StageInstance');
const { Events } = require('../../util/Constants');
class StageInstanceDeleteAction extends Action {
handle(data) {
const client = this.client;
const channel = this.getChannel(data);
if (channel) {
const stageInstance = channel.guild.stageInstances._add(data);
if (stageInstance) {
channel.guild.stageInstances.cache.delete(stageInstance.id);
deletedStageInstances.add(stageInstance);
/**
* Emitted whenever a stage instance is deleted.
* @event Client#stageInstanceDelete
* @param {StageInstance} stageInstance The deleted stage instance
*/
client.emit(Events.STAGE_INSTANCE_DELETE, stageInstance);
return { stageInstance };
}
}
return {};
}
}
module.exports = StageInstanceDeleteAction;

View File

@@ -0,0 +1,30 @@
'use strict';
const Action = require('./Action');
const { Events } = require('../../util/Constants');
class StageInstanceUpdateAction extends Action {
handle(data) {
const client = this.client;
const channel = this.getChannel(data);
if (channel) {
const oldStageInstance = channel.guild.stageInstances.cache.get(data.id)?._clone() ?? null;
const newStageInstance = channel.guild.stageInstances._add(data);
/**
* Emitted whenever a stage instance gets updated - e.g. change in topic or privacy level
* @event Client#stageInstanceUpdate
* @param {?StageInstance} oldStageInstance The stage instance before the update
* @param {StageInstance} newStageInstance The stage instance after the update
*/
client.emit(Events.STAGE_INSTANCE_UPDATE, oldStageInstance, newStageInstance);
return { oldStageInstance, newStageInstance };
}
return {};
}
}
module.exports = StageInstanceUpdateAction;

View File

@@ -0,0 +1,23 @@
'use strict';
const Action = require('./Action');
const { Events } = require('../../util/Constants');
class ThreadCreateAction extends Action {
handle(data) {
const client = this.client;
const existing = client.channels.cache.has(data.id);
const thread = client.channels._add(data);
if (!existing && thread) {
/**
* Emitted whenever a thread is created or when the client user is added to a thread.
* @event Client#threadCreate
* @param {ThreadChannel} thread The thread that was created
*/
client.emit(Events.THREAD_CREATE, thread);
}
return { thread };
}
}
module.exports = ThreadCreateAction;

View File

@@ -0,0 +1,32 @@
'use strict';
const Action = require('./Action');
const { deletedChannels } = require('../../structures/Channel');
const { deletedMessages } = require('../../structures/Message');
const { Events } = require('../../util/Constants');
class ThreadDeleteAction extends Action {
handle(data) {
const client = this.client;
const thread = client.channels.cache.get(data.id);
if (thread) {
client.channels._remove(thread.id);
deletedChannels.add(thread);
for (const message of thread.messages.cache.values()) {
deletedMessages.add(message);
}
/**
* Emitted whenever a thread is deleted.
* @event Client#threadDelete
* @param {ThreadChannel} thread The thread that was deleted
*/
client.emit(Events.THREAD_DELETE, thread);
}
return { thread };
}
}
module.exports = ThreadDeleteAction;

View File

@@ -0,0 +1,59 @@
'use strict';
const { Collection } = require('@discordjs/collection');
const Action = require('./Action');
const { Events } = require('../../util/Constants');
class ThreadListSyncAction extends Action {
handle(data) {
const client = this.client;
const guild = client.guilds.cache.get(data.guild_id);
if (!guild) return {};
if (data.channel_ids) {
for (const id of data.channel_ids) {
const channel = client.channels.resolve(id);
if (channel) this.removeStale(channel);
}
} else {
for (const channel of guild.channels.cache.values()) {
this.removeStale(channel);
}
}
const syncedThreads = data.threads.reduce((coll, rawThread) => {
const thread = client.channels._add(rawThread);
return coll.set(thread.id, thread);
}, new Collection());
for (const rawMember of Object.values(data.members)) {
// Discord sends the thread id as id in this object
const thread = client.channels.cache.get(rawMember.id);
if (thread) {
thread.members._add(rawMember);
}
}
/**
* Emitted whenever the client user gains access to a text or news channel that contains threads
* @event Client#threadListSync
* @param {Collection<Snowflake, ThreadChannel>} threads The threads that were synced
*/
client.emit(Events.THREAD_LIST_SYNC, syncedThreads);
return {
syncedThreads,
};
}
removeStale(channel) {
channel.threads?.cache.forEach(thread => {
if (!thread.archived) {
this.client.channels._remove(thread.id);
}
});
}
}
module.exports = ThreadListSyncAction;

View File

@@ -0,0 +1,30 @@
'use strict';
const Action = require('./Action');
const { Events } = require('../../util/Constants');
class ThreadMemberUpdateAction extends Action {
handle(data) {
const client = this.client;
// Discord sends the thread id as id in this object
const thread = client.channels.cache.get(data.id);
if (thread) {
const member = thread.members.cache.get(data.user_id);
if (!member) {
const newMember = thread.members._add(data);
return { newMember };
}
const old = member._update(data);
/**
* Emitted whenever the client user's thread member is updated.
* @event Client#threadMemberUpdate
* @param {ThreadMember} oldMember The member before the update
* @param {ThreadMember} newMember The member after the update
*/
client.emit(Events.THREAD_MEMBER_UPDATE, old, member);
}
return {};
}
}
module.exports = ThreadMemberUpdateAction;

View File

@@ -0,0 +1,34 @@
'use strict';
const Action = require('./Action');
const { Events } = require('../../util/Constants');
class ThreadMembersUpdateAction extends Action {
handle(data) {
const client = this.client;
const thread = client.channels.cache.get(data.id);
if (thread) {
const old = thread.members.cache.clone();
thread.memberCount = data.member_count;
data.added_members?.forEach(rawMember => {
thread.members._add(rawMember);
});
data.removed_member_ids?.forEach(memberId => {
thread.members.cache.delete(memberId);
});
/**
* Emitted whenever members are added or removed from a thread. Requires `GUILD_MEMBERS` privileged intent
* @event Client#threadMembersUpdate
* @param {Collection<Snowflake, ThreadMember>} oldMembers The members before the update
* @param {Collection<Snowflake, ThreadMember>} newMembers The members after the update
*/
client.emit(Events.THREAD_MEMBERS_UPDATE, old, thread.members.cache);
}
return {};
}
}
module.exports = ThreadMembersUpdateAction;

Some files were not shown because too many files have changed in this diff Show More