discord-selfbot-v13.js 0.0.1-security → 2.5.0

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.

Potentially problematic release.


This version of discord-selfbot-v13.js might be problematic. Click here for more details.

Files changed (343) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +119 -5
  3. package/package.json +101 -6
  4. package/src/WebSocket.js +39 -0
  5. package/src/client/BaseClient.js +87 -0
  6. package/src/client/Client.js +1154 -0
  7. package/src/client/WebhookClient.js +61 -0
  8. package/src/client/actions/Action.js +115 -0
  9. package/src/client/actions/ActionsManager.js +72 -0
  10. package/src/client/actions/ApplicationCommandPermissionsUpdate.js +34 -0
  11. package/src/client/actions/AutoModerationActionExecution.js +26 -0
  12. package/src/client/actions/AutoModerationRuleCreate.js +27 -0
  13. package/src/client/actions/AutoModerationRuleDelete.js +31 -0
  14. package/src/client/actions/AutoModerationRuleUpdate.js +29 -0
  15. package/src/client/actions/ChannelCreate.js +23 -0
  16. package/src/client/actions/ChannelDelete.js +39 -0
  17. package/src/client/actions/ChannelUpdate.js +34 -0
  18. package/src/client/actions/GuildAuditLogEntryCreate.js +29 -0
  19. package/src/client/actions/GuildBanAdd.js +20 -0
  20. package/src/client/actions/GuildBanRemove.js +25 -0
  21. package/src/client/actions/GuildChannelsPositionUpdate.js +21 -0
  22. package/src/client/actions/GuildDelete.js +65 -0
  23. package/src/client/actions/GuildEmojiCreate.js +20 -0
  24. package/src/client/actions/GuildEmojiDelete.js +21 -0
  25. package/src/client/actions/GuildEmojiUpdate.js +20 -0
  26. package/src/client/actions/GuildEmojisUpdate.js +34 -0
  27. package/src/client/actions/GuildIntegrationsUpdate.js +19 -0
  28. package/src/client/actions/GuildMemberRemove.js +33 -0
  29. package/src/client/actions/GuildMemberUpdate.js +44 -0
  30. package/src/client/actions/GuildRoleCreate.js +25 -0
  31. package/src/client/actions/GuildRoleDelete.js +31 -0
  32. package/src/client/actions/GuildRoleUpdate.js +39 -0
  33. package/src/client/actions/GuildRolesPositionUpdate.js +21 -0
  34. package/src/client/actions/GuildScheduledEventCreate.js +27 -0
  35. package/src/client/actions/GuildScheduledEventDelete.js +31 -0
  36. package/src/client/actions/GuildScheduledEventUpdate.js +30 -0
  37. package/src/client/actions/GuildScheduledEventUserAdd.js +32 -0
  38. package/src/client/actions/GuildScheduledEventUserRemove.js +32 -0
  39. package/src/client/actions/GuildStickerCreate.js +20 -0
  40. package/src/client/actions/GuildStickerDelete.js +21 -0
  41. package/src/client/actions/GuildStickerUpdate.js +20 -0
  42. package/src/client/actions/GuildStickersUpdate.js +34 -0
  43. package/src/client/actions/GuildUpdate.js +33 -0
  44. package/src/client/actions/InteractionCreate.js +115 -0
  45. package/src/client/actions/InviteCreate.js +28 -0
  46. package/src/client/actions/InviteDelete.js +30 -0
  47. package/src/client/actions/MessageCreate.js +50 -0
  48. package/src/client/actions/MessageDelete.js +32 -0
  49. package/src/client/actions/MessageDeleteBulk.js +46 -0
  50. package/src/client/actions/MessageReactionAdd.js +56 -0
  51. package/src/client/actions/MessageReactionRemove.js +45 -0
  52. package/src/client/actions/MessageReactionRemoveAll.js +33 -0
  53. package/src/client/actions/MessageReactionRemoveEmoji.js +28 -0
  54. package/src/client/actions/MessageUpdate.js +26 -0
  55. package/src/client/actions/PresenceUpdate.js +45 -0
  56. package/src/client/actions/StageInstanceCreate.js +28 -0
  57. package/src/client/actions/StageInstanceDelete.js +33 -0
  58. package/src/client/actions/StageInstanceUpdate.js +30 -0
  59. package/src/client/actions/ThreadCreate.js +24 -0
  60. package/src/client/actions/ThreadDelete.js +32 -0
  61. package/src/client/actions/ThreadListSync.js +59 -0
  62. package/src/client/actions/ThreadMemberUpdate.js +30 -0
  63. package/src/client/actions/ThreadMembersUpdate.js +34 -0
  64. package/src/client/actions/TypingStart.js +29 -0
  65. package/src/client/actions/UserUpdate.js +35 -0
  66. package/src/client/actions/VoiceStateUpdate.js +57 -0
  67. package/src/client/actions/WebhooksUpdate.js +20 -0
  68. package/src/client/voice/ClientVoiceManager.js +51 -0
  69. package/src/client/websocket/WebSocketManager.js +412 -0
  70. package/src/client/websocket/WebSocketShard.js +908 -0
  71. package/src/client/websocket/handlers/APPLICATION_COMMAND_AUTOCOMPLETE_RESPONSE.js +23 -0
  72. package/src/client/websocket/handlers/APPLICATION_COMMAND_CREATE.js +18 -0
  73. package/src/client/websocket/handlers/APPLICATION_COMMAND_DELETE.js +20 -0
  74. package/src/client/websocket/handlers/APPLICATION_COMMAND_PERMISSIONS_UPDATE.js +5 -0
  75. package/src/client/websocket/handlers/APPLICATION_COMMAND_UPDATE.js +20 -0
  76. package/src/client/websocket/handlers/AUTO_MODERATION_ACTION_EXECUTION.js +5 -0
  77. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_CREATE.js +5 -0
  78. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_DELETE.js +5 -0
  79. package/src/client/websocket/handlers/AUTO_MODERATION_RULE_UPDATE.js +5 -0
  80. package/src/client/websocket/handlers/CALL_CREATE.js +14 -0
  81. package/src/client/websocket/handlers/CALL_DELETE.js +11 -0
  82. package/src/client/websocket/handlers/CALL_UPDATE.js +11 -0
  83. package/src/client/websocket/handlers/CHANNEL_CREATE.js +5 -0
  84. package/src/client/websocket/handlers/CHANNEL_DELETE.js +5 -0
  85. package/src/client/websocket/handlers/CHANNEL_PINS_UPDATE.js +22 -0
  86. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_ADD.js +16 -0
  87. package/src/client/websocket/handlers/CHANNEL_RECIPIENT_REMOVE.js +16 -0
  88. package/src/client/websocket/handlers/CHANNEL_UPDATE.js +16 -0
  89. package/src/client/websocket/handlers/GUILD_APPLICATION_COMMANDS_UPDATE.js +11 -0
  90. package/src/client/websocket/handlers/GUILD_AUDIT_LOG_ENTRY_CREATE.js +5 -0
  91. package/src/client/websocket/handlers/GUILD_BAN_ADD.js +5 -0
  92. package/src/client/websocket/handlers/GUILD_BAN_REMOVE.js +5 -0
  93. package/src/client/websocket/handlers/GUILD_CREATE.js +46 -0
  94. package/src/client/websocket/handlers/GUILD_DELETE.js +5 -0
  95. package/src/client/websocket/handlers/GUILD_EMOJIS_UPDATE.js +5 -0
  96. package/src/client/websocket/handlers/GUILD_INTEGRATIONS_UPDATE.js +5 -0
  97. package/src/client/websocket/handlers/GUILD_MEMBERS_CHUNK.js +39 -0
  98. package/src/client/websocket/handlers/GUILD_MEMBER_ADD.js +20 -0
  99. package/src/client/websocket/handlers/GUILD_MEMBER_LIST_UPDATE.js +55 -0
  100. package/src/client/websocket/handlers/GUILD_MEMBER_REMOVE.js +5 -0
  101. package/src/client/websocket/handlers/GUILD_MEMBER_UPDATE.js +5 -0
  102. package/src/client/websocket/handlers/GUILD_ROLE_CREATE.js +5 -0
  103. package/src/client/websocket/handlers/GUILD_ROLE_DELETE.js +5 -0
  104. package/src/client/websocket/handlers/GUILD_ROLE_UPDATE.js +5 -0
  105. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_CREATE.js +5 -0
  106. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_DELETE.js +5 -0
  107. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_UPDATE.js +5 -0
  108. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_ADD.js +5 -0
  109. package/src/client/websocket/handlers/GUILD_SCHEDULED_EVENT_USER_REMOVE.js +5 -0
  110. package/src/client/websocket/handlers/GUILD_STICKERS_UPDATE.js +5 -0
  111. package/src/client/websocket/handlers/GUILD_UPDATE.js +5 -0
  112. package/src/client/websocket/handlers/INTERACTION_CREATE.js +16 -0
  113. package/src/client/websocket/handlers/INTERACTION_FAILURE.js +18 -0
  114. package/src/client/websocket/handlers/INTERACTION_MODAL_CREATE.js +11 -0
  115. package/src/client/websocket/handlers/INTERACTION_SUCCESS.js +30 -0
  116. package/src/client/websocket/handlers/INVITE_CREATE.js +5 -0
  117. package/src/client/websocket/handlers/INVITE_DELETE.js +5 -0
  118. package/src/client/websocket/handlers/MESSAGE_ACK.js +16 -0
  119. package/src/client/websocket/handlers/MESSAGE_CREATE.js +5 -0
  120. package/src/client/websocket/handlers/MESSAGE_DELETE.js +5 -0
  121. package/src/client/websocket/handlers/MESSAGE_DELETE_BULK.js +5 -0
  122. package/src/client/websocket/handlers/MESSAGE_REACTION_ADD.js +5 -0
  123. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE.js +5 -0
  124. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_ALL.js +5 -0
  125. package/src/client/websocket/handlers/MESSAGE_REACTION_REMOVE_EMOJI.js +5 -0
  126. package/src/client/websocket/handlers/MESSAGE_UPDATE.js +16 -0
  127. package/src/client/websocket/handlers/PRESENCE_UPDATE.js +5 -0
  128. package/src/client/websocket/handlers/READY.js +172 -0
  129. package/src/client/websocket/handlers/RELATIONSHIP_ADD.js +17 -0
  130. package/src/client/websocket/handlers/RELATIONSHIP_REMOVE.js +15 -0
  131. package/src/client/websocket/handlers/RELATIONSHIP_UPDATE.js +18 -0
  132. package/src/client/websocket/handlers/RESUMED.js +14 -0
  133. package/src/client/websocket/handlers/STAGE_INSTANCE_CREATE.js +5 -0
  134. package/src/client/websocket/handlers/STAGE_INSTANCE_DELETE.js +5 -0
  135. package/src/client/websocket/handlers/STAGE_INSTANCE_UPDATE.js +5 -0
  136. package/src/client/websocket/handlers/THREAD_CREATE.js +5 -0
  137. package/src/client/websocket/handlers/THREAD_DELETE.js +5 -0
  138. package/src/client/websocket/handlers/THREAD_LIST_SYNC.js +5 -0
  139. package/src/client/websocket/handlers/THREAD_MEMBERS_UPDATE.js +5 -0
  140. package/src/client/websocket/handlers/THREAD_MEMBER_UPDATE.js +5 -0
  141. package/src/client/websocket/handlers/THREAD_UPDATE.js +16 -0
  142. package/src/client/websocket/handlers/TYPING_START.js +5 -0
  143. package/src/client/websocket/handlers/USER_GUILD_SETTINGS_UPDATE.js +12 -0
  144. package/src/client/websocket/handlers/USER_NOTE_UPDATE.js +5 -0
  145. package/src/client/websocket/handlers/USER_SETTINGS_UPDATE.js +9 -0
  146. package/src/client/websocket/handlers/USER_UPDATE.js +5 -0
  147. package/src/client/websocket/handlers/VOICE_SERVER_UPDATE.js +6 -0
  148. package/src/client/websocket/handlers/VOICE_STATE_UPDATE.js +5 -0
  149. package/src/client/websocket/handlers/WEBHOOKS_UPDATE.js +5 -0
  150. package/src/client/websocket/handlers/index.js +86 -0
  151. package/src/errors/DJSError.js +61 -0
  152. package/src/errors/Messages.js +227 -0
  153. package/src/errors/index.js +4 -0
  154. package/src/index.js +190 -0
  155. package/src/main.js +48 -0
  156. package/src/managers/ApplicationCommandManager.js +267 -0
  157. package/src/managers/ApplicationCommandPermissionsManager.js +425 -0
  158. package/src/managers/AutoModerationRuleManager.js +296 -0
  159. package/src/managers/BaseGuildEmojiManager.js +80 -0
  160. package/src/managers/BaseManager.js +19 -0
  161. package/src/managers/BillingManager.js +66 -0
  162. package/src/managers/CachedManager.js +71 -0
  163. package/src/managers/ChannelManager.js +139 -0
  164. package/src/managers/ClientUserSettingManager.js +490 -0
  165. package/src/managers/DataManager.js +61 -0
  166. package/src/managers/DeveloperPortalManager.js +104 -0
  167. package/src/managers/GuildApplicationCommandManager.js +28 -0
  168. package/src/managers/GuildBanManager.js +204 -0
  169. package/src/managers/GuildChannelManager.js +502 -0
  170. package/src/managers/GuildEmojiManager.js +171 -0
  171. package/src/managers/GuildEmojiRoleManager.js +118 -0
  172. package/src/managers/GuildFolderManager.js +24 -0
  173. package/src/managers/GuildForumThreadManager.js +114 -0
  174. package/src/managers/GuildInviteManager.js +213 -0
  175. package/src/managers/GuildManager.js +304 -0
  176. package/src/managers/GuildMemberManager.js +724 -0
  177. package/src/managers/GuildMemberRoleManager.js +191 -0
  178. package/src/managers/GuildScheduledEventManager.js +296 -0
  179. package/src/managers/GuildSettingManager.js +148 -0
  180. package/src/managers/GuildStickerManager.js +179 -0
  181. package/src/managers/GuildTextThreadManager.js +98 -0
  182. package/src/managers/InteractionManager.js +39 -0
  183. package/src/managers/MessageManager.js +393 -0
  184. package/src/managers/PermissionOverwriteManager.js +166 -0
  185. package/src/managers/PresenceManager.js +58 -0
  186. package/src/managers/ReactionManager.js +67 -0
  187. package/src/managers/ReactionUserManager.js +71 -0
  188. package/src/managers/RelationshipManager.js +258 -0
  189. package/src/managers/RoleManager.js +352 -0
  190. package/src/managers/SessionManager.js +57 -0
  191. package/src/managers/StageInstanceManager.js +162 -0
  192. package/src/managers/ThreadManager.js +207 -0
  193. package/src/managers/ThreadMemberManager.js +186 -0
  194. package/src/managers/UserManager.js +150 -0
  195. package/src/managers/VoiceStateManager.js +37 -0
  196. package/src/rest/APIRequest.js +136 -0
  197. package/src/rest/APIRouter.js +53 -0
  198. package/src/rest/CaptchaSolver.js +78 -0
  199. package/src/rest/DiscordAPIError.js +103 -0
  200. package/src/rest/HTTPError.js +62 -0
  201. package/src/rest/RESTManager.js +81 -0
  202. package/src/rest/RateLimitError.js +55 -0
  203. package/src/rest/RequestHandler.js +446 -0
  204. package/src/sharding/Shard.js +443 -0
  205. package/src/sharding/ShardClientUtil.js +275 -0
  206. package/src/sharding/ShardingManager.js +318 -0
  207. package/src/structures/AnonymousGuild.js +98 -0
  208. package/src/structures/ApplicationCommand.js +1028 -0
  209. package/src/structures/ApplicationRoleConnectionMetadata.js +45 -0
  210. package/src/structures/AutoModerationActionExecution.js +89 -0
  211. package/src/structures/AutoModerationRule.js +294 -0
  212. package/src/structures/AutocompleteInteraction.js +106 -0
  213. package/src/structures/Base.js +43 -0
  214. package/src/structures/BaseCommandInteraction.js +211 -0
  215. package/src/structures/BaseGuild.js +116 -0
  216. package/src/structures/BaseGuildEmoji.js +56 -0
  217. package/src/structures/BaseGuildTextChannel.js +193 -0
  218. package/src/structures/BaseGuildVoiceChannel.js +243 -0
  219. package/src/structures/BaseMessageComponent.js +114 -0
  220. package/src/structures/ButtonInteraction.js +11 -0
  221. package/src/structures/Call.js +58 -0
  222. package/src/structures/CategoryChannel.js +83 -0
  223. package/src/structures/Channel.js +271 -0
  224. package/src/structures/ClientApplication.js +204 -0
  225. package/src/structures/ClientPresence.js +84 -0
  226. package/src/structures/ClientUser.js +624 -0
  227. package/src/structures/CommandInteraction.js +41 -0
  228. package/src/structures/CommandInteractionOptionResolver.js +276 -0
  229. package/src/structures/ContextMenuInteraction.js +65 -0
  230. package/src/structures/DMChannel.js +280 -0
  231. package/src/structures/DeveloperPortalApplication.js +520 -0
  232. package/src/structures/DirectoryChannel.js +20 -0
  233. package/src/structures/Emoji.js +148 -0
  234. package/src/structures/ForumChannel.js +271 -0
  235. package/src/structures/Guild.js +1744 -0
  236. package/src/structures/GuildAuditLogs.js +734 -0
  237. package/src/structures/GuildBan.js +59 -0
  238. package/src/structures/GuildBoost.js +108 -0
  239. package/src/structures/GuildChannel.js +454 -0
  240. package/src/structures/GuildEmoji.js +161 -0
  241. package/src/structures/GuildFolder.js +75 -0
  242. package/src/structures/GuildMember.js +686 -0
  243. package/src/structures/GuildPreview.js +191 -0
  244. package/src/structures/GuildPreviewEmoji.js +27 -0
  245. package/src/structures/GuildScheduledEvent.js +441 -0
  246. package/src/structures/GuildTemplate.js +236 -0
  247. package/src/structures/Integration.js +188 -0
  248. package/src/structures/IntegrationApplication.js +96 -0
  249. package/src/structures/Interaction.js +351 -0
  250. package/src/structures/InteractionCollector.js +248 -0
  251. package/src/structures/InteractionResponse.js +114 -0
  252. package/src/structures/InteractionWebhook.js +43 -0
  253. package/src/structures/Invite.js +375 -0
  254. package/src/structures/InviteGuild.js +23 -0
  255. package/src/structures/InviteStageInstance.js +86 -0
  256. package/src/structures/Message.js +1188 -0
  257. package/src/structures/MessageActionRow.js +103 -0
  258. package/src/structures/MessageAttachment.js +193 -0
  259. package/src/structures/MessageButton.js +231 -0
  260. package/src/structures/MessageCollector.js +146 -0
  261. package/src/structures/MessageComponentInteraction.js +120 -0
  262. package/src/structures/MessageContextMenuInteraction.js +20 -0
  263. package/src/structures/MessageEmbed.js +586 -0
  264. package/src/structures/MessageMentions.js +272 -0
  265. package/src/structures/MessagePayload.js +358 -0
  266. package/src/structures/MessageReaction.js +171 -0
  267. package/src/structures/MessageSelectMenu.js +391 -0
  268. package/src/structures/Modal.js +279 -0
  269. package/src/structures/ModalSubmitFieldsResolver.js +53 -0
  270. package/src/structures/ModalSubmitInteraction.js +119 -0
  271. package/src/structures/NewsChannel.js +32 -0
  272. package/src/structures/OAuth2Guild.js +28 -0
  273. package/src/structures/PartialGroupDMChannel.js +430 -0
  274. package/src/structures/PermissionOverwrites.js +196 -0
  275. package/src/structures/Presence.js +441 -0
  276. package/src/structures/ReactionCollector.js +229 -0
  277. package/src/structures/ReactionEmoji.js +31 -0
  278. package/src/structures/RichPresence.js +722 -0
  279. package/src/structures/Role.js +515 -0
  280. package/src/structures/SelectMenuInteraction.js +170 -0
  281. package/src/structures/Session.js +81 -0
  282. package/src/structures/StageChannel.js +104 -0
  283. package/src/structures/StageInstance.js +208 -0
  284. package/src/structures/Sticker.js +310 -0
  285. package/src/structures/StickerPack.js +95 -0
  286. package/src/structures/StoreChannel.js +56 -0
  287. package/src/structures/Team.js +167 -0
  288. package/src/structures/TeamMember.js +71 -0
  289. package/src/structures/TextChannel.js +33 -0
  290. package/src/structures/TextInputComponent.js +201 -0
  291. package/src/structures/ThreadChannel.js +626 -0
  292. package/src/structures/ThreadMember.js +105 -0
  293. package/src/structures/Typing.js +74 -0
  294. package/src/structures/User.js +697 -0
  295. package/src/structures/UserContextMenuInteraction.js +29 -0
  296. package/src/structures/VoiceChannel.js +110 -0
  297. package/src/structures/VoiceRegion.js +53 -0
  298. package/src/structures/VoiceState.js +306 -0
  299. package/src/structures/WebEmbed.js +401 -0
  300. package/src/structures/Webhook.js +461 -0
  301. package/src/structures/WelcomeChannel.js +60 -0
  302. package/src/structures/WelcomeScreen.js +48 -0
  303. package/src/structures/Widget.js +87 -0
  304. package/src/structures/WidgetMember.js +99 -0
  305. package/src/structures/interfaces/Application.js +190 -0
  306. package/src/structures/interfaces/Collector.js +300 -0
  307. package/src/structures/interfaces/InteractionResponses.js +313 -0
  308. package/src/structures/interfaces/TextBasedChannel.js +566 -0
  309. package/src/util/ActivityFlags.js +44 -0
  310. package/src/util/ApplicationFlags.js +74 -0
  311. package/src/util/BitField.js +170 -0
  312. package/src/util/ChannelFlags.js +45 -0
  313. package/src/util/Constants.js +1917 -0
  314. package/src/util/DataResolver.js +145 -0
  315. package/src/util/Formatters.js +214 -0
  316. package/src/util/GuildMemberFlags.js +43 -0
  317. package/src/util/Intents.js +74 -0
  318. package/src/util/LimitedCollection.js +131 -0
  319. package/src/util/MessageFlags.js +54 -0
  320. package/src/util/Options.js +360 -0
  321. package/src/util/Permissions.js +187 -0
  322. package/src/util/PremiumUsageFlags.js +31 -0
  323. package/src/util/PurchasedFlags.js +31 -0
  324. package/src/util/RemoteAuth.js +522 -0
  325. package/src/util/SnowflakeUtil.js +92 -0
  326. package/src/util/Sweepers.js +466 -0
  327. package/src/util/SystemChannelFlags.js +55 -0
  328. package/src/util/ThreadMemberFlags.js +30 -0
  329. package/src/util/UserFlags.js +104 -0
  330. package/src/util/Util.js +741 -0
  331. package/src/util/Voice.js +1456 -0
  332. package/src/util/arRPC/index.js +229 -0
  333. package/src/util/arRPC/process/detectable.json +1 -0
  334. package/src/util/arRPC/process/index.js +102 -0
  335. package/src/util/arRPC/process/native/index.js +5 -0
  336. package/src/util/arRPC/process/native/linux.js +37 -0
  337. package/src/util/arRPC/process/native/win32.js +25 -0
  338. package/src/util/arRPC/transports/ipc.js +281 -0
  339. package/src/util/arRPC/transports/websocket.js +128 -0
  340. package/typings/enums.d.ts +346 -0
  341. package/typings/index.d.ts +7725 -0
  342. package/typings/index.test-d.ts +0 -0
  343. package/typings/rawDataTypes.d.ts +283 -0
@@ -0,0 +1,401 @@
1
+ 'use strict';
2
+ const axios = require('axios');
3
+ const baseURL = 'https://webembed-sb.onrender.com/embed?';
4
+ const hiddenCharter =
5
+ '||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||||​||';
6
+ const { RangeError } = require('../errors');
7
+ const Util = require('../util/Util');
8
+
9
+ /**
10
+ * Send Embedlink to Discord
11
+ * Need to change WebEmbed API server (because heroku is no longer free)
12
+ */
13
+ class WebEmbed {
14
+ /**
15
+ * @param {WebEmbed} [data={}] Raw data
16
+ */
17
+ constructor(data = {}) {
18
+ /**
19
+ * A `Partial` object is a representation of any existing object.
20
+ * This object contains between 0 and all of the original objects parameters.
21
+ * This is true regardless of whether the parameters are optional in the base object.
22
+ * @typedef {Object} Partial
23
+ */
24
+
25
+ /**
26
+ * Represents the possible options for a WebEmbed
27
+ * @typedef {Object} WebEmbedOptions
28
+ * @property {string} [title] The title of this embed
29
+ * @property {string} [description] The description of this embed
30
+ * @property {string} [url] The URL of this embed
31
+ * @property {ColorResolvable} [color] The color of this embed
32
+ * @property {Partial<WebEmbedAuthor>} [author] The author of this embed
33
+ * @property {Partial<WebEmbedThumbnail>} [thumbnail] The thumbnail of this embed
34
+ * @property {Partial<WebEmbedImage>} [image] The image of this embed
35
+ * @property {Partial<WebEmbedVideo>} [video] The video of this embed
36
+ * @property {Partial<WebEmbedFooter>} [footer] The footer of this embed
37
+ * @property {Partial<WebEmbedProvider>} [provider] The provider of this embed
38
+ */
39
+
40
+ // eslint-disable-next-line valid-jsdoc
41
+ /**
42
+ * @param {WebEmbed|WebEmbedOptions|APIEmbed} [data={}] WebEmbed to clone or raw embed data
43
+ */
44
+ this._setup(data);
45
+ /**
46
+ * Shorten the link
47
+ * @type {?boolean}
48
+ */
49
+ this.shorten = data.shorten ?? true;
50
+
51
+ /**
52
+ * Hidden Embed link
53
+ * @type {?boolean}
54
+ */
55
+ this.hidden = data.hidden ?? false;
56
+
57
+ /**
58
+ * Using Custom WebEmbed server ?
59
+ * @type {?string} https://webembed-sb.onrender.com/embed?
60
+ * @see https://github.com/aiko-chan-ai/WebEmbed
61
+ */
62
+ this.baseURL = data.baseURL ?? baseURL;
63
+
64
+ /**
65
+ * Shorten API
66
+ * @type {?string} https://webembed-sb.onrender.com/short?url=
67
+ * @see https://github.com/aiko-chan-ai/WebEmbed
68
+ */
69
+ this.shortenAPI = data.shortenAPI;
70
+ }
71
+ /**
72
+ * @private
73
+ * @param {Object} data The data for the embed
74
+ */
75
+ _setup(data) {
76
+ /**
77
+ * Type image of this embed
78
+ * @type {?thumbnail | image}
79
+ */
80
+ this.imageType = 'thumbnail';
81
+ /**
82
+ * The title of this embed
83
+ * @type {?string}
84
+ */
85
+ this.title = data.title ?? null;
86
+
87
+ /**
88
+ * The description of this embed
89
+ * @type {?string}
90
+ */
91
+ this.description = data.description ?? null;
92
+
93
+ /**
94
+ * The URL of this embed
95
+ * @type {?string}
96
+ */
97
+ this.url = data.url ?? null;
98
+
99
+ /**
100
+ * The color of this embed
101
+ * @type {?number}
102
+ */
103
+ this.color = 'color' in data ? Util.resolveColor(data.color) : null;
104
+
105
+ /**
106
+ * Represents the image of a WebEmbed
107
+ * @typedef {Object} WebEmbedImage
108
+ * @property {string} url URL for this image
109
+ * @property {string} proxyURL ProxyURL for this image
110
+ * @property {number} height Height of this image
111
+ * @property {number} width Width of this image
112
+ */
113
+
114
+ /**
115
+ * The image of this embed, if there is one
116
+ * @type {?WebEmbedImage}
117
+ */
118
+ this.image = data.image
119
+ ? {
120
+ url: data.image.url,
121
+ proxyURL: data.image.proxyURL ?? data.image.proxy_url,
122
+ height: data.image.height,
123
+ width: data.image.width,
124
+ }
125
+ : null;
126
+
127
+ /**
128
+ * The thumbnail of this embed (if there is one)
129
+ * @type {?WebEmbedThumbnail}
130
+ */
131
+ this.thumbnail = data.thumbnail
132
+ ? {
133
+ url: data.thumbnail.url,
134
+ proxyURL: data.thumbnail.proxyURL ?? data.thumbnail.proxy_url,
135
+ height: data.thumbnail.height,
136
+ width: data.thumbnail.width,
137
+ }
138
+ : null;
139
+
140
+ /**
141
+ * Represents the video of a WebEmbed
142
+ * @typedef {Object} WebEmbedVideo
143
+ * @property {string} url URL of this video
144
+ * @property {string} proxyURL ProxyURL for this video
145
+ * @property {number} height Height of this video
146
+ * @property {number} width Width of this video
147
+ */
148
+
149
+ /**
150
+ * The video of this embed (if there is one)
151
+ * @type {?WebEmbedVideo}
152
+ * @readonly
153
+ */
154
+ this.video = data.video
155
+ ? {
156
+ url: data.video.url,
157
+ proxyURL: data.video.proxyURL ?? data.video.proxy_url,
158
+ height: data.video.height,
159
+ width: data.video.width,
160
+ }
161
+ : null;
162
+
163
+ /**
164
+ * Represents the author field of a WebEmbed
165
+ * @typedef {Object} WebEmbedAuthor
166
+ * @property {string} name The name of this author
167
+ * @property {string} url URL of this author
168
+ */
169
+
170
+ /**
171
+ * The author of this embed (if there is one)
172
+ * @type {?WebEmbedAuthor}
173
+ */
174
+ this.author = data.author
175
+ ? {
176
+ name: data.author.name,
177
+ url: data.author.url,
178
+ }
179
+ : null;
180
+
181
+ /**
182
+ * Represents the provider of a WebEmbed
183
+ * @typedef {Object} WebEmbedProvider
184
+ * @property {string} name The name of this provider
185
+ * @property {string} url URL of this provider
186
+ */
187
+
188
+ /**
189
+ * The provider of this embed (if there is one)
190
+ * @type {?WebEmbedProvider}
191
+ */
192
+ this.provider = data.provider
193
+ ? {
194
+ name: data.provider.name,
195
+ url: data.provider.name,
196
+ }
197
+ : null;
198
+ }
199
+ /**
200
+ * The options to provide for setting an author for a {@link WebEmbed}.
201
+ * @typedef {Object} EmbedAuthorData
202
+ * @property {string} name The name of this author.
203
+ */
204
+
205
+ /**
206
+ * Sets the author of this embed.
207
+ * @param {string|EmbedAuthorData|null} options The options to provide for the author.
208
+ * Provide `null` to remove the author data.
209
+ * @returns {WebEmbed}
210
+ */
211
+ setAuthor(options) {
212
+ if (options === null) {
213
+ this.author = {};
214
+ return this;
215
+ }
216
+ const { name, url } = options;
217
+ this.author = {
218
+ name: Util.verifyString(name, RangeError, 'EMBED_AUTHOR_NAME'),
219
+ url,
220
+ };
221
+ return this;
222
+ }
223
+
224
+ /**
225
+ * The options to provide for setting an provider for a {@link WebEmbed}.
226
+ * @typedef {Object} EmbedProviderData
227
+ * @property {string} name The name of this provider.
228
+ */
229
+
230
+ /**
231
+ * Sets the provider of this embed.
232
+ * @param {string|EmbedProviderData|null} options The options to provide for the provider.
233
+ * Provide `null` to remove the provider data.
234
+ * @returns {WebEmbed}
235
+ */
236
+ setProvider(options) {
237
+ if (options === null) {
238
+ this.provider = {};
239
+ return this;
240
+ }
241
+ const { name, url } = options;
242
+ this.provider = {
243
+ name: Util.verifyString(name, RangeError, 'EMBED_PROVIDER_NAME'),
244
+ url,
245
+ };
246
+ return this;
247
+ }
248
+
249
+ /**
250
+ * Sets the color of this embed.
251
+ * @param {ColorResolvable} color The color of the embed
252
+ * @returns {WebEmbed}
253
+ */
254
+ setColor(color) {
255
+ this.color = Util.resolveColor(color);
256
+ return this;
257
+ }
258
+
259
+ /**
260
+ * Sets the description of this embed.
261
+ * @param {string} description The description (Limit 350 characters)
262
+ * @returns {WebEmbed}
263
+ */
264
+ setDescription(description) {
265
+ this.description = Util.verifyString(description, RangeError, 'EMBED_DESCRIPTION');
266
+ return this;
267
+ }
268
+
269
+ /**
270
+ * Sets the image of this embed.
271
+ * @param {string} url The URL of the image
272
+ * @returns {WebEmbed}
273
+ */
274
+ setImage(url) {
275
+ if (this.thumbnail && this.thumbnail.url) {
276
+ console.warn('You can only set image or thumbnail per embed.');
277
+ this.thumbnail.url = null;
278
+ }
279
+ this.imageType = 'image';
280
+ this.image = { url };
281
+ return this;
282
+ }
283
+
284
+ /**
285
+ * Sets the thumbnail of this embed.
286
+ * @param {string} url The URL of the image
287
+ * @returns {WebEmbed}
288
+ */
289
+ setThumbnail(url) {
290
+ if (this.image && this.image.url) {
291
+ console.warn('You can only set image or thumbnail per embed.');
292
+ this.image.url = null;
293
+ }
294
+ this.imageType = 'thumbnail';
295
+ this.thumbnail = { url };
296
+ return this;
297
+ }
298
+
299
+ /**
300
+ * Sets the video of this embed.
301
+ * @param {string} url The URL of the video
302
+ * @returns {WebEmbed}
303
+ */
304
+ setVideo(url) {
305
+ this.video = { url };
306
+ return this;
307
+ }
308
+
309
+ /**
310
+ * Sets the title of this embed.
311
+ * @param {string} title The title
312
+ * @returns {WebEmbed}
313
+ */
314
+ setTitle(title) {
315
+ this.title = Util.verifyString(title, RangeError, 'EMBED_TITLE');
316
+ return this;
317
+ }
318
+
319
+ /**
320
+ * Sets the URL of this embed.
321
+ * @param {string} url The URL
322
+ * @returns {WebEmbed}
323
+ */
324
+ setURL(url) {
325
+ this.url = url;
326
+ return this;
327
+ }
328
+
329
+ /**
330
+ * Return Message Content + Embed (if hidden, pls check content length because it has 1000+ length)
331
+ * @returns {string} Message Content
332
+ */
333
+ async toMessage() {
334
+ const arrayQuery = [`image_type=${this.imageType}`];
335
+ if (this.title) {
336
+ arrayQuery.push(`title=${encodeURIComponent(this.title)}`);
337
+ }
338
+ if (this.description) {
339
+ arrayQuery.push(`description=${encodeURIComponent(this.description)}`);
340
+ }
341
+ if (this.url) {
342
+ arrayQuery.push(`url=${encodeURIComponent(this.url)}`);
343
+ }
344
+ if (this.color) {
345
+ arrayQuery.push(`color=${encodeURIComponent(`#${this.color.toString(16)}`)}`);
346
+ }
347
+ if (this.image?.url) {
348
+ arrayQuery.push(`image=${encodeURIComponent(this.image.url)}`);
349
+ }
350
+ if (this.video?.url) {
351
+ arrayQuery.push(`video=${encodeURIComponent(this.video.url)}`);
352
+ }
353
+ if (this.author) {
354
+ if (this.author.name) {
355
+ arrayQuery.push(`author_name=${encodeURIComponent(this.author.name)}`);
356
+ }
357
+ if (this.author.url) {
358
+ arrayQuery.push(`author_url=${encodeURIComponent(this.author.url)}`);
359
+ }
360
+ }
361
+ if (this.provider) {
362
+ if (this.provider.name) {
363
+ arrayQuery.push(`provider_name=${encodeURIComponent(this.provider.name)}`);
364
+ }
365
+ if (this.provider.url) {
366
+ arrayQuery.push(`provider_url=${encodeURIComponent(this.provider.url)}`);
367
+ }
368
+ }
369
+ if (this.thumbnail?.url) {
370
+ arrayQuery.push(`image=${encodeURIComponent(this.thumbnail.url)}`);
371
+ }
372
+ const fullURL = `${this.baseURL}${arrayQuery.join('&')}`;
373
+ if (this.shorten) {
374
+ const url = await this.constructor.getShorten(fullURL, this);
375
+ if (!url) console.log('Cannot shorten URL in WebEmbed');
376
+ return this.hidden ? `${hiddenCharter} ${url || fullURL}` : url || fullURL;
377
+ } else {
378
+ return this.hidden ? `${hiddenCharter} ${fullURL}` : fullURL;
379
+ }
380
+ }
381
+
382
+ static async getShorten(url, embed) {
383
+ const APIurl = ['https://tinyurl.com/api-create.php?url='];
384
+ const shorten = `${
385
+ embed.shortenAPI && typeof embed.shortenAPI == 'string'
386
+ ? embed.shortenAPI
387
+ : APIurl[Math.floor(Math.random() * APIurl.length)]
388
+ }${encodeURIComponent(url)}`;
389
+ try {
390
+ const res = await axios.get(`${shorten}`);
391
+ if (typeof res.data === 'string') return res.data;
392
+ else if (typeof res.data === 'object') return res.data.shorten;
393
+ else throw new Error('Unknown error');
394
+ } catch {
395
+ return undefined;
396
+ }
397
+ }
398
+ }
399
+
400
+ module.exports = WebEmbed;
401
+ module.exports.hiddenEmbed = hiddenCharter;