@erinjs/core 1.0.0 → 1.2.4

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.
Files changed (394) hide show
  1. package/{core/LICENSE → LICENSE} +203 -203
  2. package/README.md +46 -0
  3. package/dist/index.d.mts +2084 -0
  4. package/dist/index.d.ts +2084 -0
  5. package/dist/index.js +3867 -0
  6. package/dist/index.mjs +3809 -0
  7. package/package.json +50 -15
  8. package/core/.changeset/README.md +0 -8
  9. package/core/.changeset/community-bootstrap-release.md +0 -17
  10. package/core/.changeset/config.json +0 -11
  11. package/core/.changeset/no-changelog.js +0 -16
  12. package/core/.changeset/pre.json +0 -17
  13. package/core/.editorconfig +0 -13
  14. package/core/.gitattributes +0 -2
  15. package/core/.github/CODE_OF_CONDUCT.md +0 -23
  16. package/core/.github/FUNDING.yml +0 -7
  17. package/core/.github/ISSUE_TEMPLATE/bug_report.md +0 -31
  18. package/core/.github/ISSUE_TEMPLATE/feature_request.md +0 -23
  19. package/core/.github/PULL_REQUEST_TEMPLATE.md +0 -16
  20. package/core/.github/dependabot.yml +0 -16
  21. package/core/.github/workflows/autoapp.yml +0 -16
  22. package/core/.github/workflows/ci.yml +0 -187
  23. package/core/.github/workflows/codeql.yml +0 -30
  24. package/core/.github/workflows/deploy-docs.yml +0 -54
  25. package/core/.github/workflows/publish.yml +0 -43
  26. package/core/.lintstagedrc.json +0 -4
  27. package/core/.nvmrc +0 -1
  28. package/core/.prettierignore +0 -8
  29. package/core/.prettierrc +0 -11
  30. package/core/CONTRIBUTING.md +0 -70
  31. package/core/README.md +0 -61
  32. package/core/SECURITY.md +0 -21
  33. package/core/apps/docs/index.html +0 -28
  34. package/core/apps/docs/middleware.ts +0 -21
  35. package/core/apps/docs/package.json +0 -33
  36. package/core/apps/docs/public/@flux.png +0 -0
  37. package/core/apps/docs/public/docs/latest/guides.json +0 -1420
  38. package/core/apps/docs/public/docs/latest/main.json +0 -14981
  39. package/core/apps/docs/public/docs/latest/rag-index.json +0 -1
  40. package/core/apps/docs/public/docs/v1.0.5/guides.json +0 -226
  41. package/core/apps/docs/public/docs/v1.0.5/main.json +0 -7920
  42. package/core/apps/docs/public/docs/v1.0.6/guides.json +0 -226
  43. package/core/apps/docs/public/docs/v1.0.6/main.json +0 -7920
  44. package/core/apps/docs/public/docs/v1.0.7/guides.json +0 -259
  45. package/core/apps/docs/public/docs/v1.0.7/main.json +0 -8652
  46. package/core/apps/docs/public/docs/v1.0.8/guides.json +0 -313
  47. package/core/apps/docs/public/docs/v1.0.8/main.json +0 -9618
  48. package/core/apps/docs/public/docs/v1.0.9/guides.json +0 -319
  49. package/core/apps/docs/public/docs/v1.0.9/main.json +0 -10694
  50. package/core/apps/docs/public/docs/v1.1.0/guides.json +0 -589
  51. package/core/apps/docs/public/docs/v1.1.0/main.json +0 -12576
  52. package/core/apps/docs/public/docs/v1.1.2/guides.json +0 -650
  53. package/core/apps/docs/public/docs/v1.1.2/main.json +0 -13239
  54. package/core/apps/docs/public/docs/v1.1.3/guides.json +0 -650
  55. package/core/apps/docs/public/docs/v1.1.3/main.json +0 -13239
  56. package/core/apps/docs/public/docs/v1.1.4/guides.json +0 -708
  57. package/core/apps/docs/public/docs/v1.1.4/main.json +0 -13231
  58. package/core/apps/docs/public/docs/v1.1.5/guides.json +0 -1035
  59. package/core/apps/docs/public/docs/v1.1.5/main.json +0 -13838
  60. package/core/apps/docs/public/docs/v1.1.6/guides.json +0 -1041
  61. package/core/apps/docs/public/docs/v1.1.6/main.json +0 -14313
  62. package/core/apps/docs/public/docs/v1.1.8/guides.json +0 -1047
  63. package/core/apps/docs/public/docs/v1.1.8/main.json +0 -14421
  64. package/core/apps/docs/public/docs/v1.1.9/guides.json +0 -1047
  65. package/core/apps/docs/public/docs/v1.1.9/main.json +0 -14421
  66. package/core/apps/docs/public/docs/v1.2.0/guides.json +0 -1212
  67. package/core/apps/docs/public/docs/v1.2.0/main.json +0 -14663
  68. package/core/apps/docs/public/docs/v1.2.1/guides.json +0 -1293
  69. package/core/apps/docs/public/docs/v1.2.1/main.json +0 -14828
  70. package/core/apps/docs/public/docs/v1.2.2/guides.json +0 -1293
  71. package/core/apps/docs/public/docs/v1.2.2/main.json +0 -15025
  72. package/core/apps/docs/public/docs/v1.2.3/guides.json +0 -1420
  73. package/core/apps/docs/public/docs/v1.2.3/main.json +0 -14954
  74. package/core/apps/docs/public/docs/v1.2.4/guides.json +0 -1420
  75. package/core/apps/docs/public/docs/v1.2.4/main.json +0 -14981
  76. package/core/apps/docs/public/docs/versions.json +0 -24
  77. package/core/apps/docs/public/flux.png +0 -0
  78. package/core/apps/docs/public/locales/en.json +0 -50
  79. package/core/apps/docs/public/locales/guides-en.json +0 -512
  80. package/core/apps/docs/public/robots.txt +0 -4
  81. package/core/apps/docs/public/sitemap.xml +0 -33
  82. package/core/apps/docs/src/App.vue +0 -538
  83. package/core/apps/docs/src/components/ApiCategorySection.vue +0 -42
  84. package/core/apps/docs/src/components/ApiDiscordCompat.vue +0 -65
  85. package/core/apps/docs/src/components/ApiEndpointCard.vue +0 -313
  86. package/core/apps/docs/src/components/ApiSchemaBlock.vue +0 -131
  87. package/core/apps/docs/src/components/CodeBlock.vue +0 -177
  88. package/core/apps/docs/src/components/CommunityCallout.vue +0 -90
  89. package/core/apps/docs/src/components/ConstructorSection.vue +0 -82
  90. package/core/apps/docs/src/components/DocDescription.vue +0 -40
  91. package/core/apps/docs/src/components/FluxerLogo.vue +0 -3
  92. package/core/apps/docs/src/components/Footer.vue +0 -106
  93. package/core/apps/docs/src/components/GuideCodeBlock.vue +0 -102
  94. package/core/apps/docs/src/components/GuideDiscordCompat.vue +0 -77
  95. package/core/apps/docs/src/components/GuideDiscordCompatCallout.vue +0 -83
  96. package/core/apps/docs/src/components/GuideTable.vue +0 -77
  97. package/core/apps/docs/src/components/GuideTip.vue +0 -38
  98. package/core/apps/docs/src/components/MethodsSection.vue +0 -195
  99. package/core/apps/docs/src/components/ParamsTable.vue +0 -70
  100. package/core/apps/docs/src/components/PropertiesSection.vue +0 -143
  101. package/core/apps/docs/src/components/SearchBar.vue +0 -76
  102. package/core/apps/docs/src/components/SearchModal.vue +0 -361
  103. package/core/apps/docs/src/components/SidebarNav.vue +0 -225
  104. package/core/apps/docs/src/components/SponsorBanner.vue +0 -153
  105. package/core/apps/docs/src/components/TypeSignature.vue +0 -187
  106. package/core/apps/docs/src/components/VersionPicker.vue +0 -191
  107. package/core/apps/docs/src/composables/useSearchIndex.ts +0 -144
  108. package/core/apps/docs/src/composables/useVersionedPath.ts +0 -20
  109. package/core/apps/docs/src/data/apiEndpoints.ts +0 -1073
  110. package/core/apps/docs/src/data/changelog.ts +0 -717
  111. package/core/apps/docs/src/data/guides.ts +0 -2362
  112. package/core/apps/docs/src/env.d.ts +0 -7
  113. package/core/apps/docs/src/locales/guides-en.json +0 -512
  114. package/core/apps/docs/src/main.ts +0 -27
  115. package/core/apps/docs/src/pages/ApiReferenceLayout.vue +0 -175
  116. package/core/apps/docs/src/pages/ApiReferencePage.vue +0 -128
  117. package/core/apps/docs/src/pages/Changelog.vue +0 -288
  118. package/core/apps/docs/src/pages/ClassPage.vue +0 -319
  119. package/core/apps/docs/src/pages/ClassesList.vue +0 -100
  120. package/core/apps/docs/src/pages/DocsLayout.vue +0 -127
  121. package/core/apps/docs/src/pages/GuidePage.vue +0 -279
  122. package/core/apps/docs/src/pages/GuidesIndex.vue +0 -166
  123. package/core/apps/docs/src/pages/GuidesLayout.vue +0 -245
  124. package/core/apps/docs/src/pages/Home.vue +0 -125
  125. package/core/apps/docs/src/pages/NotFound.vue +0 -57
  126. package/core/apps/docs/src/pages/TypedefPage.vue +0 -230
  127. package/core/apps/docs/src/pages/TypedefsList.vue +0 -168
  128. package/core/apps/docs/src/pages/VersionLayout.vue +0 -15
  129. package/core/apps/docs/src/router.ts +0 -73
  130. package/core/apps/docs/src/stores/docs.ts +0 -54
  131. package/core/apps/docs/src/stores/guides.ts +0 -53
  132. package/core/apps/docs/src/stores/version.ts +0 -67
  133. package/core/apps/docs/src/styles/main.css +0 -278
  134. package/core/apps/docs/src/styles/prism.css +0 -95
  135. package/core/apps/docs/src/types/doc-schema.ts +0 -112
  136. package/core/apps/docs/tsconfig.json +0 -17
  137. package/core/apps/docs/tsconfig.node.json +0 -10
  138. package/core/apps/docs/vite.config.d.ts +0 -2
  139. package/core/apps/docs/vite.config.js +0 -26
  140. package/core/apps/docs/vite.config.ts +0 -28
  141. package/core/apps/docs-vitepress/.vitepress/config.ts +0 -141
  142. package/core/apps/docs-vitepress/api-data/latest/main.json +0 -15035
  143. package/core/apps/docs-vitepress/api-data/v1.2.4/main.json +0 -15035
  144. package/core/apps/docs-vitepress/api-data/versions.json +0 -6
  145. package/core/apps/docs-vitepress/index.md +0 -15
  146. package/core/apps/docs-vitepress/package-lock.json +0 -2924
  147. package/core/apps/docs-vitepress/package.json +0 -20
  148. package/core/apps/docs-vitepress/public/CNAME +0 -1
  149. package/core/apps/docs-vitepress/scripts/generate-api.ts +0 -243
  150. package/core/apps/docs-vitepress/scripts/migrate-guides.ts +0 -129
  151. package/core/apps/docs-vitepress/tsconfig.json +0 -11
  152. package/core/apps/docs-vitepress/v/latest/guides/attachments-by-url.md +0 -57
  153. package/core/apps/docs-vitepress/v/latest/guides/attachments.md +0 -62
  154. package/core/apps/docs-vitepress/v/latest/guides/basic-bot.md +0 -49
  155. package/core/apps/docs-vitepress/v/latest/guides/channels.md +0 -180
  156. package/core/apps/docs-vitepress/v/latest/guides/deprecated-apis.md +0 -58
  157. package/core/apps/docs-vitepress/v/latest/guides/discord-js-compatibility.md +0 -42
  158. package/core/apps/docs-vitepress/v/latest/guides/editing-embeds.md +0 -65
  159. package/core/apps/docs-vitepress/v/latest/guides/embed-media.md +0 -87
  160. package/core/apps/docs-vitepress/v/latest/guides/embeds.md +0 -166
  161. package/core/apps/docs-vitepress/v/latest/guides/emojis.md +0 -77
  162. package/core/apps/docs-vitepress/v/latest/guides/events.md +0 -202
  163. package/core/apps/docs-vitepress/v/latest/guides/gifs.md +0 -47
  164. package/core/apps/docs-vitepress/v/latest/guides/installation.md +0 -10
  165. package/core/apps/docs-vitepress/v/latest/guides/moderation.md +0 -89
  166. package/core/apps/docs-vitepress/v/latest/guides/permissions.md +0 -130
  167. package/core/apps/docs-vitepress/v/latest/guides/prefix-commands.md +0 -41
  168. package/core/apps/docs-vitepress/v/latest/guides/profile-urls.md +0 -58
  169. package/core/apps/docs-vitepress/v/latest/guides/reactions.md +0 -69
  170. package/core/apps/docs-vitepress/v/latest/guides/roles.md +0 -130
  171. package/core/apps/docs-vitepress/v/latest/guides/sending-without-reply.md +0 -172
  172. package/core/apps/docs-vitepress/v/latest/guides/voice.md +0 -109
  173. package/core/apps/docs-vitepress/v/latest/guides/wait-for-guilds.md +0 -37
  174. package/core/apps/docs-vitepress/v/latest/guides/webhook-attachments-embeds.md +0 -73
  175. package/core/apps/docs-vitepress/v/latest/guides/webhooks.md +0 -131
  176. package/core/eslint.config.js +0 -80
  177. package/core/examples/.env.example +0 -22
  178. package/core/examples/README.md +0 -68
  179. package/core/examples/first-steps-bot.js +0 -118
  180. package/core/examples/minimal-bot.js +0 -17
  181. package/core/examples/moderation-bot.js +0 -209
  182. package/core/examples/package.json +0 -14
  183. package/core/examples/ping-bot.js +0 -1146
  184. package/core/examples/reaction-bot.js +0 -70
  185. package/core/examples/reaction-roles-bot.js +0 -140
  186. package/core/examples/webhook-bot.js +0 -239
  187. package/core/flux.png +0 -0
  188. package/core/package.json +0 -78
  189. package/core/packages/builders/package.json +0 -51
  190. package/core/packages/builders/src/index.ts +0 -13
  191. package/core/packages/builders/src/messages/AttachmentBuilder.test.ts +0 -79
  192. package/core/packages/builders/src/messages/AttachmentBuilder.ts +0 -69
  193. package/core/packages/builders/src/messages/EmbedBuilder.test.ts +0 -266
  194. package/core/packages/builders/src/messages/EmbedBuilder.ts +0 -239
  195. package/core/packages/builders/src/messages/MessagePayload.test.ts +0 -118
  196. package/core/packages/builders/src/messages/MessagePayload.ts +0 -122
  197. package/core/packages/builders/tsconfig.json +0 -9
  198. package/core/packages/builders/tsup.config.ts +0 -9
  199. package/core/packages/builders/vitest.config.ts +0 -9
  200. package/core/packages/collection/package.json +0 -47
  201. package/core/packages/collection/src/Collection.test.ts +0 -232
  202. package/core/packages/collection/src/Collection.ts +0 -196
  203. package/core/packages/collection/src/index.ts +0 -1
  204. package/core/packages/collection/tsconfig.json +0 -9
  205. package/core/packages/collection/tsup.config.ts +0 -9
  206. package/core/packages/collection/vitest.config.ts +0 -9
  207. package/core/packages/docgen/package.json +0 -26
  208. package/core/packages/docgen/src/extract.ts +0 -262
  209. package/core/packages/docgen/src/formatType.ts +0 -24
  210. package/core/packages/docgen/src/index.ts +0 -103
  211. package/core/packages/docgen/src/schema.ts +0 -100
  212. package/core/packages/docgen/src/visitor.ts +0 -147
  213. package/core/packages/docgen/tsconfig.json +0 -9
  214. package/core/packages/docgen/tsup.config.ts +0 -9
  215. package/core/packages/fluxer-core/README.md +0 -26
  216. package/core/packages/fluxer-core/package.json +0 -60
  217. package/core/packages/fluxer-core/src/client/ChannelManager.ts +0 -143
  218. package/core/packages/fluxer-core/src/client/Client.gateway.test.ts +0 -84
  219. package/core/packages/fluxer-core/src/client/Client.resolveEmoji.test.ts +0 -45
  220. package/core/packages/fluxer-core/src/client/Client.ts +0 -558
  221. package/core/packages/fluxer-core/src/client/ClientUser.ts +0 -40
  222. package/core/packages/fluxer-core/src/client/EventHandlerRegistry.ts +0 -469
  223. package/core/packages/fluxer-core/src/client/GuildManager.ts +0 -79
  224. package/core/packages/fluxer-core/src/client/GuildMemberManager.ts +0 -91
  225. package/core/packages/fluxer-core/src/client/MessageManager.ts +0 -58
  226. package/core/packages/fluxer-core/src/client/UsersManager.ts +0 -122
  227. package/core/packages/fluxer-core/src/errors/ErrorCodes.test.ts +0 -19
  228. package/core/packages/fluxer-core/src/errors/ErrorCodes.ts +0 -12
  229. package/core/packages/fluxer-core/src/errors/FluxerError.test.ts +0 -32
  230. package/core/packages/fluxer-core/src/errors/FluxerError.ts +0 -15
  231. package/core/packages/fluxer-core/src/index.ts +0 -85
  232. package/core/packages/fluxer-core/src/structures/Base.ts +0 -7
  233. package/core/packages/fluxer-core/src/structures/Channel.ts +0 -508
  234. package/core/packages/fluxer-core/src/structures/Guild.test.ts +0 -189
  235. package/core/packages/fluxer-core/src/structures/Guild.ts +0 -734
  236. package/core/packages/fluxer-core/src/structures/GuildBan.ts +0 -35
  237. package/core/packages/fluxer-core/src/structures/GuildEmoji.ts +0 -57
  238. package/core/packages/fluxer-core/src/structures/GuildMember.test.ts +0 -203
  239. package/core/packages/fluxer-core/src/structures/GuildMember.ts +0 -213
  240. package/core/packages/fluxer-core/src/structures/GuildMemberRoleManager.ts +0 -121
  241. package/core/packages/fluxer-core/src/structures/GuildSticker.ts +0 -56
  242. package/core/packages/fluxer-core/src/structures/Invite.test.ts +0 -103
  243. package/core/packages/fluxer-core/src/structures/Invite.ts +0 -121
  244. package/core/packages/fluxer-core/src/structures/Message.test.ts +0 -109
  245. package/core/packages/fluxer-core/src/structures/Message.ts +0 -397
  246. package/core/packages/fluxer-core/src/structures/MessageReaction.ts +0 -72
  247. package/core/packages/fluxer-core/src/structures/PartialMessage.ts +0 -12
  248. package/core/packages/fluxer-core/src/structures/Role.test.ts +0 -77
  249. package/core/packages/fluxer-core/src/structures/Role.ts +0 -112
  250. package/core/packages/fluxer-core/src/structures/User.test.ts +0 -110
  251. package/core/packages/fluxer-core/src/structures/User.ts +0 -109
  252. package/core/packages/fluxer-core/src/structures/Webhook.test.ts +0 -109
  253. package/core/packages/fluxer-core/src/structures/Webhook.ts +0 -258
  254. package/core/packages/fluxer-core/src/util/Constants.test.ts +0 -16
  255. package/core/packages/fluxer-core/src/util/Constants.ts +0 -7
  256. package/core/packages/fluxer-core/src/util/Events.ts +0 -46
  257. package/core/packages/fluxer-core/src/util/MessageCollector.ts +0 -87
  258. package/core/packages/fluxer-core/src/util/Options.ts +0 -33
  259. package/core/packages/fluxer-core/src/util/ReactionCollector.ts +0 -116
  260. package/core/packages/fluxer-core/src/util/cdn.test.ts +0 -108
  261. package/core/packages/fluxer-core/src/util/cdn.ts +0 -130
  262. package/core/packages/fluxer-core/src/util/guildUtils.ts +0 -33
  263. package/core/packages/fluxer-core/src/util/messageUtils.test.ts +0 -74
  264. package/core/packages/fluxer-core/src/util/messageUtils.ts +0 -119
  265. package/core/packages/fluxer-core/src/util/permissions.test.ts +0 -95
  266. package/core/packages/fluxer-core/src/util/permissions.ts +0 -43
  267. package/core/packages/fluxer-core/tsconfig.json +0 -9
  268. package/core/packages/fluxer-core/tsup.config.ts +0 -9
  269. package/core/packages/fluxer-core/vitest.config.ts +0 -9
  270. package/core/packages/rest/package.json +0 -52
  271. package/core/packages/rest/src/REST.test.ts +0 -64
  272. package/core/packages/rest/src/REST.ts +0 -90
  273. package/core/packages/rest/src/RateLimitManager.test.ts +0 -71
  274. package/core/packages/rest/src/RateLimitManager.ts +0 -60
  275. package/core/packages/rest/src/RequestManager.test.ts +0 -87
  276. package/core/packages/rest/src/RequestManager.ts +0 -172
  277. package/core/packages/rest/src/errors/FluxerAPIError.test.ts +0 -57
  278. package/core/packages/rest/src/errors/FluxerAPIError.ts +0 -21
  279. package/core/packages/rest/src/errors/HTTPError.test.ts +0 -55
  280. package/core/packages/rest/src/errors/HTTPError.ts +0 -25
  281. package/core/packages/rest/src/errors/RateLimitError.test.ts +0 -41
  282. package/core/packages/rest/src/errors/RateLimitError.ts +0 -15
  283. package/core/packages/rest/src/errors/index.ts +0 -3
  284. package/core/packages/rest/src/index.ts +0 -6
  285. package/core/packages/rest/src/utils/constants.test.ts +0 -31
  286. package/core/packages/rest/src/utils/constants.ts +0 -5
  287. package/core/packages/rest/src/utils/files.test.ts +0 -37
  288. package/core/packages/rest/src/utils/files.ts +0 -75
  289. package/core/packages/rest/tsconfig.json +0 -9
  290. package/core/packages/rest/tsup.config.ts +0 -9
  291. package/core/packages/rest/vitest.config.ts +0 -9
  292. package/core/packages/types/package.json +0 -46
  293. package/core/packages/types/src/api/ban.ts +0 -8
  294. package/core/packages/types/src/api/channel.ts +0 -65
  295. package/core/packages/types/src/api/embed.ts +0 -82
  296. package/core/packages/types/src/api/emoji.ts +0 -12
  297. package/core/packages/types/src/api/errors.ts +0 -68
  298. package/core/packages/types/src/api/gateway.ts +0 -14
  299. package/core/packages/types/src/api/guild.ts +0 -123
  300. package/core/packages/types/src/api/index.ts +0 -15
  301. package/core/packages/types/src/api/instance.ts +0 -32
  302. package/core/packages/types/src/api/interaction.ts +0 -26
  303. package/core/packages/types/src/api/invite.ts +0 -28
  304. package/core/packages/types/src/api/message.ts +0 -140
  305. package/core/packages/types/src/api/role.ts +0 -41
  306. package/core/packages/types/src/api/sticker.ts +0 -14
  307. package/core/packages/types/src/api/user.ts +0 -79
  308. package/core/packages/types/src/api/webhook.ts +0 -41
  309. package/core/packages/types/src/common/index.ts +0 -1
  310. package/core/packages/types/src/common/snowflake.test.ts +0 -9
  311. package/core/packages/types/src/common/snowflake.ts +0 -8
  312. package/core/packages/types/src/gateway/events.ts +0 -189
  313. package/core/packages/types/src/gateway/index.ts +0 -3
  314. package/core/packages/types/src/gateway/opcodes.ts +0 -17
  315. package/core/packages/types/src/gateway/payloads.ts +0 -481
  316. package/core/packages/types/src/index.ts +0 -4
  317. package/core/packages/types/src/rest/index.ts +0 -1
  318. package/core/packages/types/src/rest/routes.test.ts +0 -169
  319. package/core/packages/types/src/rest/routes.ts +0 -109
  320. package/core/packages/types/tsconfig.json +0 -9
  321. package/core/packages/types/tsup.config.ts +0 -9
  322. package/core/packages/types/vitest.config.ts +0 -9
  323. package/core/packages/util/package.json +0 -51
  324. package/core/packages/util/src/BitField.test.ts +0 -96
  325. package/core/packages/util/src/BitField.ts +0 -105
  326. package/core/packages/util/src/MessageFlagsBitField.test.ts +0 -42
  327. package/core/packages/util/src/MessageFlagsBitField.ts +0 -20
  328. package/core/packages/util/src/PermissionsBitField.test.ts +0 -79
  329. package/core/packages/util/src/PermissionsBitField.ts +0 -97
  330. package/core/packages/util/src/SnowflakeUtil.test.ts +0 -69
  331. package/core/packages/util/src/SnowflakeUtil.ts +0 -65
  332. package/core/packages/util/src/UserFlagsBitField.test.ts +0 -39
  333. package/core/packages/util/src/UserFlagsBitField.ts +0 -48
  334. package/core/packages/util/src/deprecation.test.ts +0 -44
  335. package/core/packages/util/src/deprecation.ts +0 -28
  336. package/core/packages/util/src/emojiShortcodes.generated.ts +0 -5
  337. package/core/packages/util/src/emojiShortcodes.test.ts +0 -41
  338. package/core/packages/util/src/emojiShortcodes.ts +0 -22
  339. package/core/packages/util/src/formatters.test.ts +0 -65
  340. package/core/packages/util/src/formatters.ts +0 -35
  341. package/core/packages/util/src/index.ts +0 -34
  342. package/core/packages/util/src/resolvers.test.ts +0 -198
  343. package/core/packages/util/src/resolvers.ts +0 -127
  344. package/core/packages/util/src/tenorUtils.test.ts +0 -75
  345. package/core/packages/util/src/tenorUtils.ts +0 -86
  346. package/core/packages/util/tsconfig.json +0 -9
  347. package/core/packages/util/tsup.config.ts +0 -9
  348. package/core/packages/util/vitest.config.ts +0 -9
  349. package/core/packages/voice/README.md +0 -42
  350. package/core/packages/voice/package.json +0 -67
  351. package/core/packages/voice/src/LiveKitRtcConnection.receive.test.ts +0 -24
  352. package/core/packages/voice/src/LiveKitRtcConnection.ts +0 -1767
  353. package/core/packages/voice/src/VoiceConnection.ts +0 -413
  354. package/core/packages/voice/src/VoiceManager.receive.test.ts +0 -61
  355. package/core/packages/voice/src/VoiceManager.test.ts +0 -44
  356. package/core/packages/voice/src/VoiceManager.ts +0 -503
  357. package/core/packages/voice/src/exports.test.ts +0 -38
  358. package/core/packages/voice/src/index.ts +0 -51
  359. package/core/packages/voice/src/livekit.test.ts +0 -48
  360. package/core/packages/voice/src/livekit.ts +0 -33
  361. package/core/packages/voice/src/mp4box.d.ts +0 -32
  362. package/core/packages/voice/src/opusUtils.test.ts +0 -29
  363. package/core/packages/voice/src/opusUtils.ts +0 -86
  364. package/core/packages/voice/src/streamPreviewPlaceholder.test.ts +0 -16
  365. package/core/packages/voice/src/streamPreviewPlaceholder.ts +0 -8
  366. package/core/packages/voice/src/ws.d.ts +0 -1
  367. package/core/packages/voice/tsconfig.json +0 -5
  368. package/core/packages/voice/tsup.config.ts +0 -10
  369. package/core/packages/voice/vitest.config.ts +0 -9
  370. package/core/packages/ws/package.json +0 -52
  371. package/core/packages/ws/src/WebSocketManager.ts +0 -130
  372. package/core/packages/ws/src/WebSocketShard.ts +0 -296
  373. package/core/packages/ws/src/index.ts +0 -12
  374. package/core/packages/ws/src/utils/constants.test.ts +0 -46
  375. package/core/packages/ws/src/utils/constants.ts +0 -22
  376. package/core/packages/ws/src/utils/getWebSocket.ts +0 -55
  377. package/core/packages/ws/src/ws.d.ts +0 -10
  378. package/core/packages/ws/tsconfig.json +0 -9
  379. package/core/packages/ws/tsup.config.ts +0 -9
  380. package/core/pnpm-lock.yaml +0 -7033
  381. package/core/pnpm-workspace.yaml +0 -4
  382. package/core/scripts/generate-ai-rag.ts +0 -240
  383. package/core/scripts/generate-docs.ts +0 -143
  384. package/core/scripts/generate-emoji-shortcodes.ts +0 -58
  385. package/core/scripts/generate-types.ts +0 -6
  386. package/core/scripts/publish-ordered.js +0 -63
  387. package/core/scripts/test-cjs-require.mjs +0 -43
  388. package/core/scripts/test-esm-imports.mjs +0 -42
  389. package/core/scripts/test-package-exports.mjs +0 -98
  390. package/core/scripts/test-smoke.mjs +0 -103
  391. package/core/tsconfig.json +0 -18
  392. package/core/turbo.json +0 -30
  393. package/core/vitest.config.ts +0 -17
  394. package/core/wrangler.jsonc +0 -9
@@ -1,20 +0,0 @@
1
- {
2
- "name": "erinjs-docs",
3
- "version": "1.0.0",
4
- "private": true,
5
- "type": "module",
6
- "scripts": {
7
- "dev": "vitepress dev",
8
- "build": "node --import tsx/esm scripts/generate-api.ts api-data/latest/main.json && vitepress build",
9
- "preview": "vitepress preview",
10
- "generate-api": "node --import tsx/esm scripts/generate-api.ts api-data/latest/main.json",
11
- "migrate-guides": "node --import tsx/esm scripts/migrate-guides.ts ../docs/public/docs/latest/guides.json"
12
- },
13
- "dependencies": {
14
- "vitepress": "^1.6.3"
15
- },
16
- "devDependencies": {
17
- "typescript": "^5.6.0",
18
- "tsx": "^4.19.0"
19
- }
20
- }
@@ -1 +0,0 @@
1
- erin.js.org
@@ -1,243 +0,0 @@
1
- import { readFileSync, writeFileSync, mkdirSync, rmSync } from 'fs'
2
- import { join, dirname } from 'path'
3
- import { fileURLToPath } from 'url'
4
-
5
- const __dirname = dirname(fileURLToPath(import.meta.url))
6
-
7
- // ---- Types ----------------------------------------------------------------
8
-
9
- interface Param {
10
- name: string
11
- type: string
12
- optional: boolean
13
- description?: string
14
- }
15
-
16
- interface Method {
17
- name: string
18
- params: Param[]
19
- returns: string
20
- description?: string
21
- async: boolean
22
- source?: { file: string; line: number; path?: string }
23
- }
24
-
25
- interface Property {
26
- name: string
27
- type: string
28
- readonly: boolean
29
- optional: boolean
30
- description?: string
31
- }
32
-
33
- interface ApiClass {
34
- name: string
35
- description?: string
36
- constructor?: { params: Param[] }
37
- properties: Property[]
38
- methods: Method[]
39
- package: string
40
- source?: { file: string; line: number; path?: string }
41
- }
42
-
43
- interface ApiInterface {
44
- name: string
45
- description?: string
46
- properties: Property[]
47
- package: string
48
- source?: { file: string; line: number; path?: string }
49
- }
50
-
51
- interface EnumMember {
52
- name: string
53
- value: string
54
- }
55
-
56
- interface ApiEnum {
57
- name: string
58
- description?: string
59
- members: EnumMember[]
60
- package: string
61
- source?: { file: string; line: number; path?: string }
62
- }
63
-
64
- interface MainJson {
65
- meta: { version: string; date: number }
66
- package: string
67
- version: string
68
- packages: string[]
69
- classes: ApiClass[]
70
- interfaces: ApiInterface[]
71
- enums: ApiEnum[]
72
- }
73
-
74
- // ---- Helpers ---------------------------------------------------------------
75
-
76
- function escapeType(type: string): string {
77
- // Used inside <code> HTML tags in markdown table cells.
78
- // & must come first to avoid double-escaping.
79
- // < and > use HTML entities so the browser renders them correctly.
80
- // | must be \| so markdown-it's escapedSplit() strips the backslash
81
- // and keeps | as literal cell content instead of a column separator.
82
- return type
83
- .replace(/&/g, '&amp;')
84
- .replace(/</g, '&lt;')
85
- .replace(/>/g, '&gt;')
86
- .replace(/\|/g, '\\|')
87
- }
88
-
89
- function fixBranding(text: string): string {
90
- return text
91
- .replace(/@fluxerjs\//g, '@erinjs/')
92
- .replace(/\bFluxerError\b/g, 'ErinError')
93
- .replace(/\bFluxer\b/g, 'erin.js')
94
- }
95
-
96
- function renderPropertiesTable(properties: Property[]): string {
97
- if (properties.length === 0) return '_None_\n'
98
- const header = '| Name | Type | Readonly | Optional | Description |'
99
- const divider = '| --- | --- | --- | --- | --- |'
100
- const rows = properties.map(p =>
101
- `| \`${p.name}\` | <code>${escapeType(p.type)}</code> | ${p.readonly ? 'Yes' : 'No'} | ${p.optional ? 'Yes' : 'No'} | ${fixBranding(p.description ?? '')} |`
102
- )
103
- return [header, divider, ...rows].join('\n') + '\n'
104
- }
105
-
106
- function renderParamsTable(params: Param[]): string {
107
- if (params.length === 0) return '_None_\n'
108
- const header = '| Name | Type | Optional | Description |'
109
- const divider = '| --- | --- | --- | --- |'
110
- const rows = params.map(p =>
111
- `| \`${p.name}\` | <code>${escapeType(p.type)}</code> | ${p.optional ? 'Yes' : 'No'} | ${fixBranding(p.description ?? '')} |`
112
- )
113
- return [header, divider, ...rows].join('\n') + '\n'
114
- }
115
-
116
- function renderMethod(method: Method): string {
117
- const asyncTag = method.async ? ' `async`' : ''
118
- const parts = [`### \`${method.name}()\`${asyncTag}\n`]
119
- if (method.description) parts.push(`${fixBranding(method.description)}\n`)
120
- parts.push(`**Returns:** <code>${escapeType(method.returns)}</code>\n`)
121
- parts.push('**Parameters:**\n')
122
- parts.push(renderParamsTable(method.params))
123
- return parts.join('\n')
124
- }
125
-
126
- // ---- Generators ------------------------------------------------------------
127
-
128
- function generateClassPage(cls: ApiClass): string {
129
- const parts: string[] = [`# ${fixBranding(cls.name)}\n`]
130
- if (cls.package) parts.push(`**Package:** \`${cls.package.replace('@fluxerjs/', '@erinjs/')}\`\n`)
131
- if (cls.description) parts.push(`${fixBranding(cls.description)}\n`)
132
-
133
- if (cls.constructor && cls.constructor.params?.length > 0) {
134
- parts.push('## Constructor\n')
135
- parts.push(renderParamsTable(cls.constructor.params))
136
- }
137
-
138
- parts.push('## Properties\n')
139
- parts.push(renderPropertiesTable(cls.properties))
140
-
141
- if (cls.methods.length > 0) {
142
- parts.push('## Methods\n')
143
- parts.push(cls.methods.map(renderMethod).join('\n---\n\n'))
144
- }
145
-
146
- return parts.join('\n')
147
- }
148
-
149
- function generateInterfacePage(iface: ApiInterface): string {
150
- const parts: string[] = [`# ${fixBranding(iface.name)}\n`]
151
- if (iface.package) parts.push(`**Package:** \`${iface.package.replace('@fluxerjs/', '@erinjs/')}\`\n`)
152
- if (iface.description) parts.push(`${fixBranding(iface.description)}\n`)
153
- parts.push('## Properties\n')
154
- parts.push(renderPropertiesTable(iface.properties))
155
- return parts.join('\n')
156
- }
157
-
158
- function generateEnumPage(en: ApiEnum): string {
159
- const parts: string[] = [`# ${fixBranding(en.name)}\n`]
160
- if (en.package) parts.push(`**Package:** \`${en.package.replace('@fluxerjs/', '@erinjs/')}\`\n`)
161
- if (en.description) parts.push(`${fixBranding(en.description)}\n`)
162
- parts.push('## Members\n')
163
- const header = '| Name | Value |'
164
- const divider = '| --- | --- |'
165
- const rows = en.members.map(m => `| \`${m.name}\` | \`${m.value}\` |`)
166
- parts.push([header, divider, ...rows].join('\n') + '\n')
167
- return parts.join('\n')
168
- }
169
-
170
- function generateIndex(names: string[], section: string, basePath: string): string {
171
- const links = names.map(name => `- [${fixBranding(name)}](${basePath}/${name})`).join('\n')
172
- return `# ${section}\n\n${links}\n`
173
- }
174
-
175
- // ---- Filename deduplication (case-insensitive, for cross-platform Rollup compat) ---
176
-
177
- function makeUniqueSlug(name: string, seen: Map<string, number>): string {
178
- const key = name.toLowerCase()
179
- const count = seen.get(key) ?? 0
180
- seen.set(key, count + 1)
181
- return count === 0 ? name : `${name}-${count + 1}`
182
- }
183
-
184
- // ---- Main ------------------------------------------------------------------
185
-
186
- const inputPath = process.argv[2]
187
- if (!inputPath) {
188
- console.error('Usage: generate-api.ts <path-to-main.json>')
189
- process.exit(1)
190
- }
191
-
192
- const data: MainJson = JSON.parse(readFileSync(inputPath, 'utf8'))
193
- const apiDir = join(__dirname, '../v/latest/api')
194
-
195
- const classesDir = join(apiDir, 'classes')
196
- const interfacesDir = join(apiDir, 'interfaces')
197
- const enumsDir = join(apiDir, 'enums')
198
- // Clean stale files from previous runs before writing fresh output
199
- rmSync(apiDir, { recursive: true, force: true })
200
- mkdirSync(classesDir, { recursive: true })
201
- mkdirSync(interfacesDir, { recursive: true })
202
- mkdirSync(enumsDir, { recursive: true })
203
-
204
- const classSeen = new Map<string, number>()
205
- const classSlugs: Array<{ name: string; slug: string }> = []
206
- for (const cls of data.classes) {
207
- const slug = makeUniqueSlug(cls.name, classSeen)
208
- classSlugs.push({ name: cls.name, slug })
209
- writeFileSync(join(classesDir, `${slug}.md`), generateClassPage(cls), 'utf8')
210
- }
211
- writeFileSync(
212
- join(classesDir, 'index.md'),
213
- generateIndex(classSlugs.map(c => c.slug), 'Classes', '/v/latest/api/classes'),
214
- 'utf8'
215
- )
216
-
217
- const ifaceSeen = new Map<string, number>()
218
- const ifaceSlugs: Array<{ name: string; slug: string }> = []
219
- for (const iface of data.interfaces) {
220
- const slug = makeUniqueSlug(iface.name, ifaceSeen)
221
- ifaceSlugs.push({ name: iface.name, slug })
222
- writeFileSync(join(interfacesDir, `${slug}.md`), generateInterfacePage(iface), 'utf8')
223
- }
224
- writeFileSync(
225
- join(interfacesDir, 'index.md'),
226
- generateIndex(ifaceSlugs.map(i => i.slug), 'Interfaces', '/v/latest/api/interfaces'),
227
- 'utf8'
228
- )
229
-
230
- const enumSeen = new Map<string, number>()
231
- const enumSlugs: Array<{ name: string; slug: string }> = []
232
- for (const en of data.enums) {
233
- const slug = makeUniqueSlug(en.name, enumSeen)
234
- enumSlugs.push({ name: en.name, slug })
235
- writeFileSync(join(enumsDir, `${slug}.md`), generateEnumPage(en), 'utf8')
236
- }
237
- writeFileSync(
238
- join(enumsDir, 'index.md'),
239
- generateIndex(enumSlugs.map(e => e.slug), 'Enums', '/v/latest/api/enums'),
240
- 'utf8'
241
- )
242
-
243
- console.log(`Generated ${data.classes.length} classes, ${data.interfaces.length} interfaces, ${data.enums.length} enums`)
@@ -1,129 +0,0 @@
1
- import { readFileSync, writeFileSync, mkdirSync } from 'fs'
2
- import { join, dirname } from 'path'
3
- import { fileURLToPath } from 'url'
4
-
5
- const __dirname = dirname(fileURLToPath(import.meta.url))
6
-
7
- interface GuideTable {
8
- headers: string[]
9
- rows: string[][]
10
- codeColumns?: number[]
11
- }
12
-
13
- interface GuideSection {
14
- title?: string
15
- description?: string
16
- code?: string
17
- language?: string
18
- table?: GuideTable
19
- tip?: string
20
- alternateCode?: { label: string; code: string; language?: string }
21
- discordJsCompat?: boolean | string
22
- }
23
-
24
- interface Guide {
25
- id: string
26
- slug: string
27
- title: string
28
- description: string
29
- category: string
30
- sections: GuideSection[]
31
- }
32
-
33
- const inputPath = process.argv[2]
34
- if (!inputPath) {
35
- console.error('Usage: migrate-guides.ts <path-to-guides.json>')
36
- process.exit(1)
37
- }
38
-
39
- const guides: Guide[] = JSON.parse(readFileSync(inputPath, 'utf8'))
40
- const outDir = join(__dirname, '../docs/v/latest/guides')
41
- mkdirSync(outDir, { recursive: true })
42
-
43
- function escapeMarkdown(str: string): string {
44
- return str
45
- .replace(/@fluxerjs\//g, '@erinjs/')
46
- .replace(/fluxerjs/gi, 'erinjs')
47
- .replace(/Fluxer\.js/g, 'erin.js')
48
- .replace(/Fluxer SDK/g, 'erin.js SDK')
49
- .replace(/Fluxer API/g, 'erin.js API')
50
- .replace(/FluxerError/g, 'ErinError')
51
- .replace(/\bFluxer\b/g, 'erin.js')
52
- .replace(/FLUXER_BOT_TOKEN/g, 'ERIN_BOT_TOKEN')
53
- .replace(/FLUXER_SUPPRESS_DEPRECATION/g, 'ERIN_SUPPRESS_DEPRECATION')
54
- }
55
-
56
- function renderTable(table: GuideTable): string {
57
- const codeColumns = table.codeColumns ?? []
58
- const header = `| ${table.headers.join(' | ')} |`
59
- const divider = `| ${table.headers.map(() => '---').join(' | ')} |`
60
- const rows = table.rows.map(row =>
61
- `| ${row.map((cell, i) => (codeColumns.includes(i) ? `\`${cell}\`` : cell)).join(' | ')} |`
62
- )
63
- return [header, divider, ...rows].join('\n')
64
- }
65
-
66
- function renderSection(section: GuideSection): string {
67
- const parts: string[] = []
68
-
69
- if (section.title) {
70
- parts.push(`## ${escapeMarkdown(section.title)}\n`)
71
- }
72
-
73
- if (section.discordJsCompat) {
74
- const rawLink = typeof section.discordJsCompat === 'string' ? section.discordJsCompat : ''
75
- // Remap old /docs/classes/ and /docs/typedefs/ paths to new VitePress structure
76
- const link = rawLink
77
- .replace(/^\/docs\/classes\//, '/v/latest/api/classes/')
78
- .replace(/^\/docs\/typedefs\//, '/v/latest/api/interfaces/')
79
- if (link) {
80
- parts.push(`::: info Discord.js Compatible\nSee [API reference](${link}) for full details.\n:::\n`)
81
- } else {
82
- parts.push(`::: info Discord.js Compatible\nThis API follows Discord.js conventions.\n:::\n`)
83
- }
84
- }
85
-
86
- if (section.description) {
87
- parts.push(`${escapeMarkdown(section.description)}\n`)
88
- }
89
-
90
- if (section.tip) {
91
- parts.push(`::: tip\n${escapeMarkdown(section.tip)}\n:::\n`)
92
- }
93
-
94
- if (section.table) {
95
- parts.push(renderTable(section.table) + '\n')
96
- }
97
-
98
- if (section.code) {
99
- const lang = section.language ?? 'javascript'
100
- const codeFixed = escapeMarkdown(section.code)
101
-
102
- if (section.alternateCode) {
103
- const altLang = section.alternateCode.language ?? 'javascript'
104
- const altCode = escapeMarkdown(section.alternateCode.code)
105
- parts.push(
106
- `::: code-group\n\`\`\`${lang} [Default]\n${codeFixed}\n\`\`\`\n\`\`\`${altLang} [${section.alternateCode.label}]\n${altCode}\n\`\`\`\n:::\n`
107
- )
108
- } else {
109
- parts.push(`\`\`\`${lang}\n${codeFixed}\n\`\`\`\n`)
110
- }
111
- }
112
-
113
- return parts.join('\n')
114
- }
115
-
116
- for (const guide of guides) {
117
- const lines: string[] = [
118
- `# ${escapeMarkdown(guide.title)}\n`,
119
- `${escapeMarkdown(guide.description)}\n`,
120
- ...guide.sections.map(renderSection),
121
- ]
122
-
123
- const content = lines.join('\n')
124
- const outPath = join(outDir, `${guide.slug}.md`)
125
- writeFileSync(outPath, content, 'utf8')
126
- console.log(`wrote ${outPath}`)
127
- }
128
-
129
- console.log(`\nMigrated ${guides.length} guides to ${outDir}`)
@@ -1,11 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "ESNext",
5
- "moduleResolution": "bundler",
6
- "strict": true,
7
- "esModuleInterop": true,
8
- "skipLibCheck": true
9
- },
10
- "include": ["scripts/**/*", ".vitepress/**/*"]
11
- }
@@ -1,57 +0,0 @@
1
- # File Attachments by URL
2
-
3
- Attach files by passing a URL instead of buffer data. The SDK fetches the URL and uploads it as a normal attachment.
4
-
5
- ## Using a URL
6
-
7
- Pass { name, url } in the files array. The SDK fetches the URL (30s timeout), validates it with URL.canParse(), and uploads the result. Works with channel.send(), message.reply(), message.send(), webhook.send(), and client.channels.send().
8
-
9
- ```javascript
10
- import { Client, Events } from '@erinjs/core';
11
-
12
- const client = new Client({ intents: 0 });
13
-
14
- client.on(Events.MessageCreate, async (message) => {
15
- if (message.content === '!attachurl') {
16
- await message.reply({
17
- content: 'Image from URL:',
18
- files: [
19
- {
20
- name: 'image.png',
21
- url: 'https://example.com/image.png',
22
- },
23
- ],
24
- });
25
- }
26
- });
27
-
28
- await client.login(process.env.ERIN_BOT_TOKEN);
29
- ```
30
-
31
- ## Mixing buffers and URLs
32
-
33
- You can combine file data and URLs in the same message. Order is preserved; attachments metadata id matches the file index.
34
-
35
- ```javascript
36
- await message.reply({
37
- content: 'Two files:',
38
- files: [
39
- { name: 'local.txt', data: Buffer.from('Hello') },
40
- { name: 'remote.png', url: 'https://example.com/logo.png' },
41
- ],
42
- });
43
- ```
44
-
45
- ## Optional filename override
46
-
47
- Use filename to control the displayed attachment name independently from the local name used during upload.
48
-
49
- ```javascript
50
- files: [
51
- {
52
- name: 'fetched-image.png',
53
- url: 'https://example.com/image.jpg',
54
- filename: 'custom-display.png',
55
- },
56
- ]
57
- ```
@@ -1,62 +0,0 @@
1
- # File Attachments
2
-
3
- Upload files with messages and set attachment metadata (title, description, flags for spoiler, animated, explicit).
4
-
5
- ## Basic File Upload
6
-
7
- Pass files in your send options. Each file needs a name and data (Buffer, Blob, Uint8Array). Use with message.reply(), message.send(), or channel.send().
8
-
9
- ```javascript
10
- import { Client, Events } from '@erinjs/core';
11
- import { readFileSync } from 'fs';
12
-
13
- const client = new Client({ intents: 0 });
14
-
15
- client.on(Events.MessageCreate, async (message) => {
16
- if (message.content === '!file') {
17
- const data = Buffer.from('Hello from erin.js!', 'utf-8');
18
- await message.reply({
19
- content: 'Here is a file:',
20
- files: [{ name: 'hello.txt', data }],
21
- });
22
- }
23
- });
24
- ```
25
-
26
- ## Attachment Metadata
27
-
28
- When using files, you can pass attachments to set metadata per file: filename, title, description, and flags. The id in each attachment matches the file index (0, 1, 2...).
29
-
30
- ```javascript
31
- import { MessageAttachmentFlags } from '@erinjs/core';
32
-
33
- await message.reply({
34
- content: 'Spoiler image:',
35
- files: [{ name: 'secret.png', data: imageBuffer }],
36
- attachments: [
37
- {
38
- id: 0,
39
- filename: 'secret.png',
40
- title: 'Hidden image',
41
- flags: MessageAttachmentFlags.IS_SPOILER,
42
- },
43
- ],
44
- });
45
- ```
46
-
47
- ## Attachment Flags
48
-
49
- MessageAttachmentFlags: IS_SPOILER (8) blurs until clicked, CONTAINS_EXPLICIT_MEDIA (16) for explicit content, IS_ANIMATED (32) for GIFs and animated WebP. Combine with bitwise OR.
50
-
51
- ```javascript
52
- import { MessageAttachmentFlags } from '@erinjs/core';
53
-
54
- // Spoiler (blurred until clicked)
55
- flags: MessageAttachmentFlags.IS_SPOILER
56
-
57
- // Animated image (GIF, animated WebP)
58
- flags: MessageAttachmentFlags.IS_ANIMATED
59
-
60
- // Combine flags
61
- flags: MessageAttachmentFlags.IS_SPOILER | MessageAttachmentFlags.IS_ANIMATED
62
- ```
@@ -1,49 +0,0 @@
1
- # Basic Bot
2
-
3
- A minimal bot that responds to !ping with Pong. See examples/first-steps-bot.js for !hello, !avatar, !embed, !perms.
4
-
5
- ::: tip
6
- You can also use client.events for chainable, typed handlers with better autocomplete.
7
- :::
8
-
9
- ::: code-group
10
- ```javascript [Default]
11
- import { Client, Events } from '@erinjs/core';
12
-
13
- const client = new Client({ intents: 0 });
14
-
15
- client.on(Events.Ready, () => console.log('Ready!'));
16
- client.on(Events.MessageCreate, async (message) => {
17
- if (message.content === '!ping') {
18
- await message.reply('Pong!');
19
- }
20
- });
21
-
22
- await client.login(process.env.ERIN_BOT_TOKEN);
23
- ```
24
- ```javascript [client.events]
25
- import { Client, Events } from '@erinjs/core';
26
-
27
- const client = new Client({ intents: 0 });
28
-
29
- client
30
- .events.Ready(() => console.log('Ready!'))
31
- .events.MessageCreate(async (message) => {
32
- if (message.content === '!ping') await message.reply('Pong!');
33
- });
34
-
35
- await client.login(process.env.ERIN_BOT_TOKEN);
36
- ```
37
- :::
38
-
39
- ## Common mistakes
40
-
41
- Always await message.reply() to avoid unhandled promise rejections. Use intents: 0 (erin.js does not support intents yet). Set ERIN_SUPPRESS_DEPRECATION=1 to silence deprecation warnings.
42
-
43
- ```javascript
44
- // ❌ BAD — unhandled rejection if reply fails
45
- message.reply('Pong!');
46
-
47
- // ✅ GOOD
48
- await message.reply('Pong!');
49
- ```