djs-selfbot-v13 3.2.2 → 3.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -36
- package/package.json +89 -85
- package/src/WebSocket.js +39 -39
- package/src/client/BaseClient.js +86 -86
- package/src/client/Client.js +934 -836
- package/src/client/WebhookClient.js +61 -61
- package/src/client/actions/Action.js +116 -120
- package/src/client/actions/ActionsManager.js +80 -78
- package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -34
- package/src/client/actions/AutoModerationActionExecution.js +27 -27
- package/src/client/actions/AutoModerationRuleCreate.js +28 -28
- package/src/client/actions/AutoModerationRuleDelete.js +32 -32
- package/src/client/actions/AutoModerationRuleUpdate.js +30 -30
- package/src/client/actions/ChannelCreate.js +23 -23
- package/src/client/actions/ChannelDelete.js +39 -39
- package/src/client/actions/ChannelUpdate.js +43 -43
- package/src/client/actions/GuildAuditLogEntryCreate.js +29 -29
- package/src/client/actions/GuildBanAdd.js +20 -20
- package/src/client/actions/GuildBanRemove.js +25 -25
- package/src/client/actions/GuildChannelsPositionUpdate.js +21 -21
- package/src/client/actions/GuildDelete.js +65 -65
- package/src/client/actions/GuildEmojiCreate.js +20 -20
- package/src/client/actions/GuildEmojiDelete.js +21 -21
- package/src/client/actions/GuildEmojiUpdate.js +20 -20
- package/src/client/actions/GuildEmojisUpdate.js +34 -34
- package/src/client/actions/GuildIntegrationsUpdate.js +19 -19
- package/src/client/actions/GuildMemberRemove.js +33 -32
- package/src/client/actions/GuildMemberUpdate.js +44 -43
- package/src/client/actions/GuildRoleCreate.js +25 -25
- package/src/client/actions/GuildRoleDelete.js +31 -31
- package/src/client/actions/GuildRoleUpdate.js +39 -39
- package/src/client/actions/GuildRolesPositionUpdate.js +21 -21
- package/src/client/actions/GuildScheduledEventCreate.js +27 -27
- package/src/client/actions/GuildScheduledEventDelete.js +31 -31
- package/src/client/actions/GuildScheduledEventUpdate.js +30 -30
- package/src/client/actions/GuildScheduledEventUserAdd.js +32 -32
- package/src/client/actions/GuildScheduledEventUserRemove.js +32 -32
- package/src/client/actions/GuildStickerCreate.js +20 -20
- package/src/client/actions/GuildStickerDelete.js +21 -21
- package/src/client/actions/GuildStickerUpdate.js +20 -20
- package/src/client/actions/GuildStickersUpdate.js +34 -34
- package/src/client/actions/GuildUpdate.js +33 -33
- package/src/client/actions/InviteCreate.js +28 -28
- package/src/client/actions/InviteDelete.js +30 -30
- package/src/client/actions/MessageCreate.js +50 -46
- package/src/client/actions/MessageDelete.js +32 -32
- package/src/client/actions/MessageDeleteBulk.js +46 -46
- package/src/client/actions/MessagePollVoteAdd.js +33 -0
- package/src/client/actions/MessagePollVoteRemove.js +33 -0
- package/src/client/actions/MessageReactionAdd.js +68 -56
- package/src/client/actions/MessageReactionRemove.js +50 -45
- package/src/client/actions/MessageReactionRemoveAll.js +33 -33
- package/src/client/actions/MessageReactionRemoveEmoji.js +28 -28
- package/src/client/actions/MessageUpdate.js +26 -26
- package/src/client/actions/PresenceUpdate.js +50 -46
- package/src/client/actions/StageInstanceCreate.js +28 -28
- package/src/client/actions/StageInstanceDelete.js +33 -33
- package/src/client/actions/StageInstanceUpdate.js +30 -30
- package/src/client/actions/ThreadCreate.js +24 -24
- package/src/client/actions/ThreadDelete.js +32 -32
- package/src/client/actions/ThreadListSync.js +59 -59
- package/src/client/actions/ThreadMemberUpdate.js +30 -30
- package/src/client/actions/ThreadMembersUpdate.js +34 -34
- package/src/client/actions/TypingStart.js +29 -29
- package/src/client/actions/UserUpdate.js +35 -35
- package/src/client/actions/VoiceStateUpdate.js +50 -57
- package/src/client/actions/WebhooksUpdate.js +20 -20
- package/src/client/voice/ClientVoiceManager.js +151 -51
- package/src/client/voice/VoiceConnection.js +1249 -0
- package/src/client/voice/dispatcher/AnnexBDispatcher.js +120 -0
- package/src/client/voice/dispatcher/AudioDispatcher.js +145 -0
- package/src/client/voice/dispatcher/BaseDispatcher.js +459 -0
- package/src/client/voice/dispatcher/VPxDispatcher.js +54 -0
- package/src/client/voice/dispatcher/VideoDispatcher.js +68 -0
- package/src/client/voice/networking/VoiceUDPClient.js +173 -0
- package/src/client/voice/networking/VoiceWebSocket.js +286 -0
- package/src/client/voice/player/MediaPlayer.js +321 -0
- package/src/client/voice/player/processing/AnnexBNalSplitter.js +244 -0
- package/src/client/voice/player/processing/IvfSplitter.js +106 -0
- package/src/client/voice/player/processing/PCMInsertSilence.js +37 -0
- package/src/client/voice/receiver/PacketHandler.js +260 -0
- package/src/client/voice/receiver/Receiver.js +96 -0
- package/src/client/voice/receiver/Recorder.js +173 -0
- package/src/client/voice/util/Function.js +116 -0
- package/src/client/voice/util/PlayInterface.js +122 -0
- package/src/client/voice/util/Secretbox.js +64 -0
- package/src/client/voice/util/Silence.js +16 -0
- package/src/client/voice/util/Socket.js +62 -0
- package/src/client/voice/util/VolumeInterface.js +104 -0
- package/src/client/websocket/WebSocketManager.js +392 -392
- package/src/client/websocket/WebSocketShard.js +907 -906
- package/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js +18 -18
- package/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js +20 -20
- package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js +20 -20
- package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -5
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -5
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -5
- package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/CALL_CREATE.js +14 -14
- package/src/client/websocket/handlers/CALL_DELETE.js +11 -11
- package/src/client/websocket/handlers/CALL_UPDATE.js +11 -11
- package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -5
- package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -5
- package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -22
- package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +19 -19
- package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +16 -16
- package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -16
- package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -5
- package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -5
- package/src/client/websocket/handlers/GUILD_CREATE.js +52 -52
- package/src/client/websocket/handlers/GUILD_DELETE.js +5 -5
- package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -39
- package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -19
- package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -5
- package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -5
- package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -5
- package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -5
- package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -5
- package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +12 -12
- package/src/client/websocket/handlers/INVITE_CREATE.js +5 -5
- package/src/client/websocket/handlers/INVITE_DELETE.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_ADD.js +5 -22
- package/src/client/websocket/handlers/MESSAGE_POLL_VOTE_REMOVE.js +5 -12
- package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -5
- package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -16
- package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/READY.js +121 -120
- package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +19 -19
- package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +17 -17
- package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +41 -41
- package/src/client/websocket/handlers/RESUMED.js +14 -14
- package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -5
- package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -5
- package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/THREAD_CREATE.js +5 -5
- package/src/client/websocket/handlers/THREAD_DELETE.js +5 -5
- package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -5
- package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -5
- package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -16
- package/src/client/websocket/handlers/TYPING_START.js +5 -5
- package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +6 -6
- package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/USER_REQUIRED_ACTION_UPDATE.js +78 -78
- package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/USER_UPDATE.js +5 -5
- package/src/client/websocket/handlers/VOICE_CHANNEL_EFFECT_SEND.js +16 -0
- package/src/client/websocket/handlers/VOICE_CHANNEL_STATUS_UPDATE.js +12 -12
- package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -6
- package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -5
- package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -5
- package/src/client/websocket/handlers/index.js +84 -83
- package/src/errors/DJSError.js +61 -61
- package/src/errors/Messages.js +217 -183
- package/src/errors/index.js +4 -4
- package/src/index.js +172 -159
- package/src/managers/ApplicationCommandManager.js +264 -264
- package/src/managers/ApplicationCommandPermissionsManager.js +417 -417
- package/src/managers/AutoModerationRuleManager.js +296 -296
- package/src/managers/BaseGuildEmojiManager.js +80 -80
- package/src/managers/BaseManager.js +19 -19
- package/src/managers/BillingManager.js +66 -66
- package/src/managers/CachedManager.js +71 -71
- package/src/managers/ChannelManager.js +148 -138
- package/src/managers/ClientUserSettingManager.js +372 -372
- package/src/managers/DataManager.js +61 -61
- package/src/managers/GuildBanManager.js +250 -250
- package/src/managers/GuildChannelManager.js +488 -488
- package/src/managers/GuildEmojiManager.js +171 -171
- package/src/managers/GuildEmojiRoleManager.js +118 -118
- package/src/managers/GuildForumThreadManager.js +108 -108
- package/src/managers/GuildInviteManager.js +213 -213
- package/src/managers/GuildManager.js +338 -304
- package/src/managers/GuildMemberManager.js +599 -597
- package/src/managers/GuildMemberRoleManager.js +195 -191
- package/src/managers/GuildScheduledEventManager.js +314 -296
- package/src/managers/GuildSettingManager.js +155 -155
- package/src/managers/GuildStickerManager.js +179 -179
- package/src/managers/GuildTextThreadManager.js +98 -98
- package/src/managers/InteractionManager.js +39 -39
- package/src/managers/MessageManager.js +423 -391
- package/src/managers/PermissionOverwriteManager.js +164 -166
- package/src/managers/PresenceManager.js +71 -58
- package/src/managers/ReactionManager.js +67 -67
- package/src/managers/ReactionUserManager.js +73 -71
- package/src/managers/RelationshipManager.js +278 -265
- package/src/managers/RoleManager.js +448 -352
- package/src/managers/SessionManager.js +66 -0
- package/src/managers/StageInstanceManager.js +162 -162
- package/src/managers/ThreadManager.js +175 -174
- package/src/managers/ThreadMemberManager.js +186 -186
- package/src/managers/UserManager.js +136 -146
- package/src/managers/UserNoteManager.js +53 -53
- package/src/managers/VoiceStateManager.js +59 -37
- package/src/rest/APIRequest.js +154 -160
- package/src/rest/APIRouter.js +53 -53
- package/src/rest/DiscordAPIError.js +119 -104
- package/src/rest/HTTPError.js +62 -62
- package/src/rest/RESTManager.js +67 -62
- package/src/rest/RateLimitError.js +55 -55
- package/src/rest/RequestHandler.js +466 -444
- package/src/sharding/Shard.js +444 -443
- package/src/sharding/ShardClientUtil.js +279 -275
- package/src/sharding/ShardingManager.js +319 -318
- package/src/structures/AnonymousGuild.js +98 -98
- package/src/structures/ApplicationCommand.js +593 -593
- package/src/structures/ApplicationRoleConnectionMetadata.js +48 -48
- package/src/structures/AutoModerationActionExecution.js +89 -89
- package/src/structures/AutoModerationRule.js +294 -294
- package/src/structures/AutocompleteInteraction.js +107 -107
- package/src/structures/Base.js +43 -43
- package/src/structures/BaseCommandInteraction.js +211 -211
- package/src/structures/BaseGuild.js +116 -116
- package/src/structures/BaseGuildEmoji.js +56 -56
- package/src/structures/BaseGuildTextChannel.js +191 -191
- package/src/structures/BaseGuildVoiceChannel.js +241 -241
- package/src/structures/BaseMessageComponent.js +181 -114
- package/src/structures/ButtonInteraction.js +11 -11
- package/src/structures/CallState.js +63 -63
- package/src/structures/CategoryChannel.js +85 -85
- package/src/structures/Channel.js +284 -270
- package/src/structures/ClientPresence.js +77 -85
- package/src/structures/ClientUser.js +479 -448
- package/src/structures/CommandInteraction.js +41 -41
- package/src/structures/CommandInteractionOptionResolver.js +276 -276
- package/src/structures/ContainerComponent.js +68 -0
- package/src/structures/ContextMenuInteraction.js +65 -65
- package/src/structures/DMChannel.js +219 -217
- package/src/structures/DirectoryChannel.js +20 -20
- package/src/structures/Emoji.js +148 -148
- package/src/structures/FileComponent.js +49 -0
- package/src/structures/ForumChannel.js +31 -261
- package/src/structures/GroupDMChannel.js +394 -387
- package/src/structures/Guild.js +1643 -1608
- package/src/structures/GuildAuditLogs.js +746 -729
- package/src/structures/GuildBan.js +59 -59
- package/src/structures/GuildBoost.js +108 -108
- package/src/structures/GuildChannel.js +470 -468
- package/src/structures/GuildEmoji.js +161 -161
- package/src/structures/GuildMember.js +636 -568
- package/src/structures/GuildPreview.js +191 -191
- package/src/structures/GuildPreviewEmoji.js +27 -27
- package/src/structures/GuildScheduledEvent.js +536 -441
- package/src/structures/GuildTemplate.js +236 -236
- package/src/structures/Integration.js +188 -188
- package/src/structures/IntegrationApplication.js +96 -96
- package/src/structures/Interaction.js +290 -290
- package/src/structures/InteractionCollector.js +248 -248
- package/src/structures/InteractionWebhook.js +43 -43
- package/src/structures/Invite.js +358 -358
- package/src/structures/InviteGuild.js +23 -23
- package/src/structures/InviteStageInstance.js +86 -86
- package/src/structures/MediaChannel.js +11 -0
- package/src/structures/MediaGalleryComponent.js +41 -0
- package/src/structures/MediaGalleryItem.js +47 -0
- package/src/structures/Message.js +1252 -1227
- package/src/structures/MessageActionRow.js +105 -103
- package/src/structures/MessageAttachment.js +216 -204
- package/src/structures/MessageButton.js +166 -165
- package/src/structures/MessageCollector.js +146 -146
- package/src/structures/MessageComponentInteraction.js +120 -120
- package/src/structures/MessageContextMenuInteraction.js +20 -20
- package/src/structures/MessageEmbed.js +596 -586
- package/src/structures/MessageMentions.js +273 -273
- package/src/structures/MessagePayload.js +354 -318
- package/src/structures/MessageReaction.js +181 -171
- package/src/structures/MessageSelectMenu.js +141 -140
- package/src/structures/Modal.js +161 -161
- package/src/structures/ModalSubmitFieldsResolver.js +53 -53
- package/src/structures/ModalSubmitInteraction.js +119 -119
- package/src/structures/NewsChannel.js +32 -32
- package/src/structures/OAuth2Guild.js +28 -28
- package/src/structures/PermissionOverwrites.js +198 -196
- package/src/structures/Poll.js +108 -0
- package/src/structures/PollAnswer.js +88 -0
- package/src/structures/Presence.js +1105 -1101
- package/src/structures/ReactionCollector.js +229 -229
- package/src/structures/ReactionEmoji.js +31 -31
- package/src/structures/Role.js +590 -531
- package/src/structures/SectionComponent.js +48 -0
- package/src/structures/SelectMenuInteraction.js +21 -21
- package/src/structures/SeparatorComponent.js +48 -0
- package/src/structures/Session.js +81 -0
- package/src/structures/StageChannel.js +104 -104
- package/src/structures/StageInstance.js +208 -208
- package/src/structures/Sticker.js +310 -310
- package/src/structures/StickerPack.js +95 -95
- package/src/structures/StoreChannel.js +56 -56
- package/src/structures/Team.js +118 -118
- package/src/structures/TeamMember.js +80 -71
- package/src/structures/TextChannel.js +33 -33
- package/src/structures/TextDisplayComponent.js +40 -0
- package/src/structures/TextInputComponent.js +132 -131
- package/src/structures/ThreadChannel.js +605 -607
- package/src/structures/ThreadMember.js +105 -105
- package/src/structures/ThreadOnlyChannel.js +249 -0
- package/src/structures/ThumbnailComponent.js +57 -0
- package/src/structures/Typing.js +74 -74
- package/src/structures/UnfurledMediaItem.js +29 -0
- package/src/structures/User.js +640 -543
- package/src/structures/UserContextMenuInteraction.js +29 -29
- package/src/structures/VoiceChannel.js +110 -110
- package/src/structures/VoiceChannelEffect.js +69 -0
- package/src/structures/VoiceRegion.js +53 -53
- package/src/structures/VoiceState.js +354 -341
- package/src/structures/WebEmbed.js +373 -373
- package/src/structures/Webhook.js +478 -467
- package/src/structures/WelcomeChannel.js +60 -60
- package/src/structures/WelcomeScreen.js +48 -48
- package/src/structures/Widget.js +87 -87
- package/src/structures/WidgetMember.js +99 -99
- package/src/structures/interfaces/Application.js +825 -313
- package/src/structures/interfaces/Collector.js +300 -300
- package/src/structures/interfaces/InteractionResponses.js +313 -313
- package/src/structures/interfaces/TextBasedChannel.js +759 -719
- package/src/util/APITypes.js +59 -0
- package/src/util/ActivityFlags.js +44 -44
- package/src/util/ApplicationFlags.js +76 -76
- package/src/util/AttachmentFlags.js +38 -38
- package/src/util/BitField.js +170 -170
- package/src/util/ChannelFlags.js +45 -45
- package/src/util/Constants.js +1914 -1773
- package/src/util/DataResolver.js +146 -145
- package/src/util/Formatters.js +228 -228
- package/src/util/GuildMemberFlags.js +43 -43
- package/src/util/Intents.js +74 -74
- package/src/util/InviteFlags.js +34 -29
- package/src/util/LimitedCollection.js +131 -131
- package/src/util/MessageFlags.js +63 -54
- package/src/util/Options.js +358 -336
- package/src/util/Permissions.js +202 -202
- package/src/util/PremiumUsageFlags.js +31 -31
- package/src/util/PurchasedFlags.js +33 -33
- package/src/util/RemoteAuth.js +382 -379
- package/src/util/RoleFlags.js +37 -37
- package/src/util/SnowflakeUtil.js +92 -92
- package/src/util/Speaking.js +33 -0
- package/src/util/Sweepers.js +466 -466
- package/src/util/SystemChannelFlags.js +55 -55
- package/src/util/ThreadMemberFlags.js +30 -30
- package/src/util/UserFlags.js +104 -104
- package/src/util/Util.js +1048 -889
- package/typings/enums.d.ts +439 -297
- package/typings/index.d.ts +8247 -7432
- package/typings/rawDataTypes.d.ts +403 -342
- package/src/structures/MessagePoll.js +0 -238
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const BaseGuildTextChannel = require('./BaseGuildTextChannel');
|
|
4
|
-
const { Error } = require('../errors');
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Represents a guild news channel on Discord.
|
|
8
|
-
* @extends {BaseGuildTextChannel}
|
|
9
|
-
*/
|
|
10
|
-
class NewsChannel extends BaseGuildTextChannel {
|
|
11
|
-
/**
|
|
12
|
-
* Adds the target to this channel's followers.
|
|
13
|
-
* <info>If you need the created webhook id, use {@link GuildChannelManager#addFollower}.</info>
|
|
14
|
-
* @param {TextChannelResolvable} channel The channel where the webhook should be created
|
|
15
|
-
* @param {string} [reason] Reason for creating the webhook
|
|
16
|
-
* @returns {Promise<NewsChannel>}
|
|
17
|
-
* @example
|
|
18
|
-
* if (channel.type === 'GUILD_NEWS') {
|
|
19
|
-
* channel.addFollower('222197033908436994', 'Important announcements')
|
|
20
|
-
* .then(() => console.log('Added follower'))
|
|
21
|
-
* .catch(console.error);
|
|
22
|
-
* }
|
|
23
|
-
*/
|
|
24
|
-
async addFollower(channel, reason) {
|
|
25
|
-
const channelId = this.guild.channels.resolveId(channel);
|
|
26
|
-
if (!channelId) throw new Error('GUILD_CHANNEL_RESOLVE');
|
|
27
|
-
await this.client.api.channels(this.id).followers.post({ data: { webhook_channel_id: channelId }, reason });
|
|
28
|
-
return this;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
module.exports = NewsChannel;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const BaseGuildTextChannel = require('./BaseGuildTextChannel');
|
|
4
|
+
const { Error } = require('../errors');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Represents a guild news channel on Discord.
|
|
8
|
+
* @extends {BaseGuildTextChannel}
|
|
9
|
+
*/
|
|
10
|
+
class NewsChannel extends BaseGuildTextChannel {
|
|
11
|
+
/**
|
|
12
|
+
* Adds the target to this channel's followers.
|
|
13
|
+
* <info>If you need the created webhook id, use {@link GuildChannelManager#addFollower}.</info>
|
|
14
|
+
* @param {TextChannelResolvable} channel The channel where the webhook should be created
|
|
15
|
+
* @param {string} [reason] Reason for creating the webhook
|
|
16
|
+
* @returns {Promise<NewsChannel>}
|
|
17
|
+
* @example
|
|
18
|
+
* if (channel.type === 'GUILD_NEWS') {
|
|
19
|
+
* channel.addFollower('222197033908436994', 'Important announcements')
|
|
20
|
+
* .then(() => console.log('Added follower'))
|
|
21
|
+
* .catch(console.error);
|
|
22
|
+
* }
|
|
23
|
+
*/
|
|
24
|
+
async addFollower(channel, reason) {
|
|
25
|
+
const channelId = this.guild.channels.resolveId(channel);
|
|
26
|
+
if (!channelId) throw new Error('GUILD_CHANNEL_RESOLVE');
|
|
27
|
+
await this.client.api.channels(this.id).followers.post({ data: { webhook_channel_id: channelId }, reason });
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
module.exports = NewsChannel;
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const BaseGuild = require('./BaseGuild');
|
|
4
|
-
const Permissions = require('../util/Permissions');
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* A partial guild received when using {@link GuildManager#fetch} to fetch multiple guilds.
|
|
8
|
-
* @extends {BaseGuild}
|
|
9
|
-
*/
|
|
10
|
-
class OAuth2Guild extends BaseGuild {
|
|
11
|
-
constructor(client, data) {
|
|
12
|
-
super(client, data);
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Whether the client user is the owner of the guild
|
|
16
|
-
* @type {boolean}
|
|
17
|
-
*/
|
|
18
|
-
this.owner = data.owner;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* The permissions that the client user has in this guild
|
|
22
|
-
* @type {Readonly<Permissions>}
|
|
23
|
-
*/
|
|
24
|
-
this.permissions = new Permissions(BigInt(data.permissions)).freeze();
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
module.exports = OAuth2Guild;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const BaseGuild = require('./BaseGuild');
|
|
4
|
+
const Permissions = require('../util/Permissions');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A partial guild received when using {@link GuildManager#fetch} to fetch multiple guilds.
|
|
8
|
+
* @extends {BaseGuild}
|
|
9
|
+
*/
|
|
10
|
+
class OAuth2Guild extends BaseGuild {
|
|
11
|
+
constructor(client, data) {
|
|
12
|
+
super(client, data);
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Whether the client user is the owner of the guild
|
|
16
|
+
* @type {boolean}
|
|
17
|
+
*/
|
|
18
|
+
this.owner = data.owner;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The permissions that the client user has in this guild
|
|
22
|
+
* @type {Readonly<Permissions>}
|
|
23
|
+
*/
|
|
24
|
+
this.permissions = new Permissions(BigInt(data.permissions)).freeze();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
module.exports = OAuth2Guild;
|
|
@@ -1,196 +1,198 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const Base = require('./Base');
|
|
4
|
-
const { Role } = require('./Role');
|
|
5
|
-
const { TypeError } = require('../errors');
|
|
6
|
-
const { OverwriteTypes } = require('../util/Constants');
|
|
7
|
-
const Permissions = require('../util/Permissions');
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Represents a permission overwrite for a role or member in a guild channel.
|
|
11
|
-
* @extends {Base}
|
|
12
|
-
*/
|
|
13
|
-
class PermissionOverwrites extends Base {
|
|
14
|
-
constructor(client, data, channel) {
|
|
15
|
-
super(client);
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* The GuildChannel this overwrite is for
|
|
19
|
-
* @name PermissionOverwrites#channel
|
|
20
|
-
* @type {GuildChannel}
|
|
21
|
-
* @readonly
|
|
22
|
-
*/
|
|
23
|
-
Object.defineProperty(this, 'channel', { value: channel });
|
|
24
|
-
|
|
25
|
-
if (data) this._patch(data);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
_patch(data) {
|
|
29
|
-
/**
|
|
30
|
-
* The overwrite's id, either a {@link User} or a {@link Role} id
|
|
31
|
-
* @type {Snowflake}
|
|
32
|
-
*/
|
|
33
|
-
this.id = data.id;
|
|
34
|
-
|
|
35
|
-
if ('type' in data) {
|
|
36
|
-
/**
|
|
37
|
-
* The type of this overwrite
|
|
38
|
-
* @type {OverwriteType}
|
|
39
|
-
*/
|
|
40
|
-
this.type = typeof data.type === 'number' ? OverwriteTypes[data.type] : data.type;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
if ('deny' in data) {
|
|
44
|
-
/**
|
|
45
|
-
* The permissions that are denied for the user or role.
|
|
46
|
-
* @type {Readonly<Permissions>}
|
|
47
|
-
*/
|
|
48
|
-
this.deny = new Permissions(BigInt(data.deny)).freeze();
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if ('allow' in data) {
|
|
52
|
-
/**
|
|
53
|
-
* The permissions that are allowed for the user or role.
|
|
54
|
-
* @type {Readonly<Permissions>}
|
|
55
|
-
*/
|
|
56
|
-
this.allow = new Permissions(BigInt(data.allow)).freeze();
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Edits this Permission Overwrite.
|
|
62
|
-
* @param {PermissionOverwriteOptions} options The options for the update
|
|
63
|
-
* @param {string} [reason] Reason for creating/editing this overwrite
|
|
64
|
-
* @returns {Promise<PermissionOverwrites>}
|
|
65
|
-
* @example
|
|
66
|
-
* // Update permission overwrites
|
|
67
|
-
* permissionOverwrites.edit({
|
|
68
|
-
* SEND_MESSAGES: false
|
|
69
|
-
* })
|
|
70
|
-
* .then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))
|
|
71
|
-
* .catch(console.error);
|
|
72
|
-
*/
|
|
73
|
-
async edit(options, reason) {
|
|
74
|
-
await this.channel.permissionOverwrites.upsert(this.id, options, { type: OverwriteTypes[this.type], reason }, this);
|
|
75
|
-
return this;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Deletes this Permission Overwrite.
|
|
80
|
-
* @param {string} [reason] Reason for deleting this overwrite
|
|
81
|
-
* @returns {Promise<PermissionOverwrites>}
|
|
82
|
-
*/
|
|
83
|
-
async delete(reason) {
|
|
84
|
-
await this.channel.permissionOverwrites.delete(this.id, reason);
|
|
85
|
-
return this;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
toJSON() {
|
|
89
|
-
return {
|
|
90
|
-
id: this.id,
|
|
91
|
-
type: OverwriteTypes[this.type],
|
|
92
|
-
allow: this.allow,
|
|
93
|
-
deny: this.deny,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* An object mapping permission flags to `true` (enabled), `null` (unset) or `false` (disabled).
|
|
99
|
-
* ```js
|
|
100
|
-
* {
|
|
101
|
-
* 'SEND_MESSAGES': true,
|
|
102
|
-
* 'EMBED_LINKS': null,
|
|
103
|
-
* 'ATTACH_FILES': false,
|
|
104
|
-
* }
|
|
105
|
-
* ```
|
|
106
|
-
* @typedef {Object} PermissionOverwriteOptions
|
|
107
|
-
*/
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* @typedef {Object} ResolvedOverwriteOptions
|
|
111
|
-
* @property {Permissions} allow The allowed permissions
|
|
112
|
-
* @property {Permissions} deny The denied permissions
|
|
113
|
-
*/
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* Resolves bitfield permissions overwrites from an object.
|
|
117
|
-
* @param {PermissionOverwriteOptions} options The options for the update
|
|
118
|
-
* @param {ResolvedOverwriteOptions} initialPermissions The initial permissions
|
|
119
|
-
* @returns {ResolvedOverwriteOptions}
|
|
120
|
-
*/
|
|
121
|
-
static resolveOverwriteOptions(options, { allow, deny } = {}) {
|
|
122
|
-
allow = new Permissions(allow);
|
|
123
|
-
deny = new Permissions(deny);
|
|
124
|
-
|
|
125
|
-
for (const [perm, value] of Object.entries(options)) {
|
|
126
|
-
if (value === true) {
|
|
127
|
-
allow.add(perm);
|
|
128
|
-
deny.remove(perm);
|
|
129
|
-
} else if (value === false) {
|
|
130
|
-
allow.remove(perm);
|
|
131
|
-
deny.add(perm);
|
|
132
|
-
} else if (value === null) {
|
|
133
|
-
allow.remove(perm);
|
|
134
|
-
deny.remove(perm);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
return { allow, deny };
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* The raw data for a permission overwrite
|
|
143
|
-
* @typedef {Object} RawOverwriteData
|
|
144
|
-
* @property {Snowflake} id The id of the {@link Role} or {@link User} this overwrite belongs to
|
|
145
|
-
* @property {string} allow The permissions to allow
|
|
146
|
-
* @property {string} deny The permissions to deny
|
|
147
|
-
* @property {number} type The type of this OverwriteData
|
|
148
|
-
*/
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Data that can be resolved into {@link RawOverwriteData}. This can be:
|
|
152
|
-
* * PermissionOverwrites
|
|
153
|
-
* * OverwriteData
|
|
154
|
-
* @typedef {PermissionOverwrites|OverwriteData} OverwriteResolvable
|
|
155
|
-
*/
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Data that can be used for a permission overwrite
|
|
159
|
-
* @typedef {Object} OverwriteData
|
|
160
|
-
* @property {GuildMemberResolvable|RoleResolvable} id Member or role this overwrite is for
|
|
161
|
-
* @property {PermissionResolvable} [allow] The permissions to allow
|
|
162
|
-
* @property {PermissionResolvable} [deny] The permissions to deny
|
|
163
|
-
* @property {OverwriteType} [type] The type of this OverwriteData
|
|
164
|
-
*/
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* Resolves an overwrite into {@link RawOverwriteData}.
|
|
168
|
-
* @param {OverwriteResolvable} overwrite The overwrite-like data to resolve
|
|
169
|
-
* @param {Guild} [guild] The guild to resolve from
|
|
170
|
-
* @returns {RawOverwriteData}
|
|
171
|
-
*/
|
|
172
|
-
static resolve(overwrite, guild) {
|
|
173
|
-
if (overwrite instanceof this) return overwrite.toJSON();
|
|
174
|
-
if (typeof overwrite.id === 'string' && overwrite.type in OverwriteTypes) {
|
|
175
|
-
return {
|
|
176
|
-
id: overwrite.id,
|
|
177
|
-
type: OverwriteTypes[overwrite.type],
|
|
178
|
-
allow: Permissions.resolve(overwrite.allow ?? Permissions.defaultBit).toString(),
|
|
179
|
-
deny: Permissions.resolve(overwrite.deny ?? Permissions.defaultBit).toString(),
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
const userOrRole = guild.roles.resolve(overwrite.id) ?? guild.client.users.resolve(overwrite.id);
|
|
184
|
-
if (!userOrRole)
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const Base = require('./Base');
|
|
4
|
+
const { Role } = require('./Role');
|
|
5
|
+
const { TypeError } = require('../errors');
|
|
6
|
+
const { OverwriteTypes } = require('../util/Constants');
|
|
7
|
+
const Permissions = require('../util/Permissions');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Represents a permission overwrite for a role or member in a guild channel.
|
|
11
|
+
* @extends {Base}
|
|
12
|
+
*/
|
|
13
|
+
class PermissionOverwrites extends Base {
|
|
14
|
+
constructor(client, data, channel) {
|
|
15
|
+
super(client);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The GuildChannel this overwrite is for
|
|
19
|
+
* @name PermissionOverwrites#channel
|
|
20
|
+
* @type {GuildChannel}
|
|
21
|
+
* @readonly
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(this, 'channel', { value: channel });
|
|
24
|
+
|
|
25
|
+
if (data) this._patch(data);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
_patch(data) {
|
|
29
|
+
/**
|
|
30
|
+
* The overwrite's id, either a {@link User} or a {@link Role} id
|
|
31
|
+
* @type {Snowflake}
|
|
32
|
+
*/
|
|
33
|
+
this.id = data.id;
|
|
34
|
+
|
|
35
|
+
if ('type' in data) {
|
|
36
|
+
/**
|
|
37
|
+
* The type of this overwrite
|
|
38
|
+
* @type {OverwriteType}
|
|
39
|
+
*/
|
|
40
|
+
this.type = typeof data.type === 'number' ? OverwriteTypes[data.type] : data.type;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if ('deny' in data) {
|
|
44
|
+
/**
|
|
45
|
+
* The permissions that are denied for the user or role.
|
|
46
|
+
* @type {Readonly<Permissions>}
|
|
47
|
+
*/
|
|
48
|
+
this.deny = new Permissions(BigInt(data.deny)).freeze();
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if ('allow' in data) {
|
|
52
|
+
/**
|
|
53
|
+
* The permissions that are allowed for the user or role.
|
|
54
|
+
* @type {Readonly<Permissions>}
|
|
55
|
+
*/
|
|
56
|
+
this.allow = new Permissions(BigInt(data.allow)).freeze();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Edits this Permission Overwrite.
|
|
62
|
+
* @param {PermissionOverwriteOptions} options The options for the update
|
|
63
|
+
* @param {string} [reason] Reason for creating/editing this overwrite
|
|
64
|
+
* @returns {Promise<PermissionOverwrites>}
|
|
65
|
+
* @example
|
|
66
|
+
* // Update permission overwrites
|
|
67
|
+
* permissionOverwrites.edit({
|
|
68
|
+
* SEND_MESSAGES: false
|
|
69
|
+
* })
|
|
70
|
+
* .then(channel => console.log(channel.permissionOverwrites.get(message.author.id)))
|
|
71
|
+
* .catch(console.error);
|
|
72
|
+
*/
|
|
73
|
+
async edit(options, reason) {
|
|
74
|
+
await this.channel.permissionOverwrites.upsert(this.id, options, { type: OverwriteTypes[this.type], reason }, this);
|
|
75
|
+
return this;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Deletes this Permission Overwrite.
|
|
80
|
+
* @param {string} [reason] Reason for deleting this overwrite
|
|
81
|
+
* @returns {Promise<PermissionOverwrites>}
|
|
82
|
+
*/
|
|
83
|
+
async delete(reason) {
|
|
84
|
+
await this.channel.permissionOverwrites.delete(this.id, reason);
|
|
85
|
+
return this;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
toJSON() {
|
|
89
|
+
return {
|
|
90
|
+
id: this.id,
|
|
91
|
+
type: OverwriteTypes[this.type],
|
|
92
|
+
allow: this.allow,
|
|
93
|
+
deny: this.deny,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* An object mapping permission flags to `true` (enabled), `null` (unset) or `false` (disabled).
|
|
99
|
+
* ```js
|
|
100
|
+
* {
|
|
101
|
+
* 'SEND_MESSAGES': true,
|
|
102
|
+
* 'EMBED_LINKS': null,
|
|
103
|
+
* 'ATTACH_FILES': false,
|
|
104
|
+
* }
|
|
105
|
+
* ```
|
|
106
|
+
* @typedef {Object} PermissionOverwriteOptions
|
|
107
|
+
*/
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* @typedef {Object} ResolvedOverwriteOptions
|
|
111
|
+
* @property {Permissions} allow The allowed permissions
|
|
112
|
+
* @property {Permissions} deny The denied permissions
|
|
113
|
+
*/
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Resolves bitfield permissions overwrites from an object.
|
|
117
|
+
* @param {PermissionOverwriteOptions} options The options for the update
|
|
118
|
+
* @param {ResolvedOverwriteOptions} initialPermissions The initial permissions
|
|
119
|
+
* @returns {ResolvedOverwriteOptions}
|
|
120
|
+
*/
|
|
121
|
+
static resolveOverwriteOptions(options, { allow, deny } = {}) {
|
|
122
|
+
allow = new Permissions(allow);
|
|
123
|
+
deny = new Permissions(deny);
|
|
124
|
+
|
|
125
|
+
for (const [perm, value] of Object.entries(options)) {
|
|
126
|
+
if (value === true) {
|
|
127
|
+
allow.add(perm);
|
|
128
|
+
deny.remove(perm);
|
|
129
|
+
} else if (value === false) {
|
|
130
|
+
allow.remove(perm);
|
|
131
|
+
deny.add(perm);
|
|
132
|
+
} else if (value === null) {
|
|
133
|
+
allow.remove(perm);
|
|
134
|
+
deny.remove(perm);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return { allow, deny };
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* The raw data for a permission overwrite
|
|
143
|
+
* @typedef {Object} RawOverwriteData
|
|
144
|
+
* @property {Snowflake} id The id of the {@link Role} or {@link User} this overwrite belongs to
|
|
145
|
+
* @property {string} allow The permissions to allow
|
|
146
|
+
* @property {string} deny The permissions to deny
|
|
147
|
+
* @property {number} type The type of this OverwriteData
|
|
148
|
+
*/
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Data that can be resolved into {@link RawOverwriteData}. This can be:
|
|
152
|
+
* * PermissionOverwrites
|
|
153
|
+
* * OverwriteData
|
|
154
|
+
* @typedef {PermissionOverwrites|OverwriteData} OverwriteResolvable
|
|
155
|
+
*/
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Data that can be used for a permission overwrite
|
|
159
|
+
* @typedef {Object} OverwriteData
|
|
160
|
+
* @property {GuildMemberResolvable|RoleResolvable} id Member or role this overwrite is for
|
|
161
|
+
* @property {PermissionResolvable} [allow] The permissions to allow
|
|
162
|
+
* @property {PermissionResolvable} [deny] The permissions to deny
|
|
163
|
+
* @property {OverwriteType} [type] The type of this OverwriteData
|
|
164
|
+
*/
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Resolves an overwrite into {@link RawOverwriteData}.
|
|
168
|
+
* @param {OverwriteResolvable} overwrite The overwrite-like data to resolve
|
|
169
|
+
* @param {Guild} [guild] The guild to resolve from
|
|
170
|
+
* @returns {RawOverwriteData}
|
|
171
|
+
*/
|
|
172
|
+
static resolve(overwrite, guild) {
|
|
173
|
+
if (overwrite instanceof this) return overwrite.toJSON();
|
|
174
|
+
if (typeof overwrite.id === 'string' && overwrite.type in OverwriteTypes) {
|
|
175
|
+
return {
|
|
176
|
+
id: overwrite.id,
|
|
177
|
+
type: OverwriteTypes[overwrite.type],
|
|
178
|
+
allow: Permissions.resolve(overwrite.allow ?? Permissions.defaultBit).toString(),
|
|
179
|
+
deny: Permissions.resolve(overwrite.deny ?? Permissions.defaultBit).toString(),
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
const userOrRole = guild.roles.resolve(overwrite.id) ?? guild.client.users.resolve(overwrite.id);
|
|
184
|
+
if (!userOrRole) {
|
|
185
|
+
throw new TypeError('INVALID_TYPE', 'parameter', 'cached User or Role');
|
|
186
|
+
}
|
|
187
|
+
const type = userOrRole instanceof Role ? OverwriteTypes.role : OverwriteTypes.member;
|
|
188
|
+
|
|
189
|
+
return {
|
|
190
|
+
id: userOrRole.id,
|
|
191
|
+
type,
|
|
192
|
+
allow: Permissions.resolve(overwrite.allow ?? Permissions.defaultBit).toString(),
|
|
193
|
+
deny: Permissions.resolve(overwrite.deny ?? Permissions.defaultBit).toString(),
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
module.exports = PermissionOverwrites;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { Collection } = require('@discordjs/collection');
|
|
4
|
+
const Base = require('./Base');
|
|
5
|
+
const { PollAnswer } = require('./PollAnswer');
|
|
6
|
+
const { Error } = require('../errors');
|
|
7
|
+
const { PollLayoutTypes } = require('../util/Constants');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Represents a Poll
|
|
11
|
+
* @extends {Base}
|
|
12
|
+
*/
|
|
13
|
+
class Poll extends Base {
|
|
14
|
+
constructor(client, data, message) {
|
|
15
|
+
super(client);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The message that started this poll
|
|
19
|
+
* @name Poll#message
|
|
20
|
+
* @type {Message}
|
|
21
|
+
* @readonly
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
Object.defineProperty(this, 'message', { value: message });
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The media for a poll's question
|
|
28
|
+
* @typedef {Object} PollQuestionMedia
|
|
29
|
+
* @property {string} text The text of this question
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The media for this poll's question
|
|
34
|
+
* @type {PollQuestionMedia}
|
|
35
|
+
*/
|
|
36
|
+
this.question = {
|
|
37
|
+
text: data.question.text,
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The answers of this poll
|
|
42
|
+
* @type {Collection<number, PollAnswer>}
|
|
43
|
+
*/
|
|
44
|
+
this.answers = data.answers.reduce(
|
|
45
|
+
(acc, answer) => acc.set(answer.answer_id, new PollAnswer(this.client, answer, this)),
|
|
46
|
+
new Collection(),
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The timestamp when this poll expires
|
|
51
|
+
* @type {number}
|
|
52
|
+
*/
|
|
53
|
+
this.expiresTimestamp = Date.parse(data.expiry);
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Whether this poll allows multiple answers
|
|
57
|
+
* @type {boolean}
|
|
58
|
+
*/
|
|
59
|
+
this.allowMultiselect = data.allow_multiselect;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* The layout type of this poll
|
|
63
|
+
* @type {PollLayoutType}
|
|
64
|
+
*/
|
|
65
|
+
this.layoutType = PollLayoutTypes[data.layout_type];
|
|
66
|
+
|
|
67
|
+
this._patch(data);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
_patch(data) {
|
|
71
|
+
if (data.results) {
|
|
72
|
+
/**
|
|
73
|
+
* Whether this poll's results have been precisely counted
|
|
74
|
+
* @type {boolean}
|
|
75
|
+
*/
|
|
76
|
+
this.resultsFinalized = data.results.is_finalized;
|
|
77
|
+
|
|
78
|
+
for (const answerResult of data.results.answer_counts) {
|
|
79
|
+
const answer = this.answers.get(answerResult.id);
|
|
80
|
+
answer?._patch(answerResult);
|
|
81
|
+
}
|
|
82
|
+
} else {
|
|
83
|
+
this.resultsFinalized ??= false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* The date when this poll expires
|
|
89
|
+
* @type {Date}
|
|
90
|
+
* @readonly
|
|
91
|
+
*/
|
|
92
|
+
get expiresAt() {
|
|
93
|
+
return new Date(this.expiresTimestamp);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Ends this poll.
|
|
98
|
+
* @returns {Promise<Message>}
|
|
99
|
+
*/
|
|
100
|
+
async end() {
|
|
101
|
+
if (Date.now() > this.expiresTimestamp) {
|
|
102
|
+
throw new Error('POLL_ALREADY_EXPIRED');
|
|
103
|
+
}
|
|
104
|
+
return this.message.channel.messages.endPoll(this.message.id);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
module.exports = { Poll };
|