mirror of
https://github.com/discordeno/discordeno.git
synced 2026-05-21 10:50:09 +00:00
docs: Update desired properties docs (#3940)
* Update docs for desired properties * Update examples to use createBot desiredProperties The BigBot and reaction roles examples use the Discordeno CLI * Migrate examples to v19 stable * Docs work
This commit is contained in:
@@ -13,14 +13,14 @@
|
||||
"setup-dd": ""
|
||||
},
|
||||
"dependencies": {
|
||||
"@discordeno/bot": "19.0.0-next.92bf166",
|
||||
"dd-cache-proxy": "^2.1.1",
|
||||
"@discordeno/bot": "19.0.0",
|
||||
"dd-cache-proxy": "^2.3.0",
|
||||
"dotenv": "^16.4.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@swc/cli": "^0.3.12",
|
||||
"@swc/core": "^1.6.3",
|
||||
"@types/node": "^20.14.6",
|
||||
"typescript": "^5.5.2"
|
||||
"@swc/cli": "^0.5.0",
|
||||
"@swc/core": "^1.9.2",
|
||||
"@types/node": "^22.9.0",
|
||||
"typescript": "^5.6.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,48 @@
|
||||
import { Intents, LogDepth, createBot, type logger as discordenoLogger } from '@discordeno/bot'
|
||||
import { type Collection, Intents, LogDepth, createBot, type logger as discordenoLogger } from '@discordeno/bot'
|
||||
import { createProxyCache } from 'dd-cache-proxy'
|
||||
import { configs } from './config.js'
|
||||
|
||||
export const bot = createProxyCache(
|
||||
createBot({
|
||||
const rawBot = createBot({
|
||||
token: configs.token,
|
||||
intents: Intents.Guilds,
|
||||
}),
|
||||
{
|
||||
desiredProperties: {
|
||||
interaction: {
|
||||
id: true,
|
||||
type: true,
|
||||
data: true,
|
||||
token: true,
|
||||
guildId: true,
|
||||
member: true,
|
||||
},
|
||||
guild: {
|
||||
id: true,
|
||||
name: true,
|
||||
roles: true,
|
||||
ownerId: true,
|
||||
},
|
||||
role: {
|
||||
id: true,
|
||||
guildId: true,
|
||||
permissions: true,
|
||||
},
|
||||
member: {
|
||||
id: true,
|
||||
roles: true,
|
||||
},
|
||||
channel: {
|
||||
id: true,
|
||||
},
|
||||
user: {
|
||||
id: true,
|
||||
username: true,
|
||||
discriminator: true,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
// TODO: remove this type hack when dd-cache-proxy fixes support for v19
|
||||
// @ts-expect-error
|
||||
export const bot = createProxyCache(rawBot, {
|
||||
desiredProps: {
|
||||
guilds: ['id', 'name', 'roles'],
|
||||
roles: ['id', 'guildId', 'permissions'],
|
||||
@@ -17,33 +52,20 @@ export const bot = createProxyCache(
|
||||
roles: true,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
)
|
||||
}) as CacheBot
|
||||
|
||||
export type CacheBot = typeof rawBot & {
|
||||
cache: {
|
||||
guild: {
|
||||
memory: Collection<bigint, typeof rawBot.transformers.$inferredTypes.guild>
|
||||
get: (guildId: bigint) => typeof rawBot.transformers.$inferredTypes.guild
|
||||
}
|
||||
role: {
|
||||
memory: Collection<bigint, typeof rawBot.transformers.$inferredTypes.role>
|
||||
get: (roleId: bigint) => typeof rawBot.transformers.$inferredTypes.role
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// By default, bot.logger will use an instance of the logger from @discordeno/bot, this logger supports depth and we need to change it, so we need to say to TS that we know what we are doing with as
|
||||
;(bot.logger as typeof discordenoLogger).setDepth(LogDepth.Full)
|
||||
|
||||
// Setup desired properties
|
||||
bot.transformers.desiredProperties.interaction.id = true
|
||||
bot.transformers.desiredProperties.interaction.type = true
|
||||
bot.transformers.desiredProperties.interaction.data = true
|
||||
bot.transformers.desiredProperties.interaction.token = true
|
||||
bot.transformers.desiredProperties.interaction.guildId = true
|
||||
bot.transformers.desiredProperties.interaction.member = true
|
||||
|
||||
bot.transformers.desiredProperties.guild.id = true
|
||||
bot.transformers.desiredProperties.guild.name = true
|
||||
bot.transformers.desiredProperties.guild.roles = true
|
||||
|
||||
bot.transformers.desiredProperties.role.id = true
|
||||
bot.transformers.desiredProperties.role.guildId = true
|
||||
bot.transformers.desiredProperties.role.permissions = true
|
||||
|
||||
bot.transformers.desiredProperties.member.id = true
|
||||
bot.transformers.desiredProperties.member.roles = true
|
||||
|
||||
bot.transformers.desiredProperties.channel.id = true
|
||||
|
||||
bot.transformers.desiredProperties.user.id = true
|
||||
bot.transformers.desiredProperties.user.username = true
|
||||
bot.transformers.desiredProperties.user.discriminator = true
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { type ApplicationCommandOption, type ApplicationCommandTypes, Collection, type Interaction } from '@discordeno/bot'
|
||||
import { type ApplicationCommandOption, type ApplicationCommandTypes, Collection } from '@discordeno/bot'
|
||||
import type { bot } from './bot.js'
|
||||
|
||||
export const commands = new Collection<string, Command>()
|
||||
|
||||
@@ -16,5 +17,5 @@ export interface Command {
|
||||
/** The options for this command */
|
||||
options?: ApplicationCommandOption[]
|
||||
/** This will be executed when the command is run. */
|
||||
execute: (interaction: Interaction, options: Record<string, unknown>) => unknown
|
||||
execute: (interaction: typeof bot.transformers.$inferredTypes.interaction, options: Record<string, unknown>) => unknown
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ createCommand({
|
||||
// Type based on the options declared above
|
||||
const { user, reason } = options as { user: UserResolved; reason?: string }
|
||||
|
||||
const guild = await bot.cache.guilds.get(interaction.guildId)
|
||||
const guild = await bot.cache.guild.get(interaction.guildId)
|
||||
|
||||
if (!guild) {
|
||||
await interaction.respond('An error has occurred')
|
||||
|
||||
@@ -12,6 +12,7 @@ bot.events.interactionCreate = async (interaction) => {
|
||||
return
|
||||
}
|
||||
|
||||
// @ts-expect-error commandOptionsParser requires the entire Interaction object, this is a bug in @discordeno/bot
|
||||
const options = commandOptionsParser(interaction)
|
||||
|
||||
try {
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
import assert from 'node:assert'
|
||||
import { BitwisePermissionFlags, type Guild, type Member } from '@discordeno/bot'
|
||||
import { BitwisePermissionFlags } from '@discordeno/bot'
|
||||
import type { bot } from '../bot.js'
|
||||
|
||||
export async function calculateMemberPermissions(guild: Guild, member: Member): Promise<bigint> {
|
||||
export async function calculateMemberPermissions(
|
||||
guild: typeof bot.transformers.$inferredTypes.guild,
|
||||
member: typeof bot.transformers.$inferredTypes.member,
|
||||
) {
|
||||
if (member.id === guild.ownerId) return 8n
|
||||
|
||||
let permissions = guild.roles.get(guild.id)?.permissions.bitfield
|
||||
|
||||
@@ -5,54 +5,56 @@ __metadata:
|
||||
version: 8
|
||||
cacheKey: 10
|
||||
|
||||
"@discordeno/bot@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/bot@npm:19.0.0-next.92bf166"
|
||||
"@discordeno/bot@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/bot@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/gateway": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/rest": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/types": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/utils": "npm:19.0.0-next.92bf166"
|
||||
checksum: 3020e74c774eae34307d434ad38f983e90839dc5fad7578f3cda4fba6c1efb7a22c4f4cdcfff58c54b62cc14976ad974256955d5117e490f78ec9e835e02c682
|
||||
"@discordeno/gateway": "npm:19.0.0"
|
||||
"@discordeno/rest": "npm:19.0.0"
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
"@discordeno/utils": "npm:19.0.0"
|
||||
checksum: 86ac4cd61761c1b3c3fa82db08742dcdba18ffb1b6042455c8a5e8cdd02231543c3c2d43dfb29084d44034cafebdc6ab51969c5930281ab2be83d5b159b69726
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/gateway@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/gateway@npm:19.0.0-next.92bf166"
|
||||
"@discordeno/gateway@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/gateway@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/types": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/utils": "npm:19.0.0-next.92bf166"
|
||||
ws: "npm:^8.16.0"
|
||||
checksum: 6a11ca7a4cb98f48726664d0baa27d04e26342bf94d6e439494e462636af20d17b567e9d3e2e478465aabcecb98a21e54b860b39b9f1022eef922e76d947ddcb
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
"@discordeno/utils": "npm:19.0.0"
|
||||
fzstd: "npm:^0.1.1"
|
||||
ws: "npm:^8.18.0"
|
||||
dependenciesMeta:
|
||||
fzstd:
|
||||
optional: true
|
||||
checksum: 241ec9981bf47ff894990889477fbc1ce91361648534189361e9dca4d927aba15c941604da29ba135cb20871fac7e82e5cc1eed1df6ef3d86bbcdfdca3448649
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/rest@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/rest@npm:19.0.0-next.92bf166"
|
||||
"@discordeno/rest@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/rest@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/types": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/utils": "npm:19.0.0-next.92bf166"
|
||||
dotenv: "npm:^16.4.5"
|
||||
checksum: 45f6ba4791003b77c883e991ad348597197d70e25e335b8628a03bd2effa8e2047a2f987f4c0b6ee8b17c01f77055d7a1ddc9f5350eb8f1c8ff8c8d39f91d787
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
"@discordeno/utils": "npm:19.0.0"
|
||||
checksum: e1ce6c092566e58c5d407a5fee7c6c38f988251abcbaaf14beaa084691b4c52dc4f6c54f46974735090fafe174b1914374edd074bffd441e11d76851575a136f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/types@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/types@npm:19.0.0-next.92bf166"
|
||||
checksum: f88e78a18e51c179b94ef14e8bcdd6b5e6c5f25bdd6c4308bec121e5e59533612b36ed0e7a447daedc009053e1e30c6c8e13b2276bb1ce7e2f840ff58473a2ef
|
||||
"@discordeno/types@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/types@npm:19.0.0"
|
||||
checksum: aaf832d6510b7aa0ead75bd5c1d1990f3a77fa980d40122d6d092abc571280aed6864b10fdda705d70bd7ba73961f4b3a0ee28c6b7cabb09595574f65fcfd61c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/utils@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/utils@npm:19.0.0-next.92bf166"
|
||||
"@discordeno/utils@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/utils@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/types": "npm:19.0.0-next.92bf166"
|
||||
tweetnacl: "npm:^1.0.3"
|
||||
checksum: 7962a057ba5908936e4224df70b9ceaffcb8ec7ad220a999b36fc0601365b380bb0de01b6adfa4c36250247e3d15e22215fc63bbe3634b932434411c5f4ca13d
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
checksum: b2d430099672cfb8b68d6a9bd12803cd69cb909dc1f368d8305a4bb1067499babff05997a29599b51029d0add435bea4a03929140abf77dd83e1741baaa37855
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -149,9 +151,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/cli@npm:^0.3.12":
|
||||
version: 0.3.12
|
||||
resolution: "@swc/cli@npm:0.3.12"
|
||||
"@swc/cli@npm:^0.5.0":
|
||||
version: 0.5.0
|
||||
resolution: "@swc/cli@npm:0.5.0"
|
||||
dependencies:
|
||||
"@mole-inc/bin-wrapper": "npm:^8.0.1"
|
||||
"@swc/counter": "npm:^0.1.3"
|
||||
@@ -172,96 +174,96 @@ __metadata:
|
||||
spack: bin/spack.js
|
||||
swc: bin/swc.js
|
||||
swcx: bin/swcx.js
|
||||
checksum: fee260434fad8eed0328f4db17f42ce0864b93b90fcb02f3f0eb3aad994b5a6ae4bfdfb6d2329377e0cd8d07adc61cca42e290bf0005c1ab4d004d4a0b152db4
|
||||
checksum: 033b682f1c25c8fae731414d2a463a0e455452bf9349c025cd88ea63ee1e5a589032eb206063fd925daf12065c9f1e5b4680cef50cc24674681c4d2583b7dca0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-darwin-arm64@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-darwin-arm64@npm:1.6.3"
|
||||
"@swc/core-darwin-arm64@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-darwin-arm64@npm:1.9.2"
|
||||
conditions: os=darwin & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-darwin-x64@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-darwin-x64@npm:1.6.3"
|
||||
"@swc/core-darwin-x64@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-darwin-x64@npm:1.9.2"
|
||||
conditions: os=darwin & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm-gnueabihf@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.6.3"
|
||||
"@swc/core-linux-arm-gnueabihf@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.9.2"
|
||||
conditions: os=linux & cpu=arm
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm64-gnu@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-arm64-gnu@npm:1.6.3"
|
||||
"@swc/core-linux-arm64-gnu@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-arm64-gnu@npm:1.9.2"
|
||||
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm64-musl@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-arm64-musl@npm:1.6.3"
|
||||
"@swc/core-linux-arm64-musl@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-arm64-musl@npm:1.9.2"
|
||||
conditions: os=linux & cpu=arm64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-x64-gnu@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-x64-gnu@npm:1.6.3"
|
||||
"@swc/core-linux-x64-gnu@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-x64-gnu@npm:1.9.2"
|
||||
conditions: os=linux & cpu=x64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-x64-musl@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-x64-musl@npm:1.6.3"
|
||||
"@swc/core-linux-x64-musl@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-x64-musl@npm:1.9.2"
|
||||
conditions: os=linux & cpu=x64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-arm64-msvc@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-win32-arm64-msvc@npm:1.6.3"
|
||||
"@swc/core-win32-arm64-msvc@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-win32-arm64-msvc@npm:1.9.2"
|
||||
conditions: os=win32 & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-ia32-msvc@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-win32-ia32-msvc@npm:1.6.3"
|
||||
"@swc/core-win32-ia32-msvc@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-win32-ia32-msvc@npm:1.9.2"
|
||||
conditions: os=win32 & cpu=ia32
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-x64-msvc@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-win32-x64-msvc@npm:1.6.3"
|
||||
"@swc/core-win32-x64-msvc@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-win32-x64-msvc@npm:1.9.2"
|
||||
conditions: os=win32 & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core@npm:^1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core@npm:1.6.3"
|
||||
"@swc/core@npm:^1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core@npm:1.9.2"
|
||||
dependencies:
|
||||
"@swc/core-darwin-arm64": "npm:1.6.3"
|
||||
"@swc/core-darwin-x64": "npm:1.6.3"
|
||||
"@swc/core-linux-arm-gnueabihf": "npm:1.6.3"
|
||||
"@swc/core-linux-arm64-gnu": "npm:1.6.3"
|
||||
"@swc/core-linux-arm64-musl": "npm:1.6.3"
|
||||
"@swc/core-linux-x64-gnu": "npm:1.6.3"
|
||||
"@swc/core-linux-x64-musl": "npm:1.6.3"
|
||||
"@swc/core-win32-arm64-msvc": "npm:1.6.3"
|
||||
"@swc/core-win32-ia32-msvc": "npm:1.6.3"
|
||||
"@swc/core-win32-x64-msvc": "npm:1.6.3"
|
||||
"@swc/core-darwin-arm64": "npm:1.9.2"
|
||||
"@swc/core-darwin-x64": "npm:1.9.2"
|
||||
"@swc/core-linux-arm-gnueabihf": "npm:1.9.2"
|
||||
"@swc/core-linux-arm64-gnu": "npm:1.9.2"
|
||||
"@swc/core-linux-arm64-musl": "npm:1.9.2"
|
||||
"@swc/core-linux-x64-gnu": "npm:1.9.2"
|
||||
"@swc/core-linux-x64-musl": "npm:1.9.2"
|
||||
"@swc/core-win32-arm64-msvc": "npm:1.9.2"
|
||||
"@swc/core-win32-ia32-msvc": "npm:1.9.2"
|
||||
"@swc/core-win32-x64-msvc": "npm:1.9.2"
|
||||
"@swc/counter": "npm:^0.1.3"
|
||||
"@swc/types": "npm:^0.1.8"
|
||||
"@swc/types": "npm:^0.1.15"
|
||||
peerDependencies:
|
||||
"@swc/helpers": "*"
|
||||
dependenciesMeta:
|
||||
@@ -288,7 +290,7 @@ __metadata:
|
||||
peerDependenciesMeta:
|
||||
"@swc/helpers":
|
||||
optional: true
|
||||
checksum: b4c84a083ecabb0280ba53dffa65a5a575321de94081ad52bd12027fe3b5c8957978f2211b6036e2e28d904dd046fca238106c2106b32d02b752808a51193d35
|
||||
checksum: 6793f2014a016f90b1c41a695f6d3a14d574e129e78f651fe3d6dbacbc6d0836ab7a7eb445d873a302b060b25ae34c4e09d0f94574a71da47c6424c5fa58aa10
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -299,12 +301,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/types@npm:^0.1.8":
|
||||
version: 0.1.8
|
||||
resolution: "@swc/types@npm:0.1.8"
|
||||
"@swc/types@npm:^0.1.15":
|
||||
version: 0.1.15
|
||||
resolution: "@swc/types@npm:0.1.15"
|
||||
dependencies:
|
||||
"@swc/counter": "npm:^0.1.3"
|
||||
checksum: 2d1cda35116e03714137c1c37f4493efe0e26e88285ecc9dcdf6256a77984e367ea7b5f31d650f110fdcfd6ac53dff3ec77f841787ca328d2efa7b07ef1ac318
|
||||
checksum: d8bf063aeebac51290d1edf0cec52e2e5b5afced0dc6933510a86947e10f0f77976bc14c3efb5e8f265a9cbdeb0929e00e44b2f82c6d0f273997c5029417b769
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -352,7 +354,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/node@npm:*, @types/node@npm:^20.14.6":
|
||||
"@types/node@npm:*":
|
||||
version: 20.14.6
|
||||
resolution: "@types/node@npm:20.14.6"
|
||||
dependencies:
|
||||
@@ -361,6 +363,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/node@npm:^22.9.0":
|
||||
version: 22.9.0
|
||||
resolution: "@types/node@npm:22.9.0"
|
||||
dependencies:
|
||||
undici-types: "npm:~6.19.8"
|
||||
checksum: a7df3426891868b0f5fb03e46aeddd8446178233521c624a44531c92a040cf08a82d8235f7e1e02af731fd16984665d4d71f3418caf9c2788313b10f040d615d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/responselike@npm:^1.0.0":
|
||||
version: 1.0.3
|
||||
resolution: "@types/responselike@npm:1.0.3"
|
||||
@@ -612,22 +623,22 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "dd-advanced-bot@workspace:."
|
||||
dependencies:
|
||||
"@discordeno/bot": "npm:19.0.0-next.92bf166"
|
||||
"@swc/cli": "npm:^0.3.12"
|
||||
"@swc/core": "npm:^1.6.3"
|
||||
"@types/node": "npm:^20.14.6"
|
||||
dd-cache-proxy: "npm:^2.1.1"
|
||||
"@discordeno/bot": "npm:19.0.0"
|
||||
"@swc/cli": "npm:^0.5.0"
|
||||
"@swc/core": "npm:^1.9.2"
|
||||
"@types/node": "npm:^22.9.0"
|
||||
dd-cache-proxy: "npm:^2.3.0"
|
||||
dotenv: "npm:^16.4.5"
|
||||
typescript: "npm:^5.5.2"
|
||||
typescript: "npm:^5.6.3"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"dd-cache-proxy@npm:^2.1.1":
|
||||
version: 2.1.1
|
||||
resolution: "dd-cache-proxy@npm:2.1.1"
|
||||
"dd-cache-proxy@npm:^2.3.0":
|
||||
version: 2.3.0
|
||||
resolution: "dd-cache-proxy@npm:2.3.0"
|
||||
peerDependencies:
|
||||
"@discordeno/bot": 19.0.0-next.d69e537
|
||||
checksum: 082234277fd0dc91477b0ac4a938aea40b8d3ffa60e7e458ce570b2f4c919671ecd5b601f7ff6c6157a5e4e5eaa3786e6a1884cccb020a938cb76e4e300f0f72
|
||||
"@discordeno/bot": 19.0.0-next.b85c6d5
|
||||
checksum: eda7d43717567b7836208c9690bbc0a547179ff7319daf5ccc08c83bc44d481854bcb474075021646ddc8560015d8b0d5e5c66f72ace67f858484b805a40f5a1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -890,6 +901,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fzstd@npm:^0.1.1":
|
||||
version: 0.1.1
|
||||
resolution: "fzstd@npm:0.1.1"
|
||||
checksum: 455b968aeb764f06d9c39a5c8b45eefd645f7ee9129896e890eafb8ab367482f8495de12907021a32f6544494305a42a2056c30c63efac06181e6efcdab3fe78
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"get-stream@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "get-stream@npm:3.0.0"
|
||||
@@ -1973,30 +1991,23 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tweetnacl@npm:^1.0.3":
|
||||
version: 1.0.3
|
||||
resolution: "tweetnacl@npm:1.0.3"
|
||||
checksum: ca122c2f86631f3c0f6d28efb44af2a301d4a557a62a3e2460286b08e97567b258c2212e4ad1cfa22bd6a57edcdc54ba76ebe946847450ab0999e6d48ccae332
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript@npm:^5.5.2":
|
||||
version: 5.5.2
|
||||
resolution: "typescript@npm:5.5.2"
|
||||
"typescript@npm:^5.6.3":
|
||||
version: 5.6.3
|
||||
resolution: "typescript@npm:5.6.3"
|
||||
bin:
|
||||
tsc: bin/tsc
|
||||
tsserver: bin/tsserver
|
||||
checksum: 9118b20f248e76b0dbff8737fef65dfa89d02668d4e633d2c5ceac99033a0ca5e8a1c1a53bc94da68e8f67677a88f318663dde859c9e9a09c1e116415daec2ba
|
||||
checksum: c328e418e124b500908781d9f7b9b93cf08b66bf5936d94332b463822eea2f4e62973bfb3b8a745fdc038785cb66cf59d1092bac3ec2ac6a3e5854687f7833f1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript@patch:typescript@npm%3A^5.5.2#optional!builtin<compat/typescript>":
|
||||
version: 5.5.2
|
||||
resolution: "typescript@patch:typescript@npm%3A5.5.2#optional!builtin<compat/typescript>::version=5.5.2&hash=e012d7"
|
||||
"typescript@patch:typescript@npm%3A^5.6.3#optional!builtin<compat/typescript>":
|
||||
version: 5.6.3
|
||||
resolution: "typescript@patch:typescript@npm%3A5.6.3#optional!builtin<compat/typescript>::version=5.6.3&hash=e012d7"
|
||||
bin:
|
||||
tsc: bin/tsc
|
||||
tsserver: bin/tsserver
|
||||
checksum: 28b3de2ddaf63a7620e7ddbe5d377af71ce93ecc558c41bf0e3d88661d8e6e7aa6c7739164fef98055f69819e41faca49252938ef3633a3dff2734cca6a9042e
|
||||
checksum: dc4bec403cd33a204b655b1152a096a08e7bad2c931cb59ef8ff26b6f2aa541bf98f09fc157958a60c921b1983a8dde9a85b692f9de60fa8f574fd131e3ae4dd
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -2007,6 +2018,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"undici-types@npm:~6.19.8":
|
||||
version: 6.19.8
|
||||
resolution: "undici-types@npm:6.19.8"
|
||||
checksum: cf0b48ed4fc99baf56584afa91aaffa5010c268b8842f62e02f752df209e3dea138b372a60a963b3b2576ed932f32329ce7ddb9cb5f27a6c83040d8cd74b7a70
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"unique-filename@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "unique-filename@npm:3.0.0"
|
||||
@@ -2094,7 +2112,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ws@npm:^8.16.0":
|
||||
"ws@npm:^8.18.0":
|
||||
version: 8.18.0
|
||||
resolution: "ws@npm:8.18.0"
|
||||
peerDependencies:
|
||||
|
||||
@@ -13,15 +13,15 @@
|
||||
"setup-dd": ""
|
||||
},
|
||||
"dependencies": {
|
||||
"@discordeno/bot": "19.0.0-next.92bf166",
|
||||
"@discordeno/bot": "19.0.0",
|
||||
"chalk": "^5.3.0",
|
||||
"dd-cache-proxy": "^2.1.1",
|
||||
"dd-cache-proxy": "^2.3.0",
|
||||
"dotenv": "^16.4.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@swc/cli": "^0.3.12",
|
||||
"@swc/core": "^1.6.3",
|
||||
"@types/node": "^20.14.6",
|
||||
"typescript": "^5.5.2"
|
||||
"@swc/cli": "^0.5.0",
|
||||
"@swc/core": "^1.9.2",
|
||||
"@types/node": "^22.9.0",
|
||||
"typescript": "^5.6.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,32 @@
|
||||
import { Intents, createBot } from '@discordeno/bot'
|
||||
import { type Collection, Intents, createBot } from '@discordeno/bot'
|
||||
import { createProxyCache } from 'dd-cache-proxy'
|
||||
import { configs } from './config.js'
|
||||
|
||||
export const bot = createProxyCache(
|
||||
createBot({
|
||||
const rawBot = createBot({
|
||||
token: configs.token,
|
||||
intents: Intents.Guilds,
|
||||
}),
|
||||
{
|
||||
desiredProperties: {
|
||||
interaction: {
|
||||
id: true,
|
||||
type: true,
|
||||
data: true,
|
||||
user: true,
|
||||
token: true,
|
||||
guildId: true,
|
||||
},
|
||||
guild: {
|
||||
id: true,
|
||||
name: true,
|
||||
},
|
||||
user: {
|
||||
username: true,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
// TODO: remove this type hack when dd-cache-proxy fixes support for v19
|
||||
// @ts-expect-error
|
||||
export const bot = createProxyCache(rawBot, {
|
||||
desiredProps: {
|
||||
guilds: ['id', 'name'],
|
||||
},
|
||||
@@ -15,18 +34,13 @@ export const bot = createProxyCache(
|
||||
guilds: true,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
)
|
||||
}) as CacheBot
|
||||
|
||||
// Setup desired properties
|
||||
bot.transformers.desiredProperties.interaction.id = true
|
||||
bot.transformers.desiredProperties.interaction.type = true
|
||||
bot.transformers.desiredProperties.interaction.data = true
|
||||
bot.transformers.desiredProperties.interaction.user = true
|
||||
bot.transformers.desiredProperties.interaction.token = true
|
||||
bot.transformers.desiredProperties.interaction.guildId = true
|
||||
|
||||
bot.transformers.desiredProperties.guild.id = true
|
||||
bot.transformers.desiredProperties.guild.name = true
|
||||
|
||||
bot.transformers.desiredProperties.user.username = true
|
||||
export type CacheBot = typeof rawBot & {
|
||||
cache: {
|
||||
guild: {
|
||||
memory: Collection<bigint, typeof rawBot.transformers.$inferredTypes.guild>
|
||||
get: (guildId: bigint) => typeof rawBot.transformers.$inferredTypes.guild
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { type ApplicationCommandOption, type ApplicationCommandTypes, Collection, type Interaction } from '@discordeno/bot'
|
||||
import { type ApplicationCommandOption, type ApplicationCommandTypes, Collection } from '@discordeno/bot'
|
||||
import type { bot } from './bot.js'
|
||||
|
||||
export const commands = new Collection<string, Command>()
|
||||
|
||||
@@ -14,7 +15,7 @@ export interface Command {
|
||||
type: ApplicationCommandTypes
|
||||
/** Defaults to `Guild` */
|
||||
scope?: 'Global' | 'Guild'
|
||||
execute: (interaction: Interaction) => unknown
|
||||
execute: (interaction: typeof bot.transformers.$inferredTypes.interaction) => unknown
|
||||
subcommands?: Array<SubCommandGroup | SubCommand>
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { bot } from '../bot.js'
|
||||
import { updateGuildCommands } from '../utils/helpers.js'
|
||||
|
||||
bot.events.guildCreate = async (guild) => await updateGuildCommands(bot, guild)
|
||||
bot.events.guildCreate = async (guild) => await updateGuildCommands(guild)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { ApplicationCommandOptionTypes, type Guild, hasProperty } from '@discordeno/bot'
|
||||
import { ApplicationCommandOptionTypes, hasProperty } from '@discordeno/bot'
|
||||
import chalk from 'chalk'
|
||||
import { bot } from '../bot.js'
|
||||
import { commands } from '../commands.js'
|
||||
@@ -11,7 +11,7 @@ bot.events.interactionCreate = async (interaction) => {
|
||||
if (!interaction.data || !interaction.id) return
|
||||
|
||||
let guildName = 'Direct Message'
|
||||
let guild = {} as Guild
|
||||
let guild = {} as typeof bot.transformers.$inferredTypes.guild
|
||||
|
||||
// Set guild, if there was an error getting the guild, then just say it was a DM. (What else are we going to do?)
|
||||
if (interaction.guildId) {
|
||||
|
||||
@@ -12,7 +12,7 @@ bot.events.ready = async ({ shardId }) => {
|
||||
activities: [
|
||||
{
|
||||
name: 'Discordeno is the Best Lib',
|
||||
type: ActivityTypes.Game,
|
||||
type: ActivityTypes.Playing,
|
||||
timestamps: {
|
||||
start: Date.now(),
|
||||
},
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { type Bot, type CreateApplicationCommand, type Guild, hasProperty } from '@discordeno/bot'
|
||||
import { type CreateApplicationCommand, hasProperty } from '@discordeno/bot'
|
||||
import { bot } from '../bot.js'
|
||||
import { type SubCommand, type SubCommandGroup, commands } from '../commands.js'
|
||||
import { createLogger } from './logger.js'
|
||||
@@ -35,7 +35,7 @@ export async function updateCommands(scope?: 'Guild' | 'Global'): Promise<void>
|
||||
|
||||
if (perGuildCommands.length && (scope === 'Guild' || scope === undefined)) {
|
||||
await Promise.all(
|
||||
bot.cache.guilds.memory.map(async (guild: Guild) => {
|
||||
bot.cache.guild.memory.map(async (guild) => {
|
||||
await bot.helpers.upsertGuildApplicationCommands(guild.id, perGuildCommands)
|
||||
}),
|
||||
)
|
||||
@@ -43,7 +43,7 @@ export async function updateCommands(scope?: 'Guild' | 'Global'): Promise<void>
|
||||
}
|
||||
|
||||
/** Update commands for a guild */
|
||||
export async function updateGuildCommands(bot: Bot, guild: Guild): Promise<void> {
|
||||
export async function updateGuildCommands(guild: typeof bot.transformers.$inferredTypes.guild): Promise<void> {
|
||||
const perGuildCommands: MakeRequired<CreateApplicationCommand, 'name'>[] = []
|
||||
|
||||
for (const command of commands.values()) {
|
||||
@@ -62,8 +62,8 @@ export async function updateGuildCommands(bot: Bot, guild: Guild): Promise<void>
|
||||
}
|
||||
}
|
||||
|
||||
export async function getGuildFromId(guildId: bigint): Promise<Guild> {
|
||||
const cached = await bot.cache.guilds.get(guildId)
|
||||
export async function getGuildFromId(guildId: bigint) {
|
||||
const cached = await bot.cache.guild.get(guildId)
|
||||
|
||||
if (cached) return cached
|
||||
|
||||
|
||||
@@ -5,54 +5,56 @@ __metadata:
|
||||
version: 8
|
||||
cacheKey: 10
|
||||
|
||||
"@discordeno/bot@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/bot@npm:19.0.0-next.92bf166"
|
||||
"@discordeno/bot@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/bot@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/gateway": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/rest": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/types": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/utils": "npm:19.0.0-next.92bf166"
|
||||
checksum: 3020e74c774eae34307d434ad38f983e90839dc5fad7578f3cda4fba6c1efb7a22c4f4cdcfff58c54b62cc14976ad974256955d5117e490f78ec9e835e02c682
|
||||
"@discordeno/gateway": "npm:19.0.0"
|
||||
"@discordeno/rest": "npm:19.0.0"
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
"@discordeno/utils": "npm:19.0.0"
|
||||
checksum: 86ac4cd61761c1b3c3fa82db08742dcdba18ffb1b6042455c8a5e8cdd02231543c3c2d43dfb29084d44034cafebdc6ab51969c5930281ab2be83d5b159b69726
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/gateway@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/gateway@npm:19.0.0-next.92bf166"
|
||||
"@discordeno/gateway@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/gateway@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/types": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/utils": "npm:19.0.0-next.92bf166"
|
||||
ws: "npm:^8.16.0"
|
||||
checksum: 6a11ca7a4cb98f48726664d0baa27d04e26342bf94d6e439494e462636af20d17b567e9d3e2e478465aabcecb98a21e54b860b39b9f1022eef922e76d947ddcb
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
"@discordeno/utils": "npm:19.0.0"
|
||||
fzstd: "npm:^0.1.1"
|
||||
ws: "npm:^8.18.0"
|
||||
dependenciesMeta:
|
||||
fzstd:
|
||||
optional: true
|
||||
checksum: 241ec9981bf47ff894990889477fbc1ce91361648534189361e9dca4d927aba15c941604da29ba135cb20871fac7e82e5cc1eed1df6ef3d86bbcdfdca3448649
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/rest@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/rest@npm:19.0.0-next.92bf166"
|
||||
"@discordeno/rest@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/rest@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/types": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/utils": "npm:19.0.0-next.92bf166"
|
||||
dotenv: "npm:^16.4.5"
|
||||
checksum: 45f6ba4791003b77c883e991ad348597197d70e25e335b8628a03bd2effa8e2047a2f987f4c0b6ee8b17c01f77055d7a1ddc9f5350eb8f1c8ff8c8d39f91d787
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
"@discordeno/utils": "npm:19.0.0"
|
||||
checksum: e1ce6c092566e58c5d407a5fee7c6c38f988251abcbaaf14beaa084691b4c52dc4f6c54f46974735090fafe174b1914374edd074bffd441e11d76851575a136f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/types@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/types@npm:19.0.0-next.92bf166"
|
||||
checksum: f88e78a18e51c179b94ef14e8bcdd6b5e6c5f25bdd6c4308bec121e5e59533612b36ed0e7a447daedc009053e1e30c6c8e13b2276bb1ce7e2f840ff58473a2ef
|
||||
"@discordeno/types@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/types@npm:19.0.0"
|
||||
checksum: aaf832d6510b7aa0ead75bd5c1d1990f3a77fa980d40122d6d092abc571280aed6864b10fdda705d70bd7ba73961f4b3a0ee28c6b7cabb09595574f65fcfd61c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/utils@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/utils@npm:19.0.0-next.92bf166"
|
||||
"@discordeno/utils@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/utils@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/types": "npm:19.0.0-next.92bf166"
|
||||
tweetnacl: "npm:^1.0.3"
|
||||
checksum: 7962a057ba5908936e4224df70b9ceaffcb8ec7ad220a999b36fc0601365b380bb0de01b6adfa4c36250247e3d15e22215fc63bbe3634b932434411c5f4ca13d
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
checksum: b2d430099672cfb8b68d6a9bd12803cd69cb909dc1f368d8305a4bb1067499babff05997a29599b51029d0add435bea4a03929140abf77dd83e1741baaa37855
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -149,9 +151,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/cli@npm:^0.3.12":
|
||||
version: 0.3.12
|
||||
resolution: "@swc/cli@npm:0.3.12"
|
||||
"@swc/cli@npm:^0.5.0":
|
||||
version: 0.5.0
|
||||
resolution: "@swc/cli@npm:0.5.0"
|
||||
dependencies:
|
||||
"@mole-inc/bin-wrapper": "npm:^8.0.1"
|
||||
"@swc/counter": "npm:^0.1.3"
|
||||
@@ -172,96 +174,96 @@ __metadata:
|
||||
spack: bin/spack.js
|
||||
swc: bin/swc.js
|
||||
swcx: bin/swcx.js
|
||||
checksum: fee260434fad8eed0328f4db17f42ce0864b93b90fcb02f3f0eb3aad994b5a6ae4bfdfb6d2329377e0cd8d07adc61cca42e290bf0005c1ab4d004d4a0b152db4
|
||||
checksum: 033b682f1c25c8fae731414d2a463a0e455452bf9349c025cd88ea63ee1e5a589032eb206063fd925daf12065c9f1e5b4680cef50cc24674681c4d2583b7dca0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-darwin-arm64@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-darwin-arm64@npm:1.6.3"
|
||||
"@swc/core-darwin-arm64@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-darwin-arm64@npm:1.9.2"
|
||||
conditions: os=darwin & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-darwin-x64@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-darwin-x64@npm:1.6.3"
|
||||
"@swc/core-darwin-x64@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-darwin-x64@npm:1.9.2"
|
||||
conditions: os=darwin & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm-gnueabihf@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.6.3"
|
||||
"@swc/core-linux-arm-gnueabihf@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.9.2"
|
||||
conditions: os=linux & cpu=arm
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm64-gnu@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-arm64-gnu@npm:1.6.3"
|
||||
"@swc/core-linux-arm64-gnu@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-arm64-gnu@npm:1.9.2"
|
||||
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm64-musl@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-arm64-musl@npm:1.6.3"
|
||||
"@swc/core-linux-arm64-musl@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-arm64-musl@npm:1.9.2"
|
||||
conditions: os=linux & cpu=arm64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-x64-gnu@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-x64-gnu@npm:1.6.3"
|
||||
"@swc/core-linux-x64-gnu@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-x64-gnu@npm:1.9.2"
|
||||
conditions: os=linux & cpu=x64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-x64-musl@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-x64-musl@npm:1.6.3"
|
||||
"@swc/core-linux-x64-musl@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-x64-musl@npm:1.9.2"
|
||||
conditions: os=linux & cpu=x64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-arm64-msvc@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-win32-arm64-msvc@npm:1.6.3"
|
||||
"@swc/core-win32-arm64-msvc@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-win32-arm64-msvc@npm:1.9.2"
|
||||
conditions: os=win32 & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-ia32-msvc@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-win32-ia32-msvc@npm:1.6.3"
|
||||
"@swc/core-win32-ia32-msvc@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-win32-ia32-msvc@npm:1.9.2"
|
||||
conditions: os=win32 & cpu=ia32
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-x64-msvc@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-win32-x64-msvc@npm:1.6.3"
|
||||
"@swc/core-win32-x64-msvc@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-win32-x64-msvc@npm:1.9.2"
|
||||
conditions: os=win32 & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core@npm:^1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core@npm:1.6.3"
|
||||
"@swc/core@npm:^1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core@npm:1.9.2"
|
||||
dependencies:
|
||||
"@swc/core-darwin-arm64": "npm:1.6.3"
|
||||
"@swc/core-darwin-x64": "npm:1.6.3"
|
||||
"@swc/core-linux-arm-gnueabihf": "npm:1.6.3"
|
||||
"@swc/core-linux-arm64-gnu": "npm:1.6.3"
|
||||
"@swc/core-linux-arm64-musl": "npm:1.6.3"
|
||||
"@swc/core-linux-x64-gnu": "npm:1.6.3"
|
||||
"@swc/core-linux-x64-musl": "npm:1.6.3"
|
||||
"@swc/core-win32-arm64-msvc": "npm:1.6.3"
|
||||
"@swc/core-win32-ia32-msvc": "npm:1.6.3"
|
||||
"@swc/core-win32-x64-msvc": "npm:1.6.3"
|
||||
"@swc/core-darwin-arm64": "npm:1.9.2"
|
||||
"@swc/core-darwin-x64": "npm:1.9.2"
|
||||
"@swc/core-linux-arm-gnueabihf": "npm:1.9.2"
|
||||
"@swc/core-linux-arm64-gnu": "npm:1.9.2"
|
||||
"@swc/core-linux-arm64-musl": "npm:1.9.2"
|
||||
"@swc/core-linux-x64-gnu": "npm:1.9.2"
|
||||
"@swc/core-linux-x64-musl": "npm:1.9.2"
|
||||
"@swc/core-win32-arm64-msvc": "npm:1.9.2"
|
||||
"@swc/core-win32-ia32-msvc": "npm:1.9.2"
|
||||
"@swc/core-win32-x64-msvc": "npm:1.9.2"
|
||||
"@swc/counter": "npm:^0.1.3"
|
||||
"@swc/types": "npm:^0.1.8"
|
||||
"@swc/types": "npm:^0.1.15"
|
||||
peerDependencies:
|
||||
"@swc/helpers": "*"
|
||||
dependenciesMeta:
|
||||
@@ -288,7 +290,7 @@ __metadata:
|
||||
peerDependenciesMeta:
|
||||
"@swc/helpers":
|
||||
optional: true
|
||||
checksum: b4c84a083ecabb0280ba53dffa65a5a575321de94081ad52bd12027fe3b5c8957978f2211b6036e2e28d904dd046fca238106c2106b32d02b752808a51193d35
|
||||
checksum: 6793f2014a016f90b1c41a695f6d3a14d574e129e78f651fe3d6dbacbc6d0836ab7a7eb445d873a302b060b25ae34c4e09d0f94574a71da47c6424c5fa58aa10
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -299,12 +301,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/types@npm:^0.1.8":
|
||||
version: 0.1.8
|
||||
resolution: "@swc/types@npm:0.1.8"
|
||||
"@swc/types@npm:^0.1.15":
|
||||
version: 0.1.15
|
||||
resolution: "@swc/types@npm:0.1.15"
|
||||
dependencies:
|
||||
"@swc/counter": "npm:^0.1.3"
|
||||
checksum: 2d1cda35116e03714137c1c37f4493efe0e26e88285ecc9dcdf6256a77984e367ea7b5f31d650f110fdcfd6ac53dff3ec77f841787ca328d2efa7b07ef1ac318
|
||||
checksum: d8bf063aeebac51290d1edf0cec52e2e5b5afced0dc6933510a86947e10f0f77976bc14c3efb5e8f265a9cbdeb0929e00e44b2f82c6d0f273997c5029417b769
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -361,12 +363,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/node@npm:^20.14.6":
|
||||
version: 20.14.6
|
||||
resolution: "@types/node@npm:20.14.6"
|
||||
"@types/node@npm:^22.9.0":
|
||||
version: 22.9.0
|
||||
resolution: "@types/node@npm:22.9.0"
|
||||
dependencies:
|
||||
undici-types: "npm:~5.26.4"
|
||||
checksum: 1dcfeeb03ce3c3a1d8a537fefee7cd0cffb78f89e9535b74ee12940559566b57c39dad20d1b165b60b5727408dd44e1a52e5c01cf02d0a99d93ef3da8062c86e
|
||||
undici-types: "npm:~6.19.8"
|
||||
checksum: a7df3426891868b0f5fb03e46aeddd8446178233521c624a44531c92a040cf08a82d8235f7e1e02af731fd16984665d4d71f3418caf9c2788313b10f040d615d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -628,23 +630,23 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "dd-beginner-bot@workspace:."
|
||||
dependencies:
|
||||
"@discordeno/bot": "npm:19.0.0-next.92bf166"
|
||||
"@swc/cli": "npm:^0.3.12"
|
||||
"@swc/core": "npm:^1.6.3"
|
||||
"@types/node": "npm:^20.14.6"
|
||||
"@discordeno/bot": "npm:19.0.0"
|
||||
"@swc/cli": "npm:^0.5.0"
|
||||
"@swc/core": "npm:^1.9.2"
|
||||
"@types/node": "npm:^22.9.0"
|
||||
chalk: "npm:^5.3.0"
|
||||
dd-cache-proxy: "npm:^2.1.1"
|
||||
dd-cache-proxy: "npm:^2.3.0"
|
||||
dotenv: "npm:^16.4.5"
|
||||
typescript: "npm:^5.5.2"
|
||||
typescript: "npm:^5.6.3"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"dd-cache-proxy@npm:^2.1.1":
|
||||
version: 2.1.1
|
||||
resolution: "dd-cache-proxy@npm:2.1.1"
|
||||
"dd-cache-proxy@npm:^2.3.0":
|
||||
version: 2.3.0
|
||||
resolution: "dd-cache-proxy@npm:2.3.0"
|
||||
peerDependencies:
|
||||
"@discordeno/bot": 19.0.0-next.d69e537
|
||||
checksum: 082234277fd0dc91477b0ac4a938aea40b8d3ffa60e7e458ce570b2f4c919671ecd5b601f7ff6c6157a5e4e5eaa3786e6a1884cccb020a938cb76e4e300f0f72
|
||||
"@discordeno/bot": 19.0.0-next.b85c6d5
|
||||
checksum: eda7d43717567b7836208c9690bbc0a547179ff7319daf5ccc08c83bc44d481854bcb474075021646ddc8560015d8b0d5e5c66f72ace67f858484b805a40f5a1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -907,6 +909,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fzstd@npm:^0.1.1":
|
||||
version: 0.1.1
|
||||
resolution: "fzstd@npm:0.1.1"
|
||||
checksum: 455b968aeb764f06d9c39a5c8b45eefd645f7ee9129896e890eafb8ab367482f8495de12907021a32f6544494305a42a2056c30c63efac06181e6efcdab3fe78
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"get-stream@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "get-stream@npm:3.0.0"
|
||||
@@ -1982,30 +1991,23 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tweetnacl@npm:^1.0.3":
|
||||
version: 1.0.3
|
||||
resolution: "tweetnacl@npm:1.0.3"
|
||||
checksum: ca122c2f86631f3c0f6d28efb44af2a301d4a557a62a3e2460286b08e97567b258c2212e4ad1cfa22bd6a57edcdc54ba76ebe946847450ab0999e6d48ccae332
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript@npm:^5.5.2":
|
||||
version: 5.5.2
|
||||
resolution: "typescript@npm:5.5.2"
|
||||
"typescript@npm:^5.6.3":
|
||||
version: 5.6.3
|
||||
resolution: "typescript@npm:5.6.3"
|
||||
bin:
|
||||
tsc: bin/tsc
|
||||
tsserver: bin/tsserver
|
||||
checksum: 9118b20f248e76b0dbff8737fef65dfa89d02668d4e633d2c5ceac99033a0ca5e8a1c1a53bc94da68e8f67677a88f318663dde859c9e9a09c1e116415daec2ba
|
||||
checksum: c328e418e124b500908781d9f7b9b93cf08b66bf5936d94332b463822eea2f4e62973bfb3b8a745fdc038785cb66cf59d1092bac3ec2ac6a3e5854687f7833f1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript@patch:typescript@npm%3A^5.5.2#optional!builtin<compat/typescript>":
|
||||
version: 5.5.2
|
||||
resolution: "typescript@patch:typescript@npm%3A5.5.2#optional!builtin<compat/typescript>::version=5.5.2&hash=e012d7"
|
||||
"typescript@patch:typescript@npm%3A^5.6.3#optional!builtin<compat/typescript>":
|
||||
version: 5.6.3
|
||||
resolution: "typescript@patch:typescript@npm%3A5.6.3#optional!builtin<compat/typescript>::version=5.6.3&hash=e012d7"
|
||||
bin:
|
||||
tsc: bin/tsc
|
||||
tsserver: bin/tsserver
|
||||
checksum: 28b3de2ddaf63a7620e7ddbe5d377af71ce93ecc558c41bf0e3d88661d8e6e7aa6c7739164fef98055f69819e41faca49252938ef3633a3dff2734cca6a9042e
|
||||
checksum: dc4bec403cd33a204b655b1152a096a08e7bad2c931cb59ef8ff26b6f2aa541bf98f09fc157958a60c921b1983a8dde9a85b692f9de60fa8f574fd131e3ae4dd
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -2016,6 +2018,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"undici-types@npm:~6.19.8":
|
||||
version: 6.19.8
|
||||
resolution: "undici-types@npm:6.19.8"
|
||||
checksum: cf0b48ed4fc99baf56584afa91aaffa5010c268b8842f62e02f752df209e3dea138b372a60a963b3b2576ed932f32329ce7ddb9cb5f27a6c83040d8cd74b7a70
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"unique-filename@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "unique-filename@npm:3.0.0"
|
||||
@@ -2103,7 +2112,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ws@npm:^8.16.0":
|
||||
"ws@npm:^8.18.0":
|
||||
version: 8.18.0
|
||||
resolution: "ws@npm:8.18.0"
|
||||
peerDependencies:
|
||||
|
||||
@@ -74,6 +74,7 @@ The preset value of `EVENT_HANDLER_HOST`, `REST_HOST`, and `GATEWAY_HOST` all us
|
||||
#### Setup process
|
||||
|
||||
- Install the dependencies with yarn
|
||||
- Run the Discordeno desired properties CLI with `yarn postinstall`
|
||||
- Build the code with `yarn build`
|
||||
|
||||
You can start different parts of your bot in the following order.
|
||||
|
||||
@@ -19,18 +19,18 @@
|
||||
"setup-dd": ""
|
||||
},
|
||||
"dependencies": {
|
||||
"@discordeno/bot": "19.0.0-next.92bf166",
|
||||
"@fastify/multipart": "^8.3.0",
|
||||
"@discordeno/bot": "19.0.0",
|
||||
"@fastify/multipart": "^9.0.1",
|
||||
"@influxdata/influxdb-client": "^1.33.2",
|
||||
"amqplib": "^0.10.4",
|
||||
"chalk": "^5.3.0",
|
||||
"fastify": "^4.28.0"
|
||||
"fastify": "^5.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@swc/cli": "^0.3.12",
|
||||
"@swc/core": "^1.6.3",
|
||||
"@swc/cli": "^0.5.0",
|
||||
"@swc/core": "^1.9.2",
|
||||
"@types/amqplib": "^0.10.5",
|
||||
"@types/node": "^20.14.6",
|
||||
"typescript": "^5.5.2"
|
||||
"@types/node": "^22.9.0",
|
||||
"typescript": "^5.6.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,26 @@
|
||||
import { type Bot, Collection, LogDepth, createBot, type logger } from '@discordeno/bot'
|
||||
import { Collection, LogDepth, createBot, type logger } from '@discordeno/bot'
|
||||
import { DISCORD_TOKEN, GATEWAY_AUTHORIZATION, GATEWAY_INTENTS, GATEWAY_URL, REST_AUTHORIZATION, REST_URL } from '../config.js'
|
||||
import type { ManagerGetShardInfoFromGuildId, ShardInfo, WorkerPresencesUpdate, WorkerShardPayload } from '../gateway/worker/types.js'
|
||||
import type { Command } from './commands.js'
|
||||
|
||||
export const bot = createCustomBot(
|
||||
createBot({
|
||||
const rawBot = createBot({
|
||||
token: DISCORD_TOKEN,
|
||||
intents: GATEWAY_INTENTS,
|
||||
// TEMPLATE-SETUP: Add/Remove the desired properties that you don't need
|
||||
desiredProperties: {
|
||||
user: {
|
||||
id: true,
|
||||
username: true,
|
||||
},
|
||||
interaction: {
|
||||
id: true,
|
||||
data: true,
|
||||
type: true,
|
||||
user: true,
|
||||
token: true,
|
||||
guildId: true,
|
||||
},
|
||||
},
|
||||
rest: {
|
||||
token: DISCORD_TOKEN,
|
||||
proxy: {
|
||||
@@ -14,37 +28,19 @@ export const bot = createCustomBot(
|
||||
authorization: REST_AUTHORIZATION,
|
||||
},
|
||||
},
|
||||
}),
|
||||
)
|
||||
})
|
||||
|
||||
overrideGatewayImplementations(bot)
|
||||
|
||||
// TEMPLATE-SETUP: Add/Remove the desired properties that you don't need
|
||||
const props = bot.transformers.desiredProperties
|
||||
|
||||
props.interaction.id = true
|
||||
props.interaction.data = true
|
||||
props.interaction.type = true
|
||||
props.interaction.user = true
|
||||
props.interaction.token = true
|
||||
props.interaction.guildId = true
|
||||
|
||||
props.user.id = true
|
||||
props.user.username = true
|
||||
|
||||
// TEMPLATE-SETUP: If you want/need to add any custom properties on the Bot type, you can do it in this function and the `CustomBot` type below. Make sure to do it in both or else you will get an error by TypeScript
|
||||
function createCustomBot<TBot extends Bot = Bot>(rawBot: TBot): CustomBot<TBot> {
|
||||
const bot = rawBot as CustomBot<TBot>
|
||||
export const bot = rawBot as CustomBot
|
||||
|
||||
// TEMPLATE-SETUP: If you want/need to add any custom properties on the Bot type, you can do it in these lines below and the `CustomBot` type below. Make sure to do it in both or else you will get an error by TypeScript
|
||||
// We need to set the log depth for the default discordeno logger or else only the first param will be logged
|
||||
;(bot.logger as typeof logger).setDepth(LogDepth.Full)
|
||||
|
||||
bot.commands = new Collection()
|
||||
|
||||
return bot
|
||||
}
|
||||
overrideGatewayImplementations(bot)
|
||||
|
||||
export type CustomBot<TBot extends Bot = Bot> = TBot & {
|
||||
export type CustomBot = typeof rawBot & {
|
||||
commands: Collection<string, Command>
|
||||
}
|
||||
|
||||
|
||||
@@ -1,13 +1,9 @@
|
||||
import type {
|
||||
ApplicationCommandOptionTypes,
|
||||
Attachment,
|
||||
CamelizedDiscordApplicationCommandOption,
|
||||
ChannelTypes,
|
||||
Camelize,
|
||||
CreateApplicationCommand,
|
||||
Interaction,
|
||||
Member,
|
||||
Role,
|
||||
User,
|
||||
DiscordApplicationCommandOption,
|
||||
ParsedInteractionOption,
|
||||
} from '@discordeno/bot'
|
||||
import { bot } from './bot.js'
|
||||
|
||||
@@ -25,33 +21,33 @@ export type Command<TOptions extends CommandOptions = CommandOptions> = CreateAp
|
||||
*/
|
||||
devOnly?: boolean
|
||||
/** Function to run when the interaction is executed */
|
||||
run: (interaction: Interaction, options: GetCommandOptions<TOptions>) => unknown
|
||||
run: (interaction: typeof bot.transformers.$inferredTypes.interaction, options: GetCommandOptions<TOptions>) => unknown
|
||||
/** Function to run when an autocomplete interaction is fired */
|
||||
autoComplete?: (interaction: Interaction, options: GetCommandOptions<TOptions>) => unknown
|
||||
autoComplete?: (interaction: typeof bot.transformers.$inferredTypes.interaction, options: GetCommandOptions<TOptions>) => unknown
|
||||
}
|
||||
|
||||
export type GetCommandOptions<T extends CommandOptions> = T extends CommandOptions
|
||||
? { [Prop in keyof BuildOptions<T> as Prop]: BuildOptions<T>[Prop] }
|
||||
: never
|
||||
|
||||
export type CommandOption = CamelizedDiscordApplicationCommandOption
|
||||
export type CommandOption = Camelize<DiscordApplicationCommandOption>
|
||||
export type CommandOptions = CommandOption[]
|
||||
|
||||
// Option parsing
|
||||
|
||||
interface UserResolved {
|
||||
user: User
|
||||
member: Member | undefined
|
||||
}
|
||||
type ResolvedValues = ParsedInteractionOption[string]
|
||||
|
||||
interface ChannelResolved {
|
||||
id: bigint
|
||||
name: string
|
||||
type: ChannelTypes
|
||||
permissions: bigint
|
||||
}
|
||||
// Using omit + exclude is a slight trick to avoid a type error on Pick
|
||||
export type InteractionResolvedChannel = Omit<
|
||||
typeof bot.transformers.$inferredTypes.channel,
|
||||
Exclude<keyof typeof bot.transformers.$inferredTypes.channel, 'id' | 'name' | 'type' | 'permissions' | 'threadMetadata' | 'parentId'>
|
||||
>
|
||||
export type InteractionResolvedMember = Omit<typeof bot.transformers.$inferredTypes.member, 'user' | 'deaf' | 'mute'>
|
||||
|
||||
type ResolvedValues = number | boolean | UserResolved | Role | ChannelResolved | Attachment
|
||||
export interface InteractionResolvedUser {
|
||||
user: typeof bot.transformers.$inferredTypes.user
|
||||
member: InteractionResolvedMember
|
||||
}
|
||||
|
||||
/**
|
||||
* From here SubCommandGroup and SubCommand are missing, this is wanted.
|
||||
@@ -62,12 +58,12 @@ interface TypeToResolvedMap {
|
||||
[ApplicationCommandOptionTypes.String]: string
|
||||
[ApplicationCommandOptionTypes.Integer]: number
|
||||
[ApplicationCommandOptionTypes.Boolean]: boolean
|
||||
[ApplicationCommandOptionTypes.User]: UserResolved
|
||||
[ApplicationCommandOptionTypes.Channel]: ChannelResolved
|
||||
[ApplicationCommandOptionTypes.Role]: Role
|
||||
[ApplicationCommandOptionTypes.Mentionable]: Role | UserResolved
|
||||
[ApplicationCommandOptionTypes.User]: InteractionResolvedUser
|
||||
[ApplicationCommandOptionTypes.Channel]: InteractionResolvedChannel
|
||||
[ApplicationCommandOptionTypes.Role]: typeof bot.transformers.$inferredTypes.role
|
||||
[ApplicationCommandOptionTypes.Mentionable]: typeof bot.transformers.$inferredTypes.role | InteractionResolvedUser
|
||||
[ApplicationCommandOptionTypes.Number]: number
|
||||
[ApplicationCommandOptionTypes.Attachment]: Attachment
|
||||
[ApplicationCommandOptionTypes.Attachment]: typeof bot.transformers.$inferredTypes.attachment
|
||||
}
|
||||
|
||||
type ConvertTypeToResolved<T extends ApplicationCommandOptionTypes> = T extends keyof TypeToResolvedMap ? TypeToResolvedMap[T] : ResolvedValues
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { type Interaction, InteractionTypes, LogLevels, commandOptionsParser, type logger } from '@discordeno/bot'
|
||||
import { InteractionTypes, LogLevels, commandOptionsParser, type logger } from '@discordeno/bot'
|
||||
import chalk from 'chalk'
|
||||
import { bot } from '../../bot.js'
|
||||
|
||||
@@ -19,6 +19,7 @@ bot.events.interactionCreate = async (interaction) => {
|
||||
|
||||
logCommand(interaction, 'Trigger', interaction.data.name)
|
||||
|
||||
// @ts-expect-error commandOptionsParser is currently bugged
|
||||
const options = commandOptionsParser(interaction)
|
||||
|
||||
try {
|
||||
@@ -36,7 +37,7 @@ bot.events.interactionCreate = async (interaction) => {
|
||||
}
|
||||
|
||||
function logCommand(
|
||||
interaction: Interaction,
|
||||
interaction: typeof bot.transformers.$inferredTypes.interaction,
|
||||
type: 'Failure' | 'Success' | 'Trigger' | 'Missing',
|
||||
commandName: string,
|
||||
logLevel: LogLevels = LogLevels.Info,
|
||||
|
||||
@@ -96,6 +96,7 @@ function createShard(shardId: number): DiscordenoShard {
|
||||
totalShards: workerData.connectionData.totalShards,
|
||||
url: workerData.connectionData.url,
|
||||
version: workerData.connectionData.version,
|
||||
transportCompression: null,
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
@@ -16,99 +16,101 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/bot@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/bot@npm:19.0.0-next.92bf166"
|
||||
"@discordeno/bot@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/bot@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/gateway": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/rest": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/types": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/utils": "npm:19.0.0-next.92bf166"
|
||||
checksum: 3020e74c774eae34307d434ad38f983e90839dc5fad7578f3cda4fba6c1efb7a22c4f4cdcfff58c54b62cc14976ad974256955d5117e490f78ec9e835e02c682
|
||||
"@discordeno/gateway": "npm:19.0.0"
|
||||
"@discordeno/rest": "npm:19.0.0"
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
"@discordeno/utils": "npm:19.0.0"
|
||||
checksum: 86ac4cd61761c1b3c3fa82db08742dcdba18ffb1b6042455c8a5e8cdd02231543c3c2d43dfb29084d44034cafebdc6ab51969c5930281ab2be83d5b159b69726
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/gateway@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/gateway@npm:19.0.0-next.92bf166"
|
||||
"@discordeno/gateway@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/gateway@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/types": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/utils": "npm:19.0.0-next.92bf166"
|
||||
ws: "npm:^8.16.0"
|
||||
checksum: 6a11ca7a4cb98f48726664d0baa27d04e26342bf94d6e439494e462636af20d17b567e9d3e2e478465aabcecb98a21e54b860b39b9f1022eef922e76d947ddcb
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
"@discordeno/utils": "npm:19.0.0"
|
||||
fzstd: "npm:^0.1.1"
|
||||
ws: "npm:^8.18.0"
|
||||
dependenciesMeta:
|
||||
fzstd:
|
||||
optional: true
|
||||
checksum: 241ec9981bf47ff894990889477fbc1ce91361648534189361e9dca4d927aba15c941604da29ba135cb20871fac7e82e5cc1eed1df6ef3d86bbcdfdca3448649
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/rest@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/rest@npm:19.0.0-next.92bf166"
|
||||
"@discordeno/rest@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/rest@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/types": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/utils": "npm:19.0.0-next.92bf166"
|
||||
dotenv: "npm:^16.4.5"
|
||||
checksum: 45f6ba4791003b77c883e991ad348597197d70e25e335b8628a03bd2effa8e2047a2f987f4c0b6ee8b17c01f77055d7a1ddc9f5350eb8f1c8ff8c8d39f91d787
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
"@discordeno/utils": "npm:19.0.0"
|
||||
checksum: e1ce6c092566e58c5d407a5fee7c6c38f988251abcbaaf14beaa084691b4c52dc4f6c54f46974735090fafe174b1914374edd074bffd441e11d76851575a136f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/types@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/types@npm:19.0.0-next.92bf166"
|
||||
checksum: f88e78a18e51c179b94ef14e8bcdd6b5e6c5f25bdd6c4308bec121e5e59533612b36ed0e7a447daedc009053e1e30c6c8e13b2276bb1ce7e2f840ff58473a2ef
|
||||
"@discordeno/types@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/types@npm:19.0.0"
|
||||
checksum: aaf832d6510b7aa0ead75bd5c1d1990f3a77fa980d40122d6d092abc571280aed6864b10fdda705d70bd7ba73961f4b3a0ee28c6b7cabb09595574f65fcfd61c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/utils@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/utils@npm:19.0.0-next.92bf166"
|
||||
"@discordeno/utils@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/utils@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/types": "npm:19.0.0-next.92bf166"
|
||||
tweetnacl: "npm:^1.0.3"
|
||||
checksum: 7962a057ba5908936e4224df70b9ceaffcb8ec7ad220a999b36fc0601365b380bb0de01b6adfa4c36250247e3d15e22215fc63bbe3634b932434411c5f4ca13d
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
checksum: b2d430099672cfb8b68d6a9bd12803cd69cb909dc1f368d8305a4bb1067499babff05997a29599b51029d0add435bea4a03929140abf77dd83e1741baaa37855
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@fastify/ajv-compiler@npm:^3.5.0":
|
||||
version: 3.5.0
|
||||
resolution: "@fastify/ajv-compiler@npm:3.5.0"
|
||||
"@fastify/ajv-compiler@npm:^4.0.0":
|
||||
version: 4.0.1
|
||||
resolution: "@fastify/ajv-compiler@npm:4.0.1"
|
||||
dependencies:
|
||||
ajv: "npm:^8.11.0"
|
||||
ajv-formats: "npm:^2.1.1"
|
||||
fast-uri: "npm:^2.0.0"
|
||||
checksum: c46c4680bf583e37b97ffc85b69070712c9c47e18ddf89b9fb93dbc0b6ba3c6496cf624aabe9aac25dafc4a404b738ab0fedcff66503df0ce18d9dcad9e44b26
|
||||
ajv: "npm:^8.12.0"
|
||||
ajv-formats: "npm:^3.0.1"
|
||||
fast-uri: "npm:^3.0.0"
|
||||
checksum: ba1348cb5c4bd9c921a53e509ac6acb8696d542198f3bc7674a15b9b6b1af158b2859e738d754eb2929c4059bfa354a743f71c32aa8de6df42531a32647eeee0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@fastify/busboy@npm:^2.1.0":
|
||||
version: 2.1.1
|
||||
resolution: "@fastify/busboy@npm:2.1.1"
|
||||
checksum: 2bb8a7eca8289ed14c9eb15239bc1019797454624e769b39a0b90ed204d032403adc0f8ed0d2aef8a18c772205fa7808cf5a1b91f21c7bfc7b6032150b1062c5
|
||||
"@fastify/busboy@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "@fastify/busboy@npm:3.0.0"
|
||||
checksum: 238ce60bffecdefc55524d2b0826fe7a225635a2e0f3af832fe48801d96f9f521cb11bbd0ed3391b017c1f2580501845ee42f153fa6204b4c758214128a67ee7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@fastify/deepmerge@npm:^1.0.0":
|
||||
version: 1.3.0
|
||||
resolution: "@fastify/deepmerge@npm:1.3.0"
|
||||
checksum: 6ddfc230ed46bfb158dbf83c2cc7f6119c9c1afb96d885cf5d95ac17b56126d04eef83ddb1ee7a1b044e65a128c76ebf8b391a26490b19f5812fa0d2d2a3a675
|
||||
"@fastify/deepmerge@npm:^2.0.0":
|
||||
version: 2.0.0
|
||||
resolution: "@fastify/deepmerge@npm:2.0.0"
|
||||
checksum: 9c3d1a02d83d9872477ef9e9d7c3c13ba138597ca01808eb233bae12923b2f5428ae6adffd4b9ed6d75e5cb86f8924e1d9a06a975132735bf9a58289d63dd146
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@fastify/error@npm:^3.0.0, @fastify/error@npm:^3.3.0, @fastify/error@npm:^3.4.0":
|
||||
version: 3.4.1
|
||||
resolution: "@fastify/error@npm:3.4.1"
|
||||
checksum: 4d63660f7d4a0d6091abf869208d30898bde82f513ca7be542243d9d740df743dd4be293e7db30858fca612dd512d28a818ea06dc674e06b445278fcefcdda92
|
||||
"@fastify/error@npm:^4.0.0":
|
||||
version: 4.0.0
|
||||
resolution: "@fastify/error@npm:4.0.0"
|
||||
checksum: 9afdb1262fbd57e1c922cd7b3326c45d2ca018456030669dcad76feda60df894a3c25b9d019cd050ffc3686a0de938799be826328ab2d74257941788c7f642e7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@fastify/fast-json-stringify-compiler@npm:^4.3.0":
|
||||
version: 4.3.0
|
||||
resolution: "@fastify/fast-json-stringify-compiler@npm:4.3.0"
|
||||
"@fastify/fast-json-stringify-compiler@npm:^5.0.0":
|
||||
version: 5.0.1
|
||||
resolution: "@fastify/fast-json-stringify-compiler@npm:5.0.1"
|
||||
dependencies:
|
||||
fast-json-stringify: "npm:^5.7.0"
|
||||
checksum: 9ad575907d44bbd371dbc23a51853fd349a459092340fe91c50317f92707961f2e6ca6c9d17707a8e4a087c635e09bce1166e082d54f191769a582339c94badd
|
||||
fast-json-stringify: "npm:^6.0.0"
|
||||
checksum: 82c9b51cd096221b4dc191ffef01f4ccfda389bea08e218bd9926f99a0b6a10fadad47d9106335e1d48b160047178e14d8f87ee202fa5c2eab3957ae37d060c3
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@fastify/merge-json-schemas@npm:^0.1.0":
|
||||
"@fastify/merge-json-schemas@npm:^0.1.1":
|
||||
version: 0.1.1
|
||||
resolution: "@fastify/merge-json-schemas@npm:0.1.1"
|
||||
dependencies:
|
||||
@@ -117,17 +119,16 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@fastify/multipart@npm:^8.3.0":
|
||||
version: 8.3.0
|
||||
resolution: "@fastify/multipart@npm:8.3.0"
|
||||
"@fastify/multipart@npm:^9.0.1":
|
||||
version: 9.0.1
|
||||
resolution: "@fastify/multipart@npm:9.0.1"
|
||||
dependencies:
|
||||
"@fastify/busboy": "npm:^2.1.0"
|
||||
"@fastify/deepmerge": "npm:^1.0.0"
|
||||
"@fastify/error": "npm:^3.0.0"
|
||||
fastify-plugin: "npm:^4.0.0"
|
||||
secure-json-parse: "npm:^2.4.0"
|
||||
stream-wormhole: "npm:^1.1.0"
|
||||
checksum: 23b9b709a499af0c0beaaaabd52032a92fa8f4a398ed821c2b4f272e68602ed7bcf91b5daed1e5270c3c61a8b3e8ea1bc2924f21fbcfdbdbd07f4342bd17cd81
|
||||
"@fastify/busboy": "npm:^3.0.0"
|
||||
"@fastify/deepmerge": "npm:^2.0.0"
|
||||
"@fastify/error": "npm:^4.0.0"
|
||||
fastify-plugin: "npm:^5.0.0"
|
||||
secure-json-parse: "npm:^3.0.0"
|
||||
checksum: c79c90366cf2bc062b75bb9672948b00f82a17a9b44b29457945d6760d07bdc444c497b051e27a1f0cf1879790fea2867d30cfc0ec6cc40144081793aef1198f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -231,9 +232,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/cli@npm:^0.3.12":
|
||||
version: 0.3.12
|
||||
resolution: "@swc/cli@npm:0.3.12"
|
||||
"@swc/cli@npm:^0.5.0":
|
||||
version: 0.5.0
|
||||
resolution: "@swc/cli@npm:0.5.0"
|
||||
dependencies:
|
||||
"@mole-inc/bin-wrapper": "npm:^8.0.1"
|
||||
"@swc/counter": "npm:^0.1.3"
|
||||
@@ -254,96 +255,96 @@ __metadata:
|
||||
spack: bin/spack.js
|
||||
swc: bin/swc.js
|
||||
swcx: bin/swcx.js
|
||||
checksum: fee260434fad8eed0328f4db17f42ce0864b93b90fcb02f3f0eb3aad994b5a6ae4bfdfb6d2329377e0cd8d07adc61cca42e290bf0005c1ab4d004d4a0b152db4
|
||||
checksum: 033b682f1c25c8fae731414d2a463a0e455452bf9349c025cd88ea63ee1e5a589032eb206063fd925daf12065c9f1e5b4680cef50cc24674681c4d2583b7dca0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-darwin-arm64@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-darwin-arm64@npm:1.6.3"
|
||||
"@swc/core-darwin-arm64@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-darwin-arm64@npm:1.9.2"
|
||||
conditions: os=darwin & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-darwin-x64@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-darwin-x64@npm:1.6.3"
|
||||
"@swc/core-darwin-x64@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-darwin-x64@npm:1.9.2"
|
||||
conditions: os=darwin & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm-gnueabihf@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.6.3"
|
||||
"@swc/core-linux-arm-gnueabihf@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.9.2"
|
||||
conditions: os=linux & cpu=arm
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm64-gnu@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-arm64-gnu@npm:1.6.3"
|
||||
"@swc/core-linux-arm64-gnu@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-arm64-gnu@npm:1.9.2"
|
||||
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm64-musl@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-arm64-musl@npm:1.6.3"
|
||||
"@swc/core-linux-arm64-musl@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-arm64-musl@npm:1.9.2"
|
||||
conditions: os=linux & cpu=arm64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-x64-gnu@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-x64-gnu@npm:1.6.3"
|
||||
"@swc/core-linux-x64-gnu@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-x64-gnu@npm:1.9.2"
|
||||
conditions: os=linux & cpu=x64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-x64-musl@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-x64-musl@npm:1.6.3"
|
||||
"@swc/core-linux-x64-musl@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-x64-musl@npm:1.9.2"
|
||||
conditions: os=linux & cpu=x64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-arm64-msvc@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-win32-arm64-msvc@npm:1.6.3"
|
||||
"@swc/core-win32-arm64-msvc@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-win32-arm64-msvc@npm:1.9.2"
|
||||
conditions: os=win32 & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-ia32-msvc@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-win32-ia32-msvc@npm:1.6.3"
|
||||
"@swc/core-win32-ia32-msvc@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-win32-ia32-msvc@npm:1.9.2"
|
||||
conditions: os=win32 & cpu=ia32
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-x64-msvc@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-win32-x64-msvc@npm:1.6.3"
|
||||
"@swc/core-win32-x64-msvc@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-win32-x64-msvc@npm:1.9.2"
|
||||
conditions: os=win32 & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core@npm:^1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core@npm:1.6.3"
|
||||
"@swc/core@npm:^1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core@npm:1.9.2"
|
||||
dependencies:
|
||||
"@swc/core-darwin-arm64": "npm:1.6.3"
|
||||
"@swc/core-darwin-x64": "npm:1.6.3"
|
||||
"@swc/core-linux-arm-gnueabihf": "npm:1.6.3"
|
||||
"@swc/core-linux-arm64-gnu": "npm:1.6.3"
|
||||
"@swc/core-linux-arm64-musl": "npm:1.6.3"
|
||||
"@swc/core-linux-x64-gnu": "npm:1.6.3"
|
||||
"@swc/core-linux-x64-musl": "npm:1.6.3"
|
||||
"@swc/core-win32-arm64-msvc": "npm:1.6.3"
|
||||
"@swc/core-win32-ia32-msvc": "npm:1.6.3"
|
||||
"@swc/core-win32-x64-msvc": "npm:1.6.3"
|
||||
"@swc/core-darwin-arm64": "npm:1.9.2"
|
||||
"@swc/core-darwin-x64": "npm:1.9.2"
|
||||
"@swc/core-linux-arm-gnueabihf": "npm:1.9.2"
|
||||
"@swc/core-linux-arm64-gnu": "npm:1.9.2"
|
||||
"@swc/core-linux-arm64-musl": "npm:1.9.2"
|
||||
"@swc/core-linux-x64-gnu": "npm:1.9.2"
|
||||
"@swc/core-linux-x64-musl": "npm:1.9.2"
|
||||
"@swc/core-win32-arm64-msvc": "npm:1.9.2"
|
||||
"@swc/core-win32-ia32-msvc": "npm:1.9.2"
|
||||
"@swc/core-win32-x64-msvc": "npm:1.9.2"
|
||||
"@swc/counter": "npm:^0.1.3"
|
||||
"@swc/types": "npm:^0.1.8"
|
||||
"@swc/types": "npm:^0.1.15"
|
||||
peerDependencies:
|
||||
"@swc/helpers": "*"
|
||||
dependenciesMeta:
|
||||
@@ -370,7 +371,7 @@ __metadata:
|
||||
peerDependenciesMeta:
|
||||
"@swc/helpers":
|
||||
optional: true
|
||||
checksum: b4c84a083ecabb0280ba53dffa65a5a575321de94081ad52bd12027fe3b5c8957978f2211b6036e2e28d904dd046fca238106c2106b32d02b752808a51193d35
|
||||
checksum: 6793f2014a016f90b1c41a695f6d3a14d574e129e78f651fe3d6dbacbc6d0836ab7a7eb445d873a302b060b25ae34c4e09d0f94574a71da47c6424c5fa58aa10
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -381,12 +382,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/types@npm:^0.1.8":
|
||||
version: 0.1.8
|
||||
resolution: "@swc/types@npm:0.1.8"
|
||||
"@swc/types@npm:^0.1.15":
|
||||
version: 0.1.15
|
||||
resolution: "@swc/types@npm:0.1.15"
|
||||
dependencies:
|
||||
"@swc/counter": "npm:^0.1.3"
|
||||
checksum: 2d1cda35116e03714137c1c37f4493efe0e26e88285ecc9dcdf6256a77984e367ea7b5f31d650f110fdcfd6ac53dff3ec77f841787ca328d2efa7b07ef1ac318
|
||||
checksum: d8bf063aeebac51290d1edf0cec52e2e5b5afced0dc6933510a86947e10f0f77976bc14c3efb5e8f265a9cbdeb0929e00e44b2f82c6d0f273997c5029417b769
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -452,12 +453,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/node@npm:^20.14.6":
|
||||
version: 20.14.6
|
||||
resolution: "@types/node@npm:20.14.6"
|
||||
"@types/node@npm:^22.9.0":
|
||||
version: 22.9.0
|
||||
resolution: "@types/node@npm:22.9.0"
|
||||
dependencies:
|
||||
undici-types: "npm:~5.26.4"
|
||||
checksum: 1dcfeeb03ce3c3a1d8a537fefee7cd0cffb78f89e9535b74ee12940559566b57c39dad20d1b165b60b5727408dd44e1a52e5c01cf02d0a99d93ef3da8062c86e
|
||||
undici-types: "npm:~6.19.8"
|
||||
checksum: a7df3426891868b0f5fb03e46aeddd8446178233521c624a44531c92a040cf08a82d8235f7e1e02af731fd16984665d4d71f3418caf9c2788313b10f040d615d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -512,20 +513,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ajv-formats@npm:^2.1.1":
|
||||
version: 2.1.1
|
||||
resolution: "ajv-formats@npm:2.1.1"
|
||||
dependencies:
|
||||
ajv: "npm:^8.0.0"
|
||||
peerDependencies:
|
||||
ajv: ^8.0.0
|
||||
peerDependenciesMeta:
|
||||
ajv:
|
||||
optional: true
|
||||
checksum: 70c263ded219bf277ffd9127f793b625f10a46113b2e901e150da41931fcfd7f5592da6d66862f4449bb157ffe65867c3294a7df1d661cc232c4163d5a1718ed
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ajv-formats@npm:^3.0.1":
|
||||
version: 3.0.1
|
||||
resolution: "ajv-formats@npm:3.0.1"
|
||||
@@ -540,7 +527,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ajv@npm:^8.0.0, ajv@npm:^8.10.0, ajv@npm:^8.11.0":
|
||||
"ajv@npm:^8.0.0":
|
||||
version: 8.16.0
|
||||
resolution: "ajv@npm:8.16.0"
|
||||
dependencies:
|
||||
@@ -552,6 +539,18 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ajv@npm:^8.12.0":
|
||||
version: 8.17.1
|
||||
resolution: "ajv@npm:8.17.1"
|
||||
dependencies:
|
||||
fast-deep-equal: "npm:^3.1.3"
|
||||
fast-uri: "npm:^3.0.1"
|
||||
json-schema-traverse: "npm:^1.0.0"
|
||||
require-from-string: "npm:^2.0.2"
|
||||
checksum: ee3c62162c953e91986c838f004132b6a253d700f1e51253b99791e2dbfdb39161bc950ebdc2f156f8568035bb5ed8be7bd78289cd9ecbf3381fe8f5b82e3f33
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"amqplib@npm:^0.10.4":
|
||||
version: 0.10.4
|
||||
resolution: "amqplib@npm:0.10.4"
|
||||
@@ -608,13 +607,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"avvio@npm:^8.3.0":
|
||||
version: 8.3.2
|
||||
resolution: "avvio@npm:8.3.2"
|
||||
"avvio@npm:^9.0.0":
|
||||
version: 9.1.0
|
||||
resolution: "avvio@npm:9.1.0"
|
||||
dependencies:
|
||||
"@fastify/error": "npm:^3.3.0"
|
||||
"@fastify/error": "npm:^4.0.0"
|
||||
fastq: "npm:^1.17.1"
|
||||
checksum: 5edef27388ac4c3f07453460b1cc66bad9ae9be2af9b55150ddf720729e2bf12be1dd81c822744363fdea4bb682edcf4c28d8235114e17b78f85f5c398e5bf68
|
||||
checksum: 4bc7c0ac1b9e3a814db4bc5b89fd6a38b082614677d9a4e2d2b9c11bc830deac81dd0e5bdae4ba31b1e165c19de9f2772564fd3b840b3bfa5048f757bb6a4eda
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -802,10 +801,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cookie@npm:^0.6.0":
|
||||
version: 0.6.0
|
||||
resolution: "cookie@npm:0.6.0"
|
||||
checksum: c1f8f2ea7d443b9331680598b0ae4e6af18a618c37606d1bbdc75bec8361cce09fe93e727059a673f2ba24467131a9fb5a4eec76bb1b149c1b3e1ccb268dc583
|
||||
"cookie@npm:^1.0.1":
|
||||
version: 1.0.1
|
||||
resolution: "cookie@npm:1.0.1"
|
||||
checksum: 4b24d4fad5ba94ab76d74a8fc33ae1dcdb5dc02013e03e9577b26f019d9dfe396ffb9b3711ba1726bcfa1b93c33d117db0f31e187838aed7753dee1abc691688
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -842,17 +841,17 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "dd-bigbot@workspace:."
|
||||
dependencies:
|
||||
"@discordeno/bot": "npm:19.0.0-next.92bf166"
|
||||
"@fastify/multipart": "npm:^8.3.0"
|
||||
"@discordeno/bot": "npm:19.0.0"
|
||||
"@fastify/multipart": "npm:^9.0.1"
|
||||
"@influxdata/influxdb-client": "npm:^1.33.2"
|
||||
"@swc/cli": "npm:^0.3.12"
|
||||
"@swc/core": "npm:^1.6.3"
|
||||
"@swc/cli": "npm:^0.5.0"
|
||||
"@swc/core": "npm:^1.9.2"
|
||||
"@types/amqplib": "npm:^0.10.5"
|
||||
"@types/node": "npm:^20.14.6"
|
||||
"@types/node": "npm:^22.9.0"
|
||||
amqplib: "npm:^0.10.4"
|
||||
chalk: "npm:^5.3.0"
|
||||
fastify: "npm:^4.28.0"
|
||||
typescript: "npm:^5.5.2"
|
||||
fastify: "npm:^5.1.0"
|
||||
typescript: "npm:^5.6.3"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -884,13 +883,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"dotenv@npm:^16.4.5":
|
||||
version: 16.4.5
|
||||
resolution: "dotenv@npm:16.4.5"
|
||||
checksum: 55a3134601115194ae0f924e54473459ed0d9fc340ae610b676e248cca45aa7c680d86365318ea964e6da4e2ea80c4514c1adab5adb43d6867fb57ff068f95c8
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"eastasianwidth@npm:^0.2.0":
|
||||
version: 0.2.0
|
||||
resolution: "eastasianwidth@npm:0.2.0"
|
||||
@@ -1032,13 +1024,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fast-content-type-parse@npm:^1.1.0":
|
||||
version: 1.1.0
|
||||
resolution: "fast-content-type-parse@npm:1.1.0"
|
||||
checksum: 8637228a19b11296992af5d9b5f5ae84c6f27a465cf36a901b303b784ce0ca6f10502375da59958eb2b9c4949b98e5cc460ecb4bd777d22c3fa236c1e8da1ed8
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fast-decode-uri-component@npm:^1.0.1":
|
||||
version: 1.0.1
|
||||
resolution: "fast-decode-uri-component@npm:1.0.1"
|
||||
@@ -1066,18 +1051,18 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fast-json-stringify@npm:^5.7.0, fast-json-stringify@npm:^5.8.0":
|
||||
version: 5.16.0
|
||||
resolution: "fast-json-stringify@npm:5.16.0"
|
||||
"fast-json-stringify@npm:^6.0.0":
|
||||
version: 6.0.0
|
||||
resolution: "fast-json-stringify@npm:6.0.0"
|
||||
dependencies:
|
||||
"@fastify/merge-json-schemas": "npm:^0.1.0"
|
||||
ajv: "npm:^8.10.0"
|
||||
"@fastify/merge-json-schemas": "npm:^0.1.1"
|
||||
ajv: "npm:^8.12.0"
|
||||
ajv-formats: "npm:^3.0.1"
|
||||
fast-deep-equal: "npm:^3.1.3"
|
||||
fast-uri: "npm:^2.1.0"
|
||||
fast-uri: "npm:^2.3.0"
|
||||
json-schema-ref-resolver: "npm:^1.0.1"
|
||||
rfdc: "npm:^1.2.0"
|
||||
checksum: 06ae46bba0d362c515aed21326cd9496723dd34422b7d86a5da7442807b9b02ecea856e4ed42b4aa96dce61c806c2bf29eb483efa17ef63a4ff76aab3c2cc21b
|
||||
checksum: b850b0669d6e2807e07c6e07a6d95224132a26d2759a86eb070ad4ad1103aafa08e63c3eca554eca701d77abd3b96037d2b70aead14aa93bd4c4e67ba2a57bd0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -1097,41 +1082,47 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fast-uri@npm:^2.0.0, fast-uri@npm:^2.1.0":
|
||||
version: 2.3.1
|
||||
resolution: "fast-uri@npm:2.3.1"
|
||||
checksum: 362e90cafd6fa1700ce12eb2f10a21e02a5b6c016f9f015eeb2b65f450775d8341e3fd4022f09134d3cf1415b112777c4502f3e9da009699dcc78053a641fba5
|
||||
"fast-uri@npm:^2.3.0":
|
||||
version: 2.4.0
|
||||
resolution: "fast-uri@npm:2.4.0"
|
||||
checksum: 07338f5665c29697ed5359c8010e58450b5c3fee2e9a3d6457e8b4a045995a36a7b9062c9849dad4ffe8959d3e150beccb78beecaab84f6b5f0976a2360f3028
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fastify-plugin@npm:^4.0.0":
|
||||
version: 4.5.1
|
||||
resolution: "fastify-plugin@npm:4.5.1"
|
||||
checksum: 7c6d777ada0f01c8a1166a2a669cccfd6074c7764121f07cce997745f198227a271c7a317aaf0da273b329f24307f0eba3f093d872d29b839b33deb525bbafe2
|
||||
"fast-uri@npm:^3.0.0, fast-uri@npm:^3.0.1":
|
||||
version: 3.0.3
|
||||
resolution: "fast-uri@npm:3.0.3"
|
||||
checksum: 92487c75848b03edc45517fca0148287d342c30818ce43d556391db774d8e01644fb6964315a3336eec5a90f301b218b21f71fb9b2528ba25757435a20392c95
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fastify@npm:^4.28.0":
|
||||
version: 4.28.0
|
||||
resolution: "fastify@npm:4.28.0"
|
||||
"fastify-plugin@npm:^5.0.0":
|
||||
version: 5.0.1
|
||||
resolution: "fastify-plugin@npm:5.0.1"
|
||||
checksum: 76f6960558239d1ead520ecfb9dbb9b0435a63376d9d48bed0861609a909bf1958cb097745bb1a5485592f2c6d1438941e7481203c86b0e74d2bc34f09e8ed3e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fastify@npm:^5.1.0":
|
||||
version: 5.1.0
|
||||
resolution: "fastify@npm:5.1.0"
|
||||
dependencies:
|
||||
"@fastify/ajv-compiler": "npm:^3.5.0"
|
||||
"@fastify/error": "npm:^3.4.0"
|
||||
"@fastify/fast-json-stringify-compiler": "npm:^4.3.0"
|
||||
"@fastify/ajv-compiler": "npm:^4.0.0"
|
||||
"@fastify/error": "npm:^4.0.0"
|
||||
"@fastify/fast-json-stringify-compiler": "npm:^5.0.0"
|
||||
abstract-logging: "npm:^2.0.1"
|
||||
avvio: "npm:^8.3.0"
|
||||
fast-content-type-parse: "npm:^1.1.0"
|
||||
fast-json-stringify: "npm:^5.8.0"
|
||||
find-my-way: "npm:^8.0.0"
|
||||
light-my-request: "npm:^5.11.0"
|
||||
avvio: "npm:^9.0.0"
|
||||
fast-json-stringify: "npm:^6.0.0"
|
||||
find-my-way: "npm:^9.0.0"
|
||||
light-my-request: "npm:^6.0.0"
|
||||
pino: "npm:^9.0.0"
|
||||
process-warning: "npm:^3.0.0"
|
||||
process-warning: "npm:^4.0.0"
|
||||
proxy-addr: "npm:^2.0.7"
|
||||
rfdc: "npm:^1.3.0"
|
||||
rfdc: "npm:^1.3.1"
|
||||
secure-json-parse: "npm:^2.7.0"
|
||||
semver: "npm:^7.5.4"
|
||||
toad-cache: "npm:^3.3.0"
|
||||
checksum: 8f3991b1ae2b5248ca9fb09f57f0fc083ca3ca26ab418fb2b0b768c5cec5c01aa4aaa9e7697018457a5f53fe43d74747bac2393509eeac96bb535d5cbba4e062
|
||||
semver: "npm:^7.6.0"
|
||||
toad-cache: "npm:^3.7.0"
|
||||
checksum: 32ad1a2fcb1206f42ef8f600f59c11b6bba8b41c9c4b97dda895ecfd265f0127c0b9019335923b0208db73ca835ef996af65e6a62fe106a274f8e3973dcfd65d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -1182,14 +1173,14 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"find-my-way@npm:^8.0.0":
|
||||
version: 8.2.2
|
||||
resolution: "find-my-way@npm:8.2.2"
|
||||
"find-my-way@npm:^9.0.0":
|
||||
version: 9.1.0
|
||||
resolution: "find-my-way@npm:9.1.0"
|
||||
dependencies:
|
||||
fast-deep-equal: "npm:^3.1.3"
|
||||
fast-querystring: "npm:^1.0.0"
|
||||
safe-regex2: "npm:^3.1.0"
|
||||
checksum: 8a3e7531a7471d1ea93e77d4e486f4ca8c42fc0349efaaefba197cabf4e2fa62f4ae65866b34702eb74c7f2caf9121d26e04c9f4b25db76310b5399a6db7f5a5
|
||||
safe-regex2: "npm:^4.0.0"
|
||||
checksum: 7c73ac979205ca78a35dfcdf1eb63bf8d88c3c545cf75bc2afd4e53bd8958aef4cfd25dcb86f8a870dee2ae5a95a79ffa3614d730fe88cf810f05e40fcf1652e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -1237,6 +1228,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fzstd@npm:^0.1.1":
|
||||
version: 0.1.1
|
||||
resolution: "fzstd@npm:0.1.1"
|
||||
checksum: 455b968aeb764f06d9c39a5c8b45eefd645f7ee9129896e890eafb8ab367482f8495de12907021a32f6544494305a42a2056c30c63efac06181e6efcdab3fe78
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"get-stream@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "get-stream@npm:3.0.0"
|
||||
@@ -1539,14 +1537,14 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"light-my-request@npm:^5.11.0":
|
||||
version: 5.13.0
|
||||
resolution: "light-my-request@npm:5.13.0"
|
||||
"light-my-request@npm:^6.0.0":
|
||||
version: 6.3.0
|
||||
resolution: "light-my-request@npm:6.3.0"
|
||||
dependencies:
|
||||
cookie: "npm:^0.6.0"
|
||||
process-warning: "npm:^3.0.0"
|
||||
set-cookie-parser: "npm:^2.4.1"
|
||||
checksum: 29407ecd0fcc240fbc4ac53457247e7f796962aaa228e9c5057bb4a7d84fda4f14eaaf39212f2dbfe0869b78a2a42ec82ec4a597a181b9ee19ac23a636c0160d
|
||||
cookie: "npm:^1.0.1"
|
||||
process-warning: "npm:^4.0.0"
|
||||
set-cookie-parser: "npm:^2.6.0"
|
||||
checksum: 8e00804245a59420d5b95f21946cddd375b49f5d5b22da142febaceb6a928b7b806e424c7b62a4734bcca02e55c1b56612253daf17771167cc453e59160cef67
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -2022,6 +2020,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"process-warning@npm:^4.0.0":
|
||||
version: 4.0.0
|
||||
resolution: "process-warning@npm:4.0.0"
|
||||
checksum: 0d6ec069f3a6fe1d3379c0247329a297f1f3b9ea7e1d828db0a8f61e0e8337a98b7eb201547350924bc4a101ddcf2fa5cf5563ffe2c54c27651f7996d328483e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"process@npm:^0.11.10":
|
||||
version: 0.11.10
|
||||
resolution: "process@npm:0.11.10"
|
||||
@@ -2183,10 +2188,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ret@npm:~0.4.0":
|
||||
version: 0.4.3
|
||||
resolution: "ret@npm:0.4.3"
|
||||
checksum: d6a00f0920400b78b6aa96ce1c953d2f783f4fd5d56b5e842a744c40e33545e7955fb132386ada406361881353292fe7282f4e6e82b2c1e61f6c96a6ea4bb2d7
|
||||
"ret@npm:~0.5.0":
|
||||
version: 0.5.0
|
||||
resolution: "ret@npm:0.5.0"
|
||||
checksum: fb58f61268ceb762de471fd5871a53def1f47160487c6e21dcbe5274b3eb2df40a80d9eab7ed3732c8de4e4fadc911a66a190a129b5cf75c3e70302a7607f82f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -2204,13 +2209,20 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"rfdc@npm:^1.2.0, rfdc@npm:^1.3.0":
|
||||
"rfdc@npm:^1.2.0":
|
||||
version: 1.3.1
|
||||
resolution: "rfdc@npm:1.3.1"
|
||||
checksum: 44cc6a82e2fe1db13b7d3c54e9ffd0b40ef070cbde69ffbfbb38dab8cee46bd68ba686784b96365ff08d04798bc121c3465663a0c91f2c421c90546c4366f4a6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"rfdc@npm:^1.3.1":
|
||||
version: 1.4.1
|
||||
resolution: "rfdc@npm:1.4.1"
|
||||
checksum: 2f3d11d3d8929b4bfeefc9acb03aae90f971401de0add5ae6c5e38fec14f0405e6a4aad8fdb76344bfdd20c5193110e3750cbbd28ba86d73729d222b6cf4a729
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"run-parallel@npm:^1.1.9":
|
||||
version: 1.2.0
|
||||
resolution: "run-parallel@npm:1.2.0"
|
||||
@@ -2234,12 +2246,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"safe-regex2@npm:^3.1.0":
|
||||
version: 3.1.0
|
||||
resolution: "safe-regex2@npm:3.1.0"
|
||||
"safe-regex2@npm:^4.0.0":
|
||||
version: 4.0.0
|
||||
resolution: "safe-regex2@npm:4.0.0"
|
||||
dependencies:
|
||||
ret: "npm:~0.4.0"
|
||||
checksum: 4f9f7172662763619052a45599e515efc5dd10a932690f610c8ab808a4baa41be3feafefa444f7532651d721d12871a1c9a85330626cdd013b804e8f4240dff1
|
||||
ret: "npm:~0.5.0"
|
||||
checksum: 5607d4c20a92d66905d33556807da759ef0615d3b508ae7d6e7558e763bd59042bd30afb32d5f2456eb3f69a9d86fadbdf5e3e292494dae89fdae3087532602e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -2257,13 +2269,20 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"secure-json-parse@npm:^2.4.0, secure-json-parse@npm:^2.7.0":
|
||||
"secure-json-parse@npm:^2.7.0":
|
||||
version: 2.7.0
|
||||
resolution: "secure-json-parse@npm:2.7.0"
|
||||
checksum: 974386587060b6fc5b1ac06481b2f9dbbb0d63c860cc73dc7533f27835fdb67b0ef08762dbfef25625c15bc0a0c366899e00076cb0d556af06b71e22f1dede4c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"secure-json-parse@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "secure-json-parse@npm:3.0.0"
|
||||
checksum: 7376fb1ee470d311976329a2734e36aa7e282b3833cf765510ac2cfac70f923500c7bb5230f980062366fc2a607b7d3705948d87bb24db1c323dfd1591f1b0de
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"semver-regex@npm:^4.0.5":
|
||||
version: 4.0.5
|
||||
resolution: "semver-regex@npm:4.0.5"
|
||||
@@ -2280,7 +2299,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"semver@npm:^7.3.5, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4":
|
||||
"semver@npm:^7.3.5, semver@npm:^7.3.8, semver@npm:^7.5.3":
|
||||
version: 7.6.2
|
||||
resolution: "semver@npm:7.6.2"
|
||||
bin:
|
||||
@@ -2289,10 +2308,19 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"set-cookie-parser@npm:^2.4.1":
|
||||
version: 2.6.0
|
||||
resolution: "set-cookie-parser@npm:2.6.0"
|
||||
checksum: 8d451ebadb760989f93b634942c79de3c925ca7a986d133d08a80c40b5ae713ce12e354f0d5245c49f288c52daa7bd6554d5dc52f8a4eecaaf5e192881cf2b1f
|
||||
"semver@npm:^7.6.0":
|
||||
version: 7.6.3
|
||||
resolution: "semver@npm:7.6.3"
|
||||
bin:
|
||||
semver: bin/semver.js
|
||||
checksum: 36b1fbe1a2b6f873559cd57b238f1094a053dbfd997ceeb8757d79d1d2089c56d1321b9f1069ce263dc64cfa922fa1d2ad566b39426fe1ac6c723c1487589e10
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"set-cookie-parser@npm:^2.6.0":
|
||||
version: 2.7.1
|
||||
resolution: "set-cookie-parser@npm:2.7.1"
|
||||
checksum: c92b1130032693342bca13ea1b1bc93967ab37deec4387fcd8c2a843c0ef2fd9a9f3df25aea5bb3976cd05a91c2cf4632dd6164d6e1814208fb7d7e14edd42b4
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -2434,13 +2462,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"stream-wormhole@npm:^1.1.0":
|
||||
version: 1.1.0
|
||||
resolution: "stream-wormhole@npm:1.1.0"
|
||||
checksum: cc19e0235c5d031bd530fa83913c807d9525fa4ba33d51691dd822c0726b8b7ef138b34f289d063a3018cddba67d3ba7fd0ecedaa97242a0f1ed2eed3c6a2ab1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0":
|
||||
version: 4.2.3
|
||||
resolution: "string-width@npm:4.2.3"
|
||||
@@ -2560,7 +2581,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"toad-cache@npm:^3.3.0":
|
||||
"toad-cache@npm:^3.7.0":
|
||||
version: 3.7.0
|
||||
resolution: "toad-cache@npm:3.7.0"
|
||||
checksum: cdc62aacc047e94eab21697943e117bbb1938168a03e5e85fdba28ab6ea66f4796ff16b219019a64d2115048378f9dd1f4e62c78c1f1d4961d0b3d23f9a9374d
|
||||
@@ -2586,30 +2607,23 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tweetnacl@npm:^1.0.3":
|
||||
version: 1.0.3
|
||||
resolution: "tweetnacl@npm:1.0.3"
|
||||
checksum: ca122c2f86631f3c0f6d28efb44af2a301d4a557a62a3e2460286b08e97567b258c2212e4ad1cfa22bd6a57edcdc54ba76ebe946847450ab0999e6d48ccae332
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript@npm:^5.5.2":
|
||||
version: 5.5.2
|
||||
resolution: "typescript@npm:5.5.2"
|
||||
"typescript@npm:^5.6.3":
|
||||
version: 5.6.3
|
||||
resolution: "typescript@npm:5.6.3"
|
||||
bin:
|
||||
tsc: bin/tsc
|
||||
tsserver: bin/tsserver
|
||||
checksum: 9118b20f248e76b0dbff8737fef65dfa89d02668d4e633d2c5ceac99033a0ca5e8a1c1a53bc94da68e8f67677a88f318663dde859c9e9a09c1e116415daec2ba
|
||||
checksum: c328e418e124b500908781d9f7b9b93cf08b66bf5936d94332b463822eea2f4e62973bfb3b8a745fdc038785cb66cf59d1092bac3ec2ac6a3e5854687f7833f1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript@patch:typescript@npm%3A^5.5.2#optional!builtin<compat/typescript>":
|
||||
version: 5.5.2
|
||||
resolution: "typescript@patch:typescript@npm%3A5.5.2#optional!builtin<compat/typescript>::version=5.5.2&hash=e012d7"
|
||||
"typescript@patch:typescript@npm%3A^5.6.3#optional!builtin<compat/typescript>":
|
||||
version: 5.6.3
|
||||
resolution: "typescript@patch:typescript@npm%3A5.6.3#optional!builtin<compat/typescript>::version=5.6.3&hash=e012d7"
|
||||
bin:
|
||||
tsc: bin/tsc
|
||||
tsserver: bin/tsserver
|
||||
checksum: 28b3de2ddaf63a7620e7ddbe5d377af71ce93ecc558c41bf0e3d88661d8e6e7aa6c7739164fef98055f69819e41faca49252938ef3633a3dff2734cca6a9042e
|
||||
checksum: dc4bec403cd33a204b655b1152a096a08e7bad2c931cb59ef8ff26b6f2aa541bf98f09fc157958a60c921b1983a8dde9a85b692f9de60fa8f574fd131e3ae4dd
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -2620,6 +2634,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"undici-types@npm:~6.19.8":
|
||||
version: 6.19.8
|
||||
resolution: "undici-types@npm:6.19.8"
|
||||
checksum: cf0b48ed4fc99baf56584afa91aaffa5010c268b8842f62e02f752df209e3dea138b372a60a963b3b2576ed932f32329ce7ddb9cb5f27a6c83040d8cd74b7a70
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"unique-filename@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "unique-filename@npm:3.0.0"
|
||||
@@ -2726,7 +2747,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ws@npm:^8.16.0":
|
||||
"ws@npm:^8.18.0":
|
||||
version: 8.18.0
|
||||
resolution: "ws@npm:8.18.0"
|
||||
peerDependencies:
|
||||
|
||||
@@ -13,14 +13,14 @@
|
||||
"setup-dd": ""
|
||||
},
|
||||
"dependencies": {
|
||||
"@discordeno/bot": "19.0.0-next.92bf166",
|
||||
"@discordeno/bot": "19.0.0",
|
||||
"chalk": "^5.3.0",
|
||||
"dotenv": "^16.4.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@swc/cli": "^0.3.12",
|
||||
"@swc/core": "^1.6.3",
|
||||
"@types/node": "^20.14.6",
|
||||
"typescript": "^5.5.2"
|
||||
"@swc/cli": "^0.5.0",
|
||||
"@swc/core": "^1.9.2",
|
||||
"@types/node": "^22.9.0",
|
||||
"typescript": "^5.6.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
import { type Bot, Collection, Intents, createBot } from '@discordeno/bot'
|
||||
import { Collection, Intents, createBot } from '@discordeno/bot'
|
||||
import { configs } from './config.js'
|
||||
import type { Command } from './types/commands.js'
|
||||
|
||||
const rawBot = createBot({
|
||||
token: configs.token,
|
||||
intents: Intents.Guilds,
|
||||
desiredProperties: {
|
||||
interaction: {
|
||||
id: true,
|
||||
type: true,
|
||||
data: true,
|
||||
token: true,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
// Setup desired properties
|
||||
rawBot.transformers.desiredProperties.interaction.id = true
|
||||
rawBot.transformers.desiredProperties.interaction.type = true
|
||||
rawBot.transformers.desiredProperties.interaction.data = true
|
||||
rawBot.transformers.desiredProperties.interaction.token = true
|
||||
|
||||
export const bot = rawBot as BotWithCommands
|
||||
|
||||
// Create the command collection
|
||||
bot.commands = new Collection()
|
||||
|
||||
export interface BotWithCommands extends Bot {
|
||||
commands: Collection<string, Command>
|
||||
}
|
||||
export type BotWithCommands = typeof rawBot & { commands: Collection<string, Command> }
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import type { ApplicationCommandOption, ApplicationCommandTypes, Interaction } from '@discordeno/bot'
|
||||
import type { ApplicationCommandOption, ApplicationCommandTypes } from '@discordeno/bot'
|
||||
import type { bot } from '../bot.js'
|
||||
|
||||
export interface Command {
|
||||
/** The name of this command. */
|
||||
@@ -12,5 +13,5 @@ export interface Command {
|
||||
/** The options for this command */
|
||||
options?: ApplicationCommandOption[]
|
||||
/** This will be executed when the command is run. */
|
||||
execute: (interaction: Interaction) => unknown
|
||||
execute: (interaction: typeof bot.transformers.$inferredTypes.interaction) => unknown
|
||||
}
|
||||
|
||||
@@ -5,54 +5,56 @@ __metadata:
|
||||
version: 8
|
||||
cacheKey: 10
|
||||
|
||||
"@discordeno/bot@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/bot@npm:19.0.0-next.92bf166"
|
||||
"@discordeno/bot@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/bot@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/gateway": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/rest": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/types": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/utils": "npm:19.0.0-next.92bf166"
|
||||
checksum: 3020e74c774eae34307d434ad38f983e90839dc5fad7578f3cda4fba6c1efb7a22c4f4cdcfff58c54b62cc14976ad974256955d5117e490f78ec9e835e02c682
|
||||
"@discordeno/gateway": "npm:19.0.0"
|
||||
"@discordeno/rest": "npm:19.0.0"
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
"@discordeno/utils": "npm:19.0.0"
|
||||
checksum: 86ac4cd61761c1b3c3fa82db08742dcdba18ffb1b6042455c8a5e8cdd02231543c3c2d43dfb29084d44034cafebdc6ab51969c5930281ab2be83d5b159b69726
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/gateway@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/gateway@npm:19.0.0-next.92bf166"
|
||||
"@discordeno/gateway@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/gateway@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/types": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/utils": "npm:19.0.0-next.92bf166"
|
||||
ws: "npm:^8.16.0"
|
||||
checksum: 6a11ca7a4cb98f48726664d0baa27d04e26342bf94d6e439494e462636af20d17b567e9d3e2e478465aabcecb98a21e54b860b39b9f1022eef922e76d947ddcb
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
"@discordeno/utils": "npm:19.0.0"
|
||||
fzstd: "npm:^0.1.1"
|
||||
ws: "npm:^8.18.0"
|
||||
dependenciesMeta:
|
||||
fzstd:
|
||||
optional: true
|
||||
checksum: 241ec9981bf47ff894990889477fbc1ce91361648534189361e9dca4d927aba15c941604da29ba135cb20871fac7e82e5cc1eed1df6ef3d86bbcdfdca3448649
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/rest@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/rest@npm:19.0.0-next.92bf166"
|
||||
"@discordeno/rest@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/rest@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/types": "npm:19.0.0-next.92bf166"
|
||||
"@discordeno/utils": "npm:19.0.0-next.92bf166"
|
||||
dotenv: "npm:^16.4.5"
|
||||
checksum: 45f6ba4791003b77c883e991ad348597197d70e25e335b8628a03bd2effa8e2047a2f987f4c0b6ee8b17c01f77055d7a1ddc9f5350eb8f1c8ff8c8d39f91d787
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
"@discordeno/utils": "npm:19.0.0"
|
||||
checksum: e1ce6c092566e58c5d407a5fee7c6c38f988251abcbaaf14beaa084691b4c52dc4f6c54f46974735090fafe174b1914374edd074bffd441e11d76851575a136f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/types@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/types@npm:19.0.0-next.92bf166"
|
||||
checksum: f88e78a18e51c179b94ef14e8bcdd6b5e6c5f25bdd6c4308bec121e5e59533612b36ed0e7a447daedc009053e1e30c6c8e13b2276bb1ce7e2f840ff58473a2ef
|
||||
"@discordeno/types@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/types@npm:19.0.0"
|
||||
checksum: aaf832d6510b7aa0ead75bd5c1d1990f3a77fa980d40122d6d092abc571280aed6864b10fdda705d70bd7ba73961f4b3a0ee28c6b7cabb09595574f65fcfd61c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/utils@npm:19.0.0-next.92bf166":
|
||||
version: 19.0.0-next.92bf166
|
||||
resolution: "@discordeno/utils@npm:19.0.0-next.92bf166"
|
||||
"@discordeno/utils@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/utils@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/types": "npm:19.0.0-next.92bf166"
|
||||
tweetnacl: "npm:^1.0.3"
|
||||
checksum: 7962a057ba5908936e4224df70b9ceaffcb8ec7ad220a999b36fc0601365b380bb0de01b6adfa4c36250247e3d15e22215fc63bbe3634b932434411c5f4ca13d
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
checksum: b2d430099672cfb8b68d6a9bd12803cd69cb909dc1f368d8305a4bb1067499babff05997a29599b51029d0add435bea4a03929140abf77dd83e1741baaa37855
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -149,9 +151,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/cli@npm:^0.3.12":
|
||||
version: 0.3.12
|
||||
resolution: "@swc/cli@npm:0.3.12"
|
||||
"@swc/cli@npm:^0.5.0":
|
||||
version: 0.5.0
|
||||
resolution: "@swc/cli@npm:0.5.0"
|
||||
dependencies:
|
||||
"@mole-inc/bin-wrapper": "npm:^8.0.1"
|
||||
"@swc/counter": "npm:^0.1.3"
|
||||
@@ -172,96 +174,96 @@ __metadata:
|
||||
spack: bin/spack.js
|
||||
swc: bin/swc.js
|
||||
swcx: bin/swcx.js
|
||||
checksum: fee260434fad8eed0328f4db17f42ce0864b93b90fcb02f3f0eb3aad994b5a6ae4bfdfb6d2329377e0cd8d07adc61cca42e290bf0005c1ab4d004d4a0b152db4
|
||||
checksum: 033b682f1c25c8fae731414d2a463a0e455452bf9349c025cd88ea63ee1e5a589032eb206063fd925daf12065c9f1e5b4680cef50cc24674681c4d2583b7dca0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-darwin-arm64@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-darwin-arm64@npm:1.6.3"
|
||||
"@swc/core-darwin-arm64@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-darwin-arm64@npm:1.9.2"
|
||||
conditions: os=darwin & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-darwin-x64@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-darwin-x64@npm:1.6.3"
|
||||
"@swc/core-darwin-x64@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-darwin-x64@npm:1.9.2"
|
||||
conditions: os=darwin & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm-gnueabihf@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.6.3"
|
||||
"@swc/core-linux-arm-gnueabihf@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.9.2"
|
||||
conditions: os=linux & cpu=arm
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm64-gnu@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-arm64-gnu@npm:1.6.3"
|
||||
"@swc/core-linux-arm64-gnu@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-arm64-gnu@npm:1.9.2"
|
||||
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm64-musl@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-arm64-musl@npm:1.6.3"
|
||||
"@swc/core-linux-arm64-musl@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-arm64-musl@npm:1.9.2"
|
||||
conditions: os=linux & cpu=arm64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-x64-gnu@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-x64-gnu@npm:1.6.3"
|
||||
"@swc/core-linux-x64-gnu@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-x64-gnu@npm:1.9.2"
|
||||
conditions: os=linux & cpu=x64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-x64-musl@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-linux-x64-musl@npm:1.6.3"
|
||||
"@swc/core-linux-x64-musl@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-x64-musl@npm:1.9.2"
|
||||
conditions: os=linux & cpu=x64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-arm64-msvc@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-win32-arm64-msvc@npm:1.6.3"
|
||||
"@swc/core-win32-arm64-msvc@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-win32-arm64-msvc@npm:1.9.2"
|
||||
conditions: os=win32 & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-ia32-msvc@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-win32-ia32-msvc@npm:1.6.3"
|
||||
"@swc/core-win32-ia32-msvc@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-win32-ia32-msvc@npm:1.9.2"
|
||||
conditions: os=win32 & cpu=ia32
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-x64-msvc@npm:1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core-win32-x64-msvc@npm:1.6.3"
|
||||
"@swc/core-win32-x64-msvc@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-win32-x64-msvc@npm:1.9.2"
|
||||
conditions: os=win32 & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core@npm:^1.6.3":
|
||||
version: 1.6.3
|
||||
resolution: "@swc/core@npm:1.6.3"
|
||||
"@swc/core@npm:^1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core@npm:1.9.2"
|
||||
dependencies:
|
||||
"@swc/core-darwin-arm64": "npm:1.6.3"
|
||||
"@swc/core-darwin-x64": "npm:1.6.3"
|
||||
"@swc/core-linux-arm-gnueabihf": "npm:1.6.3"
|
||||
"@swc/core-linux-arm64-gnu": "npm:1.6.3"
|
||||
"@swc/core-linux-arm64-musl": "npm:1.6.3"
|
||||
"@swc/core-linux-x64-gnu": "npm:1.6.3"
|
||||
"@swc/core-linux-x64-musl": "npm:1.6.3"
|
||||
"@swc/core-win32-arm64-msvc": "npm:1.6.3"
|
||||
"@swc/core-win32-ia32-msvc": "npm:1.6.3"
|
||||
"@swc/core-win32-x64-msvc": "npm:1.6.3"
|
||||
"@swc/core-darwin-arm64": "npm:1.9.2"
|
||||
"@swc/core-darwin-x64": "npm:1.9.2"
|
||||
"@swc/core-linux-arm-gnueabihf": "npm:1.9.2"
|
||||
"@swc/core-linux-arm64-gnu": "npm:1.9.2"
|
||||
"@swc/core-linux-arm64-musl": "npm:1.9.2"
|
||||
"@swc/core-linux-x64-gnu": "npm:1.9.2"
|
||||
"@swc/core-linux-x64-musl": "npm:1.9.2"
|
||||
"@swc/core-win32-arm64-msvc": "npm:1.9.2"
|
||||
"@swc/core-win32-ia32-msvc": "npm:1.9.2"
|
||||
"@swc/core-win32-x64-msvc": "npm:1.9.2"
|
||||
"@swc/counter": "npm:^0.1.3"
|
||||
"@swc/types": "npm:^0.1.8"
|
||||
"@swc/types": "npm:^0.1.15"
|
||||
peerDependencies:
|
||||
"@swc/helpers": "*"
|
||||
dependenciesMeta:
|
||||
@@ -288,7 +290,7 @@ __metadata:
|
||||
peerDependenciesMeta:
|
||||
"@swc/helpers":
|
||||
optional: true
|
||||
checksum: b4c84a083ecabb0280ba53dffa65a5a575321de94081ad52bd12027fe3b5c8957978f2211b6036e2e28d904dd046fca238106c2106b32d02b752808a51193d35
|
||||
checksum: 6793f2014a016f90b1c41a695f6d3a14d574e129e78f651fe3d6dbacbc6d0836ab7a7eb445d873a302b060b25ae34c4e09d0f94574a71da47c6424c5fa58aa10
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -299,12 +301,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/types@npm:^0.1.8":
|
||||
version: 0.1.8
|
||||
resolution: "@swc/types@npm:0.1.8"
|
||||
"@swc/types@npm:^0.1.15":
|
||||
version: 0.1.15
|
||||
resolution: "@swc/types@npm:0.1.15"
|
||||
dependencies:
|
||||
"@swc/counter": "npm:^0.1.3"
|
||||
checksum: 2d1cda35116e03714137c1c37f4493efe0e26e88285ecc9dcdf6256a77984e367ea7b5f31d650f110fdcfd6ac53dff3ec77f841787ca328d2efa7b07ef1ac318
|
||||
checksum: d8bf063aeebac51290d1edf0cec52e2e5b5afced0dc6933510a86947e10f0f77976bc14c3efb5e8f265a9cbdeb0929e00e44b2f82c6d0f273997c5029417b769
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -361,12 +363,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/node@npm:^20.14.6":
|
||||
version: 20.14.6
|
||||
resolution: "@types/node@npm:20.14.6"
|
||||
"@types/node@npm:^22.9.0":
|
||||
version: 22.9.0
|
||||
resolution: "@types/node@npm:22.9.0"
|
||||
dependencies:
|
||||
undici-types: "npm:~5.26.4"
|
||||
checksum: 1dcfeeb03ce3c3a1d8a537fefee7cd0cffb78f89e9535b74ee12940559566b57c39dad20d1b165b60b5727408dd44e1a52e5c01cf02d0a99d93ef3da8062c86e
|
||||
undici-types: "npm:~6.19.8"
|
||||
checksum: a7df3426891868b0f5fb03e46aeddd8446178233521c624a44531c92a040cf08a82d8235f7e1e02af731fd16984665d4d71f3418caf9c2788313b10f040d615d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -628,13 +630,13 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "dd-minimal-bot@workspace:."
|
||||
dependencies:
|
||||
"@discordeno/bot": "npm:19.0.0-next.92bf166"
|
||||
"@swc/cli": "npm:^0.3.12"
|
||||
"@swc/core": "npm:^1.6.3"
|
||||
"@types/node": "npm:^20.14.6"
|
||||
"@discordeno/bot": "npm:19.0.0"
|
||||
"@swc/cli": "npm:^0.5.0"
|
||||
"@swc/core": "npm:^1.9.2"
|
||||
"@types/node": "npm:^22.9.0"
|
||||
chalk: "npm:^5.3.0"
|
||||
dotenv: "npm:^16.4.5"
|
||||
typescript: "npm:^5.5.2"
|
||||
typescript: "npm:^5.6.3"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -897,6 +899,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fzstd@npm:^0.1.1":
|
||||
version: 0.1.1
|
||||
resolution: "fzstd@npm:0.1.1"
|
||||
checksum: 455b968aeb764f06d9c39a5c8b45eefd645f7ee9129896e890eafb8ab367482f8495de12907021a32f6544494305a42a2056c30c63efac06181e6efcdab3fe78
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"get-stream@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "get-stream@npm:3.0.0"
|
||||
@@ -1972,30 +1981,23 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tweetnacl@npm:^1.0.3":
|
||||
version: 1.0.3
|
||||
resolution: "tweetnacl@npm:1.0.3"
|
||||
checksum: ca122c2f86631f3c0f6d28efb44af2a301d4a557a62a3e2460286b08e97567b258c2212e4ad1cfa22bd6a57edcdc54ba76ebe946847450ab0999e6d48ccae332
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript@npm:^5.5.2":
|
||||
version: 5.5.2
|
||||
resolution: "typescript@npm:5.5.2"
|
||||
"typescript@npm:^5.6.3":
|
||||
version: 5.6.3
|
||||
resolution: "typescript@npm:5.6.3"
|
||||
bin:
|
||||
tsc: bin/tsc
|
||||
tsserver: bin/tsserver
|
||||
checksum: 9118b20f248e76b0dbff8737fef65dfa89d02668d4e633d2c5ceac99033a0ca5e8a1c1a53bc94da68e8f67677a88f318663dde859c9e9a09c1e116415daec2ba
|
||||
checksum: c328e418e124b500908781d9f7b9b93cf08b66bf5936d94332b463822eea2f4e62973bfb3b8a745fdc038785cb66cf59d1092bac3ec2ac6a3e5854687f7833f1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript@patch:typescript@npm%3A^5.5.2#optional!builtin<compat/typescript>":
|
||||
version: 5.5.2
|
||||
resolution: "typescript@patch:typescript@npm%3A5.5.2#optional!builtin<compat/typescript>::version=5.5.2&hash=e012d7"
|
||||
"typescript@patch:typescript@npm%3A^5.6.3#optional!builtin<compat/typescript>":
|
||||
version: 5.6.3
|
||||
resolution: "typescript@patch:typescript@npm%3A5.6.3#optional!builtin<compat/typescript>::version=5.6.3&hash=e012d7"
|
||||
bin:
|
||||
tsc: bin/tsc
|
||||
tsserver: bin/tsserver
|
||||
checksum: 28b3de2ddaf63a7620e7ddbe5d377af71ce93ecc558c41bf0e3d88661d8e6e7aa6c7739164fef98055f69819e41faca49252938ef3633a3dff2734cca6a9042e
|
||||
checksum: dc4bec403cd33a204b655b1152a096a08e7bad2c931cb59ef8ff26b6f2aa541bf98f09fc157958a60c921b1983a8dde9a85b692f9de60fa8f574fd131e3ae4dd
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -2006,6 +2008,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"undici-types@npm:~6.19.8":
|
||||
version: 6.19.8
|
||||
resolution: "undici-types@npm:6.19.8"
|
||||
checksum: cf0b48ed4fc99baf56584afa91aaffa5010c268b8842f62e02f752df209e3dea138b372a60a963b3b2576ed932f32329ce7ddb9cb5f27a6c83040d8cd74b7a70
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"unique-filename@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "unique-filename@npm:3.0.0"
|
||||
@@ -2093,7 +2102,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ws@npm:^8.16.0":
|
||||
"ws@npm:^8.18.0":
|
||||
version: 8.18.0
|
||||
resolution: "ws@npm:8.18.0"
|
||||
peerDependencies:
|
||||
|
||||
@@ -10,5 +10,6 @@ Example bot for reaction-roles using Discord Interactions and not classic reacti
|
||||
## Run the bot
|
||||
|
||||
1. `yarn` to install the dependencies
|
||||
1. `yarn postinstall` to run the Discordeno Desired Properties CLI
|
||||
1. `yarn build` to build the .ts files into .js
|
||||
1. `yarn start` (or `node ./dist/index.js`) to run the bot
|
||||
|
||||
@@ -12,13 +12,13 @@
|
||||
"setup-dd": ""
|
||||
},
|
||||
"dependencies": {
|
||||
"@discordeno/bot": "19.0.0-next.ad7e74c",
|
||||
"@discordeno/bot": "19.0.0",
|
||||
"dotenv": "^16.4.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@swc/cli": "^0.3.12",
|
||||
"@swc/core": "^1.5.25",
|
||||
"@types/node": "^20.14.2",
|
||||
"typescript": "^5.4.5"
|
||||
"@swc/cli": "^0.5.0",
|
||||
"@swc/core": "^1.9.2",
|
||||
"@types/node": "^22.9.0",
|
||||
"typescript": "^5.6.3"
|
||||
}
|
||||
}
|
||||
|
||||
47
examples/reaction-roles/src/bot.ts
Normal file
47
examples/reaction-roles/src/bot.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
import { createBot } from '@discordeno/bot'
|
||||
import events from './events/index.js'
|
||||
|
||||
import { config } from 'dotenv'
|
||||
config()
|
||||
|
||||
const token = process.env.TOKEN
|
||||
|
||||
// Ensure the existence of the TOKEN env
|
||||
if (!token) throw new Error('The TOKEN environment variable needs to be defined.')
|
||||
|
||||
export const bot = createBot({
|
||||
token,
|
||||
desiredProperties: {
|
||||
user: {
|
||||
id: true,
|
||||
},
|
||||
message: {
|
||||
id: true,
|
||||
},
|
||||
member: {
|
||||
roles: true,
|
||||
},
|
||||
interaction: {
|
||||
id: true,
|
||||
data: true,
|
||||
type: true,
|
||||
user: true,
|
||||
token: true,
|
||||
member: true,
|
||||
message: true,
|
||||
guildId: true,
|
||||
channelId: true,
|
||||
},
|
||||
interactionCallbackResponse: {
|
||||
resource: true,
|
||||
},
|
||||
interactionResource: {
|
||||
message: true,
|
||||
},
|
||||
role: {
|
||||
id: true,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
bot.events = events
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { Interaction } from '@discordeno/bot'
|
||||
import type { CreateSlashApplicationCommand } from '@discordeno/types'
|
||||
import type { bot } from '../bot.js'
|
||||
import roles from './roles.js'
|
||||
|
||||
export const commands = new Map<string, Command>([roles].map((cmd) => [cmd.name, cmd]))
|
||||
@@ -8,5 +8,5 @@ export default commands
|
||||
|
||||
export interface Command extends CreateSlashApplicationCommand {
|
||||
/** Handler that will be executed when this command is triggered */
|
||||
execute: (interaction: Interaction, args: Record<string, unknown>) => Promise<unknown>
|
||||
execute: (interaction: typeof bot.transformers.$inferredTypes.interaction, args: Record<string, unknown>) => Promise<unknown>
|
||||
}
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
import assert from 'node:assert'
|
||||
import {
|
||||
type ActionRow,
|
||||
type ButtonComponent,
|
||||
DiscordInteractionContextType,
|
||||
type Interaction,
|
||||
MessageComponentTypes,
|
||||
type Role,
|
||||
type SelectMenuComponent,
|
||||
TextStyles,
|
||||
} from '@discordeno/bot'
|
||||
import { ApplicationCommandOptionTypes, ButtonStyles } from '@discordeno/types'
|
||||
import { bot } from '../bot.js'
|
||||
import ItemCollector from '../collector.js'
|
||||
import { collectors } from '../events/interactionCreate.js'
|
||||
import { bot } from '../index.js'
|
||||
import type { Command } from './index.js'
|
||||
|
||||
const command: Command = {
|
||||
@@ -91,13 +90,12 @@ const command: Command = {
|
||||
// NOTE: we use a copy so when we edit this actionRow the edits don't get applied to all the command executions, only this one, for example we do disable some buttons in some conditional cases
|
||||
const messageActionRow = structuredClone(messageActionRowTemplate)
|
||||
|
||||
await interaction.defer(true)
|
||||
const message = await interaction.respond(
|
||||
{
|
||||
content: 'Use the buttons in this message to edit the message below.',
|
||||
components: [messageActionRow],
|
||||
},
|
||||
{ isPrivate: true },
|
||||
{ isPrivate: true, withResponse: true },
|
||||
)
|
||||
|
||||
if (!message) {
|
||||
@@ -105,8 +103,10 @@ const command: Command = {
|
||||
return
|
||||
}
|
||||
|
||||
assert('resource' in message && message.resource?.message)
|
||||
|
||||
// Create the collector for the menu
|
||||
const itemCollector = new ItemCollector<Interaction>()
|
||||
const itemCollector = new ItemCollector<typeof bot.transformers.$inferredTypes.interaction>()
|
||||
collectors.add(itemCollector)
|
||||
|
||||
// For the new reaction role, we need to keep track of what the user gave us
|
||||
@@ -114,7 +114,7 @@ const command: Command = {
|
||||
|
||||
itemCollector.onItem(async (i) => {
|
||||
// We need to verify the interaction is for us.
|
||||
if (i.message?.id !== message.id) {
|
||||
if (i.message?.id !== message.resource?.message?.id) {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -314,7 +314,7 @@ export default command
|
||||
interface CommandArgs {
|
||||
reactions?: {
|
||||
create?: {
|
||||
role: Role
|
||||
role: typeof bot.transformers.$inferredTypes.role
|
||||
emoji: string
|
||||
color: ButtonStyles
|
||||
label?: string
|
||||
@@ -432,7 +432,7 @@ const selectLabelActionRow: ActionRow = {
|
||||
// Function to get all the actionRows with buttons for the reaction roles message
|
||||
function getRoleButtons(
|
||||
roles: Array<{
|
||||
role: Role
|
||||
role: typeof bot.transformers.$inferredTypes.role
|
||||
emoji: string
|
||||
color: ButtonStyles
|
||||
label?: string | undefined
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import type { EventHandlers } from '@discordeno/bot'
|
||||
import type { bot } from '../bot.js'
|
||||
import { event as interactionCreateEvent } from './interactionCreate.js'
|
||||
import { event as readyEvent } from './ready.js'
|
||||
|
||||
export const events = {
|
||||
interactionCreate: interactionCreateEvent,
|
||||
ready: readyEvent,
|
||||
} as Partial<EventHandlers>
|
||||
} as typeof bot.events
|
||||
|
||||
export default events
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import { type EventHandlers, type Interaction, InteractionTypes, MessageComponentTypes, commandOptionsParser } from '@discordeno/bot'
|
||||
import { InteractionTypes, MessageComponentTypes, commandOptionsParser } from '@discordeno/bot'
|
||||
import { bot } from '../bot.js'
|
||||
import type ItemCollector from '../collector.js'
|
||||
import commands from '../commands/index.js'
|
||||
|
||||
export const collectors = new Set<ItemCollector<Interaction>>()
|
||||
export const collectors = new Set<ItemCollector<typeof bot.transformers.$inferredTypes.interaction>>()
|
||||
|
||||
export const event: EventHandlers['interactionCreate'] = async (interaction) => {
|
||||
export const event: typeof bot.events.interactionCreate = async (interaction) => {
|
||||
// Give to all the collectors the interaction to use
|
||||
for (const collector of collectors) {
|
||||
collector.collect(interaction)
|
||||
@@ -18,6 +19,7 @@ export const event: EventHandlers['interactionCreate'] = async (interaction) =>
|
||||
if (!command) return
|
||||
|
||||
try {
|
||||
// @ts-expect-error commandOptionsParser is bugged at the moment, it wants an Interaction and not the desired props customized interaction
|
||||
await command.execute(interaction, commandOptionsParser(interaction))
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
@@ -38,14 +40,14 @@ export const event: EventHandlers['interactionCreate'] = async (interaction) =>
|
||||
|
||||
try {
|
||||
if (alreadyHasRole) {
|
||||
await interaction.bot.helpers.removeRole(interaction.guildId, interaction.user.id, roleId, `Reaction role button for role id ${roleId}`)
|
||||
await bot.helpers.removeRole(interaction.guildId, interaction.user.id, roleId, `Reaction role button for role id ${roleId}`)
|
||||
await interaction.respond(`I removed from you the <@&${roleId}> role.`, { isPrivate: true })
|
||||
return
|
||||
}
|
||||
|
||||
// You will get an invalid request made if the bot attempts to give a bot role, a role higher then him hightest role, a link role or if it does not have the Manage Roles permission
|
||||
// This could be prevented by checking for the roles that the bot owns and the role that the bot is trying to add
|
||||
await interaction.bot.helpers.addRole(interaction.guildId, interaction.user.id, roleId, `Reaction role button for role id ${roleId}`)
|
||||
await bot.helpers.addRole(interaction.guildId, interaction.user.id, roleId, `Reaction role button for role id ${roleId}`)
|
||||
await interaction.respond(`I added to you the <@&${roleId}> role.`, { isPrivate: true })
|
||||
} catch {
|
||||
// Respond with an error message
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import type { EventHandlers } from '@discordeno/bot'
|
||||
import { bot } from '../index.js'
|
||||
import { bot } from '../bot.js'
|
||||
|
||||
export const event: EventHandlers['ready'] = () => {
|
||||
export const event: typeof bot.events.ready = () => {
|
||||
// Print to the console when the bot has connected to discord and is ready to handle the events
|
||||
bot.logger.info('The bot is ready!')
|
||||
}
|
||||
|
||||
@@ -1,38 +1,4 @@
|
||||
import { createBot } from '@discordeno/bot'
|
||||
import { config } from 'dotenv'
|
||||
|
||||
import events from './events/index.js'
|
||||
|
||||
config()
|
||||
const token = process.env.TOKEN
|
||||
|
||||
// Ensure the existence of the TOKEN env
|
||||
if (!token) throw new Error('The TOKEN environment variable needs to be defined.')
|
||||
|
||||
export const bot = createBot({
|
||||
token,
|
||||
events,
|
||||
})
|
||||
|
||||
// Setup for the desiredProperties
|
||||
|
||||
bot.transformers.desiredProperties.user.id = true
|
||||
|
||||
bot.transformers.desiredProperties.message.id = true
|
||||
|
||||
bot.transformers.desiredProperties.member.roles = true
|
||||
|
||||
bot.transformers.desiredProperties.interaction.id = true
|
||||
bot.transformers.desiredProperties.interaction.data = true
|
||||
bot.transformers.desiredProperties.interaction.type = true
|
||||
bot.transformers.desiredProperties.interaction.user = true
|
||||
bot.transformers.desiredProperties.interaction.token = true
|
||||
bot.transformers.desiredProperties.interaction.member = true
|
||||
bot.transformers.desiredProperties.interaction.message = true
|
||||
bot.transformers.desiredProperties.interaction.guildId = true
|
||||
bot.transformers.desiredProperties.interaction.channelId = true
|
||||
|
||||
bot.transformers.desiredProperties.role.id = true
|
||||
import { bot } from './bot.js'
|
||||
|
||||
await bot.start()
|
||||
|
||||
|
||||
@@ -1,8 +1,14 @@
|
||||
import { config } from 'dotenv'
|
||||
|
||||
config()
|
||||
|
||||
import { bot } from './bot.js'
|
||||
import commands from './commands/index.js'
|
||||
import { bot } from './index.js'
|
||||
|
||||
const guildId = 'REPLACE WITH YOUR GUILD ID'
|
||||
|
||||
await bot.rest
|
||||
.upsertGuildApplicationCommands(guildId, [...commands.values()])
|
||||
.catch((e) => bot.logger.error('There was an error when updating the global commands', e))
|
||||
|
||||
process.exit(0)
|
||||
|
||||
@@ -5,54 +5,56 @@ __metadata:
|
||||
version: 8
|
||||
cacheKey: 10
|
||||
|
||||
"@discordeno/bot@npm:19.0.0-next.ad7e74c":
|
||||
version: 19.0.0-next.ad7e74c
|
||||
resolution: "@discordeno/bot@npm:19.0.0-next.ad7e74c"
|
||||
"@discordeno/bot@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/bot@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/gateway": "npm:19.0.0-next.ad7e74c"
|
||||
"@discordeno/rest": "npm:19.0.0-next.ad7e74c"
|
||||
"@discordeno/types": "npm:19.0.0-next.ad7e74c"
|
||||
"@discordeno/utils": "npm:19.0.0-next.ad7e74c"
|
||||
checksum: 0bbcd98f1bb42bde47d262a67fa7b42ff4f5ef8f4556ef3117b8204cb864c6f26c0066320374ede6cf0e9730988a5c0b12472108dcf0cbc45b951db305a0671c
|
||||
"@discordeno/gateway": "npm:19.0.0"
|
||||
"@discordeno/rest": "npm:19.0.0"
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
"@discordeno/utils": "npm:19.0.0"
|
||||
checksum: 86ac4cd61761c1b3c3fa82db08742dcdba18ffb1b6042455c8a5e8cdd02231543c3c2d43dfb29084d44034cafebdc6ab51969c5930281ab2be83d5b159b69726
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/gateway@npm:19.0.0-next.ad7e74c":
|
||||
version: 19.0.0-next.ad7e74c
|
||||
resolution: "@discordeno/gateway@npm:19.0.0-next.ad7e74c"
|
||||
"@discordeno/gateway@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/gateway@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/types": "npm:19.0.0-next.ad7e74c"
|
||||
"@discordeno/utils": "npm:19.0.0-next.ad7e74c"
|
||||
ws: "npm:^8.16.0"
|
||||
checksum: b16676060574a3a45c2388f7c73e62d7763bfdb87d5f0f84f673b7f68f34d5085e3a300c9a15f4120b2909ba776ef78336025c71541f68c50729379458ac9273
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
"@discordeno/utils": "npm:19.0.0"
|
||||
fzstd: "npm:^0.1.1"
|
||||
ws: "npm:^8.18.0"
|
||||
dependenciesMeta:
|
||||
fzstd:
|
||||
optional: true
|
||||
checksum: 241ec9981bf47ff894990889477fbc1ce91361648534189361e9dca4d927aba15c941604da29ba135cb20871fac7e82e5cc1eed1df6ef3d86bbcdfdca3448649
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/rest@npm:19.0.0-next.ad7e74c":
|
||||
version: 19.0.0-next.ad7e74c
|
||||
resolution: "@discordeno/rest@npm:19.0.0-next.ad7e74c"
|
||||
"@discordeno/rest@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/rest@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/types": "npm:19.0.0-next.ad7e74c"
|
||||
"@discordeno/utils": "npm:19.0.0-next.ad7e74c"
|
||||
dotenv: "npm:^16.4.5"
|
||||
checksum: d0fd00393b5845c17c862e9d8ce5197363d60db3073136b9b6f19b1fa5a20ea3020f180e627140f8e12a6cab65f736e3bbad1b376d959e49341efa81e43c65b8
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
"@discordeno/utils": "npm:19.0.0"
|
||||
checksum: e1ce6c092566e58c5d407a5fee7c6c38f988251abcbaaf14beaa084691b4c52dc4f6c54f46974735090fafe174b1914374edd074bffd441e11d76851575a136f
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/types@npm:19.0.0-next.ad7e74c":
|
||||
version: 19.0.0-next.ad7e74c
|
||||
resolution: "@discordeno/types@npm:19.0.0-next.ad7e74c"
|
||||
checksum: 3981908e1f88c22821a6abdc2056791a6dc75d09b9bc6ee96a1689871330745574c8824c314cf200b7df16d48215dc9b00e41f2fff03db26102c54422a82ab88
|
||||
"@discordeno/types@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/types@npm:19.0.0"
|
||||
checksum: aaf832d6510b7aa0ead75bd5c1d1990f3a77fa980d40122d6d092abc571280aed6864b10fdda705d70bd7ba73961f4b3a0ee28c6b7cabb09595574f65fcfd61c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@discordeno/utils@npm:19.0.0-next.ad7e74c":
|
||||
version: 19.0.0-next.ad7e74c
|
||||
resolution: "@discordeno/utils@npm:19.0.0-next.ad7e74c"
|
||||
"@discordeno/utils@npm:19.0.0":
|
||||
version: 19.0.0
|
||||
resolution: "@discordeno/utils@npm:19.0.0"
|
||||
dependencies:
|
||||
"@discordeno/types": "npm:19.0.0-next.ad7e74c"
|
||||
tweetnacl: "npm:^1.0.3"
|
||||
checksum: 3b9265737208db205732e5f442d82c10a27952359a98ffb2f8835a4c94d43520d0490ab488faec68f40bd3205a42f4877804397eade83ada658a00e854270dc7
|
||||
"@discordeno/types": "npm:19.0.0"
|
||||
checksum: b2d430099672cfb8b68d6a9bd12803cd69cb909dc1f368d8305a4bb1067499babff05997a29599b51029d0add435bea4a03929140abf77dd83e1741baaa37855
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -149,9 +151,9 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/cli@npm:^0.3.12":
|
||||
version: 0.3.12
|
||||
resolution: "@swc/cli@npm:0.3.12"
|
||||
"@swc/cli@npm:^0.5.0":
|
||||
version: 0.5.0
|
||||
resolution: "@swc/cli@npm:0.5.0"
|
||||
dependencies:
|
||||
"@mole-inc/bin-wrapper": "npm:^8.0.1"
|
||||
"@swc/counter": "npm:^0.1.3"
|
||||
@@ -172,96 +174,96 @@ __metadata:
|
||||
spack: bin/spack.js
|
||||
swc: bin/swc.js
|
||||
swcx: bin/swcx.js
|
||||
checksum: fee260434fad8eed0328f4db17f42ce0864b93b90fcb02f3f0eb3aad994b5a6ae4bfdfb6d2329377e0cd8d07adc61cca42e290bf0005c1ab4d004d4a0b152db4
|
||||
checksum: 033b682f1c25c8fae731414d2a463a0e455452bf9349c025cd88ea63ee1e5a589032eb206063fd925daf12065c9f1e5b4680cef50cc24674681c4d2583b7dca0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-darwin-arm64@npm:1.5.25":
|
||||
version: 1.5.25
|
||||
resolution: "@swc/core-darwin-arm64@npm:1.5.25"
|
||||
"@swc/core-darwin-arm64@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-darwin-arm64@npm:1.9.2"
|
||||
conditions: os=darwin & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-darwin-x64@npm:1.5.25":
|
||||
version: 1.5.25
|
||||
resolution: "@swc/core-darwin-x64@npm:1.5.25"
|
||||
"@swc/core-darwin-x64@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-darwin-x64@npm:1.9.2"
|
||||
conditions: os=darwin & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm-gnueabihf@npm:1.5.25":
|
||||
version: 1.5.25
|
||||
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.5.25"
|
||||
"@swc/core-linux-arm-gnueabihf@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.9.2"
|
||||
conditions: os=linux & cpu=arm
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm64-gnu@npm:1.5.25":
|
||||
version: 1.5.25
|
||||
resolution: "@swc/core-linux-arm64-gnu@npm:1.5.25"
|
||||
"@swc/core-linux-arm64-gnu@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-arm64-gnu@npm:1.9.2"
|
||||
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-arm64-musl@npm:1.5.25":
|
||||
version: 1.5.25
|
||||
resolution: "@swc/core-linux-arm64-musl@npm:1.5.25"
|
||||
"@swc/core-linux-arm64-musl@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-arm64-musl@npm:1.9.2"
|
||||
conditions: os=linux & cpu=arm64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-x64-gnu@npm:1.5.25":
|
||||
version: 1.5.25
|
||||
resolution: "@swc/core-linux-x64-gnu@npm:1.5.25"
|
||||
"@swc/core-linux-x64-gnu@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-x64-gnu@npm:1.9.2"
|
||||
conditions: os=linux & cpu=x64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-linux-x64-musl@npm:1.5.25":
|
||||
version: 1.5.25
|
||||
resolution: "@swc/core-linux-x64-musl@npm:1.5.25"
|
||||
"@swc/core-linux-x64-musl@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-linux-x64-musl@npm:1.9.2"
|
||||
conditions: os=linux & cpu=x64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-arm64-msvc@npm:1.5.25":
|
||||
version: 1.5.25
|
||||
resolution: "@swc/core-win32-arm64-msvc@npm:1.5.25"
|
||||
"@swc/core-win32-arm64-msvc@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-win32-arm64-msvc@npm:1.9.2"
|
||||
conditions: os=win32 & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-ia32-msvc@npm:1.5.25":
|
||||
version: 1.5.25
|
||||
resolution: "@swc/core-win32-ia32-msvc@npm:1.5.25"
|
||||
"@swc/core-win32-ia32-msvc@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-win32-ia32-msvc@npm:1.9.2"
|
||||
conditions: os=win32 & cpu=ia32
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core-win32-x64-msvc@npm:1.5.25":
|
||||
version: 1.5.25
|
||||
resolution: "@swc/core-win32-x64-msvc@npm:1.5.25"
|
||||
"@swc/core-win32-x64-msvc@npm:1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core-win32-x64-msvc@npm:1.9.2"
|
||||
conditions: os=win32 & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/core@npm:^1.5.25":
|
||||
version: 1.5.25
|
||||
resolution: "@swc/core@npm:1.5.25"
|
||||
"@swc/core@npm:^1.9.2":
|
||||
version: 1.9.2
|
||||
resolution: "@swc/core@npm:1.9.2"
|
||||
dependencies:
|
||||
"@swc/core-darwin-arm64": "npm:1.5.25"
|
||||
"@swc/core-darwin-x64": "npm:1.5.25"
|
||||
"@swc/core-linux-arm-gnueabihf": "npm:1.5.25"
|
||||
"@swc/core-linux-arm64-gnu": "npm:1.5.25"
|
||||
"@swc/core-linux-arm64-musl": "npm:1.5.25"
|
||||
"@swc/core-linux-x64-gnu": "npm:1.5.25"
|
||||
"@swc/core-linux-x64-musl": "npm:1.5.25"
|
||||
"@swc/core-win32-arm64-msvc": "npm:1.5.25"
|
||||
"@swc/core-win32-ia32-msvc": "npm:1.5.25"
|
||||
"@swc/core-win32-x64-msvc": "npm:1.5.25"
|
||||
"@swc/core-darwin-arm64": "npm:1.9.2"
|
||||
"@swc/core-darwin-x64": "npm:1.9.2"
|
||||
"@swc/core-linux-arm-gnueabihf": "npm:1.9.2"
|
||||
"@swc/core-linux-arm64-gnu": "npm:1.9.2"
|
||||
"@swc/core-linux-arm64-musl": "npm:1.9.2"
|
||||
"@swc/core-linux-x64-gnu": "npm:1.9.2"
|
||||
"@swc/core-linux-x64-musl": "npm:1.9.2"
|
||||
"@swc/core-win32-arm64-msvc": "npm:1.9.2"
|
||||
"@swc/core-win32-ia32-msvc": "npm:1.9.2"
|
||||
"@swc/core-win32-x64-msvc": "npm:1.9.2"
|
||||
"@swc/counter": "npm:^0.1.3"
|
||||
"@swc/types": "npm:^0.1.7"
|
||||
"@swc/types": "npm:^0.1.15"
|
||||
peerDependencies:
|
||||
"@swc/helpers": "*"
|
||||
dependenciesMeta:
|
||||
@@ -288,7 +290,7 @@ __metadata:
|
||||
peerDependenciesMeta:
|
||||
"@swc/helpers":
|
||||
optional: true
|
||||
checksum: 1ad878fe015d01c34ff20d8aee15b1cfb5cd66f9e8744e4be69e09628ade3c1108aa00c693da4eed6cc6ef08d686f6cab48a088ee61e933662eb8dd7b79d2e44
|
||||
checksum: 6793f2014a016f90b1c41a695f6d3a14d574e129e78f651fe3d6dbacbc6d0836ab7a7eb445d873a302b060b25ae34c4e09d0f94574a71da47c6424c5fa58aa10
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -299,12 +301,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@swc/types@npm:^0.1.7":
|
||||
version: 0.1.7
|
||||
resolution: "@swc/types@npm:0.1.7"
|
||||
"@swc/types@npm:^0.1.15":
|
||||
version: 0.1.15
|
||||
resolution: "@swc/types@npm:0.1.15"
|
||||
dependencies:
|
||||
"@swc/counter": "npm:^0.1.3"
|
||||
checksum: ed66c26b36972a74f852c1781fadc75946578abfeeea58f110684833b5d1e70f28a77ddb82fd5bf3cf3c4dad0e1b6a1c924d7e2cc7a99f9b16ed16fe266bba25
|
||||
checksum: d8bf063aeebac51290d1edf0cec52e2e5b5afced0dc6933510a86947e10f0f77976bc14c3efb5e8f265a9cbdeb0929e00e44b2f82c6d0f273997c5029417b769
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -361,12 +363,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/node@npm:^20.14.2":
|
||||
version: 20.14.2
|
||||
resolution: "@types/node@npm:20.14.2"
|
||||
"@types/node@npm:^22.9.0":
|
||||
version: 22.9.0
|
||||
resolution: "@types/node@npm:22.9.0"
|
||||
dependencies:
|
||||
undici-types: "npm:~5.26.4"
|
||||
checksum: c38e47b190fa0a8bdfde24b036dddcf9401551f2fb170a90ff33625c7d6f218907e81c74e0fa6e394804a32623c24c60c50e249badc951007830f0d02c48ee0f
|
||||
undici-types: "npm:~6.19.8"
|
||||
checksum: a7df3426891868b0f5fb03e46aeddd8446178233521c624a44531c92a040cf08a82d8235f7e1e02af731fd16984665d4d71f3418caf9c2788313b10f040d615d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -876,6 +878,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fzstd@npm:^0.1.1":
|
||||
version: 0.1.1
|
||||
resolution: "fzstd@npm:0.1.1"
|
||||
checksum: 455b968aeb764f06d9c39a5c8b45eefd645f7ee9129896e890eafb8ab367482f8495de12907021a32f6544494305a42a2056c30c63efac06181e6efcdab3fe78
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"get-stream@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "get-stream@npm:3.0.0"
|
||||
@@ -1604,12 +1613,12 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "reaction-roles@workspace:."
|
||||
dependencies:
|
||||
"@discordeno/bot": "npm:19.0.0-next.ad7e74c"
|
||||
"@swc/cli": "npm:^0.3.12"
|
||||
"@swc/core": "npm:^1.5.25"
|
||||
"@types/node": "npm:^20.14.2"
|
||||
"@discordeno/bot": "npm:19.0.0"
|
||||
"@swc/cli": "npm:^0.5.0"
|
||||
"@swc/core": "npm:^1.9.2"
|
||||
"@types/node": "npm:^22.9.0"
|
||||
dotenv: "npm:^16.4.5"
|
||||
typescript: "npm:^5.4.5"
|
||||
typescript: "npm:^5.6.3"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@@ -1950,30 +1959,23 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tweetnacl@npm:^1.0.3":
|
||||
version: 1.0.3
|
||||
resolution: "tweetnacl@npm:1.0.3"
|
||||
checksum: ca122c2f86631f3c0f6d28efb44af2a301d4a557a62a3e2460286b08e97567b258c2212e4ad1cfa22bd6a57edcdc54ba76ebe946847450ab0999e6d48ccae332
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript@npm:^5.4.5":
|
||||
version: 5.4.5
|
||||
resolution: "typescript@npm:5.4.5"
|
||||
"typescript@npm:^5.6.3":
|
||||
version: 5.6.3
|
||||
resolution: "typescript@npm:5.6.3"
|
||||
bin:
|
||||
tsc: bin/tsc
|
||||
tsserver: bin/tsserver
|
||||
checksum: d04a9e27e6d83861f2126665aa8d84847e8ebabcea9125b9ebc30370b98cb38b5dff2508d74e2326a744938191a83a69aa9fddab41f193ffa43eabfdf3f190a5
|
||||
checksum: c328e418e124b500908781d9f7b9b93cf08b66bf5936d94332b463822eea2f4e62973bfb3b8a745fdc038785cb66cf59d1092bac3ec2ac6a3e5854687f7833f1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"typescript@patch:typescript@npm%3A^5.4.5#optional!builtin<compat/typescript>":
|
||||
version: 5.4.5
|
||||
resolution: "typescript@patch:typescript@npm%3A5.4.5#optional!builtin<compat/typescript>::version=5.4.5&hash=e012d7"
|
||||
"typescript@patch:typescript@npm%3A^5.6.3#optional!builtin<compat/typescript>":
|
||||
version: 5.6.3
|
||||
resolution: "typescript@patch:typescript@npm%3A5.6.3#optional!builtin<compat/typescript>::version=5.6.3&hash=e012d7"
|
||||
bin:
|
||||
tsc: bin/tsc
|
||||
tsserver: bin/tsserver
|
||||
checksum: 584be8bac7112ad49a9eb9992f71d542b1ff2fafb5bb315e1c196145e8feab589f1d7223cfb2d5df6770789582e6918f8287d1f2f89911b38eb80e29c560ad00
|
||||
checksum: dc4bec403cd33a204b655b1152a096a08e7bad2c931cb59ef8ff26b6f2aa541bf98f09fc157958a60c921b1983a8dde9a85b692f9de60fa8f574fd131e3ae4dd
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -1984,6 +1986,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"undici-types@npm:~6.19.8":
|
||||
version: 6.19.8
|
||||
resolution: "undici-types@npm:6.19.8"
|
||||
checksum: cf0b48ed4fc99baf56584afa91aaffa5010c268b8842f62e02f752df209e3dea138b372a60a963b3b2576ed932f32329ce7ddb9cb5f27a6c83040d8cd74b7a70
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"unique-filename@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "unique-filename@npm:3.0.0"
|
||||
@@ -2071,7 +2080,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ws@npm:^8.16.0":
|
||||
"ws@npm:^8.18.0":
|
||||
version: 8.18.0
|
||||
resolution: "ws@npm:8.18.0"
|
||||
peerDependencies:
|
||||
|
||||
@@ -125,7 +125,7 @@ export interface CreateBotOptions<TProps extends RecursivePartial<TransformersDe
|
||||
/**
|
||||
* Set the desired properties behavior for undesired properties
|
||||
*
|
||||
* @default DesiredPropertiesBehavior.ChangeKey
|
||||
* @default DesiredPropertiesBehavior.RemoveKey
|
||||
*/
|
||||
desiredPropertiesBehavior?: TBehavior
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"label": "Beginner Tips",
|
||||
"position": 4,
|
||||
"position": 5,
|
||||
"link": {
|
||||
"type": "generated-index",
|
||||
"description": "Guides for basic knowledge to use discordeno."
|
||||
|
||||
@@ -20,49 +20,30 @@ import { createBot } from '@discordeno/bot'
|
||||
|
||||
export const BOT = createBot({
|
||||
token,
|
||||
events: {},
|
||||
})
|
||||
```
|
||||
|
||||
Now that our bot manager is created, we need to implement our event handlers. First, we can make another file like `services/bot/events/index.ts` and paste the code below.
|
||||
Awesome, now we need to implement an event handler. For example, let's implement the ready event. So we make a file like `services/bot/events/ready.ts` and paste the code below:
|
||||
|
||||
```ts
|
||||
import type { EventHandlers } from '@discordeno/bot'
|
||||
import { BOT } from '../bot.js'
|
||||
|
||||
export const events: Partial<EventHandlers> = {
|
||||
// Fill this in the next section
|
||||
export const ready: typeof BOT.events.ready = async ({ shardId }) => {
|
||||
BOT.logger.info(`[READY] Shard ID #${shardId} is ready.`)
|
||||
}
|
||||
```
|
||||
|
||||
Now, we go back to the bot file and pass this events object to the createBot function.
|
||||
Now that we have a ready event handler, let's go ahead and add it to our bot.
|
||||
|
||||
```ts
|
||||
import { createBot } from '@discordeno/bot'
|
||||
import { events } from './events/index.js'
|
||||
import { ready } from './events/ready.js'
|
||||
|
||||
export const BOT = createBot({
|
||||
token,
|
||||
events,
|
||||
})
|
||||
```
|
||||
|
||||
Awesome, now the only thing left is we need to implement an event handler. For example, let's implement the ready event. So we make a file like `services/bot/events/ready.ts` and paste the code below:
|
||||
|
||||
```ts
|
||||
export const ready: EventHandlers['ready'] = async function (payload, shardId) {
|
||||
logger.info(`[READY] Shard ID #${shardId} is ready.`)
|
||||
}
|
||||
```
|
||||
|
||||
Now that we have a ready event handler, let's go ahead and add it to our events.
|
||||
|
||||
```ts
|
||||
import type { EventHandlers } from '@discordeno/bot'
|
||||
import { ready } from './ready.ts'
|
||||
|
||||
export const events: Partial<EventHandlers> = {
|
||||
ready,
|
||||
}
|
||||
BOT.events.ready = ready;
|
||||
```
|
||||
|
||||
There you go. You now have an event handler working perfectly.
|
||||
@@ -112,10 +93,12 @@ Now that we have the basic code setup complete for our listener, we can begin ad
|
||||
|
||||
```ts
|
||||
try {
|
||||
// OPTIONAL: Runs the raw event handler if you need it
|
||||
bot.events.raw(bot, req.body.payload, req.body.shardId);
|
||||
// Runs the event handler if available
|
||||
if (message.t) bot.events.[snakeToCamelCase(message.t.toLowerCase())]?.(req.body.payload, req.body.shardId);
|
||||
// Trigger the raw event, you may remove this if you don't need it
|
||||
bot.events.raw?.(req.body.payload, req.body.shardId)
|
||||
|
||||
if (data.t) {
|
||||
bot.handlers[data.t]?.(bot, req.body.payload, req.body.shardId)
|
||||
}
|
||||
|
||||
res.status(200).json({ success: true })
|
||||
}
|
||||
@@ -128,15 +111,12 @@ Alright, now we need to start making our connection to the rest proxy work. That
|
||||
```ts
|
||||
export const BOT = createBot({
|
||||
token,
|
||||
events,
|
||||
})
|
||||
|
||||
BOT.rest = createRestManager({
|
||||
token: process.env.TOKEN,
|
||||
rest: {
|
||||
proxy: {
|
||||
baseUrl: process.env.REST_URL,
|
||||
authorization: process.env.AUTHORIZATION,
|
||||
},
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
@@ -192,9 +172,11 @@ Threading or workers or clusters, however you wish to call it can be used here.
|
||||
With server splitting, we are going to split the amount of events that are handled by a bot process across several bot processes. So let's say we buy a couple servers for our bot processes. We can throw this process on both of them. Then go back to our `shards` in step 3 and make each shard send it to the appropriate server. If you think back, we already coded step 3 with this in mind.
|
||||
|
||||
```ts
|
||||
async message(shrd, payload) {
|
||||
await fetch(getUrlFromShardId(req.body.totalShards, shrd.id), {
|
||||
async message(shard, payload) {
|
||||
await fetch(getUrlFromShardId(req.body.totalShards, shard.id), {
|
||||
method: 'POST',
|
||||
})
|
||||
}
|
||||
```
|
||||
|
||||
Here we were using a function to determine which url it should send to.
|
||||
|
||||
147
website/docs/desired-properties.md
Normal file
147
website/docs/desired-properties.md
Normal file
@@ -0,0 +1,147 @@
|
||||
---
|
||||
sidebar_position: 4
|
||||
sidebar_label: Desired Properties
|
||||
---
|
||||
|
||||
# Desired Properties
|
||||
|
||||
The `desiredProperties` feature in Discordeno gives developers full control over memory utilization. This enables a highly lightweight setup, where only essential data is stored.
|
||||
|
||||
With `desiredProperties`, you can specify which properties to cache for each object type—such as users, members, channels, and guilds. This flexibility allows you to tailor caching to the exact needs of your bot, preserving only the data you truly require.
|
||||
|
||||
## Benefits
|
||||
- **Memory Efficiency**: Only relevant data is stored, leading to substantial memory savings, especially for larger bots.
|
||||
- **Improved Performance**: By storing minimal data, bots experience faster processing times and reduced resource usage.
|
||||
- **Customizable**: Developers can enable specific properties on a per-object basis, eliminating unnecessary bloat.
|
||||
|
||||
## Example: The Memory Impact of Channel Topics
|
||||
|
||||
Consider the `channel.topic` property, which stores a text description for each channel.
|
||||
|
||||
While a single topic might not seem memory-intensive, this property can quickly become costly at scale:
|
||||
- **Single Channel Topic**: A typical `channel.topic` can occupy hundreds of bytes.
|
||||
- **Large Bot Scale**: If your bot operates across millions of servers with hundreds of millions of channels, storing every `channel.topic` would consume vast amounts of memory.
|
||||
|
||||
By choosing to store only the properties relevant to your bot’s functionality — like omitting `channel.topic` when it’s unnecessary — you can save gigabytes of memory.
|
||||
Desired Properties is thus an essential tool for bots needing scalable and efficient caching, allowing for minimal resource usage without sacrificing performance.
|
||||
|
||||
:::tip
|
||||
Check the [TypeScript](#typescript) section if you are using typescript
|
||||
:::
|
||||
|
||||
## Configuring
|
||||
|
||||
To configure desired proprieties you can use the `desiredProperties` option on the `createBot` function
|
||||
|
||||
The objects inside `desiredProperties` contains all the names of the objects that have desired proprieties and in them you will find all the properties of the objects.
|
||||
|
||||
:::info[Flags and toggles]
|
||||
Usually flags and toggles will be stored in a BitField to save on memory, Discordeno does provide getters on the objects for these flags however they aren't in desired properties with their individual names, instead you will find them as `toggles` and / or `flags` most of the cases.
|
||||
:::
|
||||
|
||||
:::danger[NOT RECOMMENDED - Changing the default for Desired Properties]
|
||||
You can change the default value for desired properties, using `desiredProprieties: createDesiredPropertiesObject({}, true) as CompleteDesiredProprieties<{}, true>` in the `createBot` function, however this will negate all the benefits desired proprieties provide.
|
||||
|
||||
The reason why this is not recommended is because while Desired Proprieties can be an annoyance at first, they have a significant performance impact on both CPU and memory usage.
|
||||
|
||||
Again, this is **NOT** RECOMMENDED, especially if you plan to ship your bot to production.
|
||||
:::
|
||||
|
||||
### Computed values
|
||||
|
||||
Some values in these object may depend on some other value, notable examples are `user.bot` and `interaction.respond`. If you do not include all the values they depend on these require you might face undefined behavior using these values.
|
||||
|
||||
### Examples
|
||||
|
||||
In this example we will configure desired properties to have `user.id`, `user.bot` and `user.username`.
|
||||
|
||||
```ts
|
||||
const bot = createBot({
|
||||
// Your usual createBot options, such as token and intents
|
||||
desiredProperties: {
|
||||
user: {
|
||||
id: true,
|
||||
toggles: true, // Toggles includes the "bot" flag
|
||||
username: true,
|
||||
},
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
## TypeScript
|
||||
|
||||
Discordeno will give change the types of the supported objects to match your desired proprieties, for this reason you might get an error when incorrectly typing your functions.
|
||||
|
||||
Along side `desiredProperties` in the bot option that is explained above, `desiredPropertiesBehavior` is a configuration option for how should typescript threat proprieties that are not desired in your configuration.
|
||||
|
||||
Discordeno does expose the customized type according to your desired properties in the `bot.transformers.$inferredTypes` object, in these you will find all the types to be used in your functions / variables / ...
|
||||
|
||||
:::info
|
||||
The value `bot.transformers.$inferredTypes` only exists for typescript. It will be `undefined` if tried to access at runtime, as it is not intended to provide any value at runtime, and it is intended to be used along side the `typeof` operator in typescript
|
||||
:::
|
||||
|
||||
### Example
|
||||
|
||||
```ts
|
||||
const bot = createBot({
|
||||
// Your usual createBot options, such as token and intents
|
||||
desiredProperties: {
|
||||
message: {
|
||||
id: true,
|
||||
author: true,
|
||||
}
|
||||
user: {
|
||||
id: true,
|
||||
toggles: true, // Toggles includes the "bot" flag
|
||||
username: true,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
bot.events.messageCreate = (message) => {
|
||||
processMessage(message)
|
||||
}
|
||||
|
||||
function processMessage(message: typeof bot.transformers.$inferredTypes.message) {
|
||||
bot.logger.info(`Message with id ${message.id} has author @${message.author.username}, whose has id ${message.author.id} and ${message.author.bot ? 'is' : "isn't"} a bot`)
|
||||
|
||||
// Do some other work with the message
|
||||
}
|
||||
```
|
||||
|
||||
### Configuring
|
||||
|
||||
There are 2 behaviors, `ChangeType` and `RemoveKey`. The default behavior is `RemoveKey`.
|
||||
|
||||
An example where the behavior is changed to `ChangeType` is:
|
||||
|
||||
```ts
|
||||
const bot = createBot({
|
||||
// Your usual createBot options, such as token and intents
|
||||
desiredPropertiesBehavior: DesiredPropertiesBehavior.ChangeType,
|
||||
desiredProperties: {
|
||||
user: {
|
||||
id: true,
|
||||
toggles: true, // Toggles includes the "bot" flag
|
||||
username: true,
|
||||
},
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
Following is the explanation of each behavior:
|
||||
|
||||
#### `RemoveKey`
|
||||
|
||||
All the "undesired" properties will be removed from the type of the object. This will prevent you from using them at all since they "don't exist anymore".
|
||||
|
||||
The caveats of this behavior are the following:
|
||||
- You don't know all the properties available on the object
|
||||
- If a value requires other values to be enabled you won't know them without searching it up (when a computed value is missing a dependency it won't be shown)
|
||||
|
||||
#### `ChangeType`
|
||||
|
||||
All the "undesired" properties will be typed with a string that will explain why the property is disabled, this may also include the dependencies for said property if those are present.
|
||||
|
||||
The caveats of this behavior are the following:
|
||||
- Typescript may not always error on the usage of undesired proprieties as in some context the string will be a valid option
|
||||
@@ -20,7 +20,7 @@ This is how you can use it to create a bot that logs into discord:
|
||||
|
||||
```ts
|
||||
import { load } from 'https://deno.land/std@0.212.0/dotenv/mod.ts'
|
||||
import { createBot } from 'npm:@discordeno/bot@19.0.0-next.d81b28a'
|
||||
import { createBot } from 'npm:@discordeno/bot@19.0.0'
|
||||
|
||||
const env = await load()
|
||||
|
||||
|
||||
@@ -26,9 +26,8 @@ import { createBot } from '@discordeno/bot'
|
||||
import { config } from 'dotenv'
|
||||
config()
|
||||
|
||||
const bot = createBot({
|
||||
export const bot = createBot({
|
||||
token: process.env.TOKEN,
|
||||
events: {},
|
||||
})
|
||||
|
||||
await bot.start()
|
||||
@@ -380,11 +379,10 @@ We need to parse all the options Discord has provided us. In the `/roles reactio
|
||||
|
||||
```ts
|
||||
import commands from '../commands/index.js'
|
||||
import { bot } from '../bot.js'
|
||||
import { commandOptionsParser } from '@discordeno/bot'
|
||||
|
||||
export const event: EventHandlers['interactionCreate'] = async function (
|
||||
interaction,
|
||||
) {
|
||||
export const event: typeof bot.events.interactionCreate = async (interaction) => {
|
||||
if (interaction.type === InteractionTypes.ApplicationCommand) {
|
||||
if (!interaction.data) return
|
||||
|
||||
@@ -399,12 +397,12 @@ export const event: EventHandlers['interactionCreate'] = async function (
|
||||
Now we need to create the `src/events/index.ts` file to collect all of our events and give it to the bot object.
|
||||
|
||||
```ts
|
||||
import type { EventHandlers } from '@discordeno/bot'
|
||||
import type { bot } from '../bot.js'
|
||||
import { event as interactionCreateEvent } from './interactionCreate.js'
|
||||
|
||||
export const events = {
|
||||
interactionCreate: interactionCreateEvent,
|
||||
} as Partial<EventHandlers>
|
||||
} as typeof bot.events
|
||||
|
||||
export default events
|
||||
```
|
||||
@@ -416,20 +414,18 @@ To tell Discordeno to run the events, we need another change. Go back to the `sr
|
||||
```ts
|
||||
import { createBot } from '@discordeno/bot'
|
||||
import { config } from 'dotenv'
|
||||
|
||||
// insert-next-line
|
||||
import events from './events/index.js'
|
||||
|
||||
config()
|
||||
|
||||
const bot = createBot({
|
||||
export const bot = createBot({
|
||||
token: process.env.TOKEN,
|
||||
// remove-next-line
|
||||
events: {},
|
||||
// in this line we only use `events` but for javascript this will traduce to `events: events`
|
||||
// insert-next-line
|
||||
events,
|
||||
})
|
||||
|
||||
// insert-next-line
|
||||
bot.events = events
|
||||
|
||||
// ... REST OF THE FILE ...
|
||||
```
|
||||
|
||||
@@ -607,48 +603,36 @@ This also applies to the `interaction.respond` function that we call. It too has
|
||||
|
||||
If you save and then run the bot, you might noticed that Discord still says that the application did not respond, but how is that possibile?
|
||||
|
||||
Although we just added the code to respond to the interaction, we have forgot a Discordeno concept called `desired properties`. This is an optimization Discordeno uses to make your code more performant but can be found annoying or unnecessary.
|
||||
|
||||
To explain how the `desired properties` work we need to talk about how Discord sends us data. Discord uses its own way to require/give data to who consumes the API. This guide won't go deep into this, but if you are interested can refer to the official documentation.
|
||||
|
||||
The way Discord sends us data is not the way that we (might) want it and for that reason Discordeno needs to map it from the Discord format to the Discordeno format. This is done via `transformers` defined in the `bot.transformers` object to tell Discordeno what we need from the pile of data Discord provides us.
|
||||
Although we just added the code to respond to the interaction, we have forgot a Discordeno concept called `desired properties`. This is an optimization Discordeno uses to make your code more performant however it requires you do write some code. You can learn more on the [desired properties page](../desired-properties.md).
|
||||
|
||||
Looking through the code we have written so far we can see that
|
||||
|
||||
- We use `interaction.type` and `interaction.data` in the `src/events/interactionCreate.ts` file.
|
||||
- We use `interaction.channelId`, `interaction.id`, `interaction.token`, and `role.id` in our command.
|
||||
|
||||
We need to add all of properties that we use to the `desired properties` list, and to do so we go back to `src/index.ts` and add a few lines:
|
||||
We need to add all of properties that we use to the `desiredProperties` list, and to do so we go back to `src/index.ts` and add a few lines:
|
||||
|
||||
```ts
|
||||
// REST OF YOUR CODE
|
||||
|
||||
const bot = createBot({
|
||||
export const bot = createBot({
|
||||
token,
|
||||
events,
|
||||
})
|
||||
|
||||
// insert-start
|
||||
bot.transformers.desiredProperties.interaction.id = true
|
||||
bot.transformers.desiredProperties.interaction.data = true
|
||||
bot.transformers.desiredProperties.interaction.type = true
|
||||
bot.transformers.desiredProperties.interaction.token = true
|
||||
bot.transformers.desiredProperties.interaction.channelId = true
|
||||
|
||||
bot.transformers.desiredProperties.role.id = true
|
||||
desiredProperties: {
|
||||
interaction: {
|
||||
id: true,
|
||||
data: true,
|
||||
type: true,
|
||||
token: true,
|
||||
channelId: true,
|
||||
}
|
||||
}
|
||||
// insert-end
|
||||
})
|
||||
|
||||
// REST OF YOUR CODE
|
||||
```
|
||||
|
||||
:::tip
|
||||
As said before the code you are creating is your code, and in being so you can structure it how you find it better for you. This means that if you don't like having to specify the `bot.transformers.desiredProperties` lines in your index.ts nothing is preventing you from moving them somewhere else and make your code call them in a way or another, a way is for example moving to a file apart and creating a function that will edit all the values.
|
||||
:::
|
||||
|
||||
:::note
|
||||
If you want, you can disable the `desired properties` with the `defaultDesiredPropertiesValue` option in the createBot object, it isn't recommended but it's there to allow the developer to choose, keep in mind this will give you a warning in the console when you run the bot and memory/cpu usage WILL be higher.
|
||||
:::
|
||||
|
||||
If we try again now we'll finally see our message with 3 buttons. But if we click any of the buttons, they don't do anything! This is expected, since we did not write any code to handle buttons. So let's talk about how to react to users' interactions beyond just commands
|
||||
|
||||
### Handling interaction beyond commands
|
||||
@@ -698,7 +682,7 @@ import ItemCollector from '../collector.js'
|
||||
// insert-next-line
|
||||
export const collectors = new Set<ItemCollector>()
|
||||
|
||||
export const event: EventHandlers['interactionCreate'] = async interaction => {
|
||||
export const event: typeof bot.event.interactionCreate = async interaction => {
|
||||
// insert-next-line
|
||||
for (const collector of collectors) {
|
||||
// insert-next-line
|
||||
@@ -712,10 +696,6 @@ export const event: EventHandlers['interactionCreate'] = async interaction => {
|
||||
|
||||
In here you are defining a `Set` (for what we use, we can see it exactly the same as an array with a few helpful methods) of these collectors and when we receive an interaction from Discord we collect in all the collectors that have been added to then handle the interaction, so if the have just received the button click interaction we will now able to respond to it.
|
||||
|
||||
:::tip
|
||||
As already said: you don't like how the collection is done in this example? You are free to change it and have fun in experimenting what you find to be the better way
|
||||
:::
|
||||
|
||||
To do this we need to update the command, `src/events/roles.ts`:
|
||||
|
||||
```ts
|
||||
@@ -777,16 +757,25 @@ You might remember from before that we discussed the desired properties, and we
|
||||
```ts
|
||||
// REST OF YOUR CODE
|
||||
|
||||
export const bot = createBot({
|
||||
token,
|
||||
desiredProperties: {
|
||||
interaction: {
|
||||
id: true,
|
||||
data: true,
|
||||
type: true,
|
||||
token: true,
|
||||
// insert-next-line
|
||||
bot.transformers.desiredProperties.message.id = true
|
||||
|
||||
bot.transformers.desiredProperties.interaction.id = true
|
||||
bot.transformers.desiredProperties.interaction.data = true
|
||||
bot.transformers.desiredProperties.interaction.type = true
|
||||
bot.transformers.desiredProperties.interaction.token = true
|
||||
// insert-next-line
|
||||
bot.transformers.desiredProperties.interaction.message = true
|
||||
bot.transformers.desiredProperties.interaction.channelId = true
|
||||
message: true,
|
||||
channelId: true,
|
||||
},
|
||||
// insert-start
|
||||
message: {
|
||||
id: true,
|
||||
}
|
||||
// insert-end
|
||||
}
|
||||
})
|
||||
|
||||
// REST OF YOUR CODE
|
||||
```
|
||||
@@ -1382,23 +1371,34 @@ In this final piece of code, we use some desired properties. Let's go to the `sr
|
||||
```ts
|
||||
// REST OF YOUR CODE
|
||||
|
||||
export const bot = createBot({
|
||||
token,
|
||||
desiredProperties: {
|
||||
interaction: {
|
||||
id: true,
|
||||
data: true,
|
||||
type: true,
|
||||
// insert-next-line
|
||||
bot.transformers.desiredProperties.user.id = true
|
||||
|
||||
bot.transformers.desiredProperties.message.id = true
|
||||
|
||||
bot.transformers.desiredProperties.interaction.id = true
|
||||
bot.transformers.desiredProperties.interaction.data = true
|
||||
bot.transformers.desiredProperties.interaction.type = true
|
||||
user: true,
|
||||
token: true,
|
||||
message: true,
|
||||
// insert-next-line
|
||||
bot.transformers.desiredProperties.interaction.user = true
|
||||
bot.transformers.desiredProperties.interaction.token = true
|
||||
bot.transformers.desiredProperties.interaction.message = true
|
||||
// insert-next-line
|
||||
bot.transformers.desiredProperties.interaction.guildId = true
|
||||
bot.transformers.desiredProperties.interaction.channelId = true
|
||||
|
||||
bot.transformers.desiredProperties.role.id = true
|
||||
guildId: true,
|
||||
channelId: true,
|
||||
},
|
||||
message: {
|
||||
id: true,
|
||||
},
|
||||
// insert-start
|
||||
user: {
|
||||
id: true,
|
||||
},
|
||||
role: {
|
||||
id: true,
|
||||
},
|
||||
// insert-end
|
||||
}
|
||||
})
|
||||
|
||||
// REST OF YOUR CODE
|
||||
```
|
||||
@@ -1464,25 +1464,37 @@ And now let's add the desired properties. In the `src/index.ts` we need just a f
|
||||
```ts
|
||||
// REST OF YOUR CODE
|
||||
|
||||
bot.transformers.desiredProperties.user.id = true
|
||||
|
||||
bot.transformers.desiredProperties.message.id = true
|
||||
|
||||
export const bot = createBot({
|
||||
token,
|
||||
desiredProperties: {
|
||||
interaction: {
|
||||
id: true,
|
||||
data: true,
|
||||
type: true,
|
||||
user: true,
|
||||
token: true,
|
||||
// insert-next-line
|
||||
bot.transformers.desiredProperties.member.roles = true
|
||||
|
||||
bot.transformers.desiredProperties.interaction.id = true
|
||||
bot.transformers.desiredProperties.interaction.data = true
|
||||
bot.transformers.desiredProperties.interaction.type = true
|
||||
bot.transformers.desiredProperties.interaction.user = true
|
||||
bot.transformers.desiredProperties.interaction.token = true
|
||||
// insert-next-line
|
||||
bot.transformers.desiredProperties.interaction.member = true
|
||||
bot.transformers.desiredProperties.interaction.message = true
|
||||
bot.transformers.desiredProperties.interaction.guildId = true
|
||||
bot.transformers.desiredProperties.interaction.channelId = true
|
||||
|
||||
bot.transformers.desiredProperties.role.id = true
|
||||
member: true,
|
||||
message: true,
|
||||
guildId: true,
|
||||
channelId: true,
|
||||
},
|
||||
message: {
|
||||
id: true,
|
||||
},
|
||||
user: {
|
||||
id: true,
|
||||
},
|
||||
role: {
|
||||
id: true,
|
||||
},
|
||||
// insert-start
|
||||
member: {
|
||||
roles: true,
|
||||
}
|
||||
// insert-end
|
||||
}
|
||||
})
|
||||
|
||||
// REST OF YOUR CODE
|
||||
```
|
||||
|
||||
@@ -34,7 +34,7 @@ const bot = createBot({
|
||||
intents: Intents.Guilds | Intents.GuildMessages, // Or other intents that you might needs.
|
||||
events: {
|
||||
ready: data => {
|
||||
console.log(`The shard ${data.shardId} is ready!`)
|
||||
bot.logger.info(`The shard ${data.shardId} is ready!`)
|
||||
},
|
||||
},
|
||||
})
|
||||
@@ -88,34 +88,33 @@ Discordeno's methods always perform one action only. A method will never call mu
|
||||
|
||||
## Understanding Desired Properties in Discordeno
|
||||
|
||||
:::tip
|
||||
For more details checkout [the desired properties docs](./desired-properties.md)
|
||||
:::
|
||||
|
||||
If we ran the code above (for example, by putting the code inside the ready event), the bot will send a message in the channel you specified (as long as it has the permissions to do so) with the content "Hello world. This is test message from Discordeno.". However, if we log to the console the message object that Discordeno return, we won't see many, if any, values on it. This is also the case for other events such as `MessageCreate`. But why is that? Well, this is because of a Discordeno feature called `Desired properties`.
|
||||
|
||||
Desired properties is a feature that reduce the memory usage of your application by removing properties that you don't use. For example, you might not be interested in knowing the topic of a channel, but Discord will always return it, therefore consuming more memory. This is why Discordeno requires you to explicitly set the properties that you want to keep and use.
|
||||
|
||||
You can set which property you want to keep in the `bot.transformers.desiredProperties` object. Discordeno will default everything to false and you can set the values you want to keep to true manually like this:
|
||||
The main way to configure desired properties is using the `desiredProperties` object in `createBot`:
|
||||
|
||||
```ts
|
||||
bot.transformers.desiredProperties.message.id = true
|
||||
bot.transformers.desiredProperties.message.content = true
|
||||
bot.transformers.desiredProperties.message.channelId = true
|
||||
const bot = createBot({
|
||||
// ... your exiting code
|
||||
desiredProperties: {
|
||||
message: {
|
||||
id: true,
|
||||
content: true,
|
||||
channelId: true,
|
||||
},
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
With the above 3 lines of code, we will be able to get the message ID, the channel ID and the message content\* of a specific message. The same thing can be said for the return object of `sendMessage` method and the `messageCreate` event
|
||||
|
||||
We can also set the properties we want to keep with `{ id: true, content: true, channelId: true }`, but that would require us to specify all others keys in the object, and doing that would get extremely annoying.
|
||||
With the above, we will be able to get the message ID, the channel ID and the message content\* of messages, this means that if we now log the message object from before we will find these 3 values.
|
||||
|
||||
\*: As long as the required privileged intent is enabled.
|
||||
|
||||
:::danger[Changing the default for Desired Properties]
|
||||
THIS IS NOT RECOMMENDED IF YOU PLAN TO SHIP YOUR BOT TO PRODUCTION.
|
||||
|
||||
While not recommended, you can add `defaultDesiredPropertiesValue: true` to the first parameter object of the `createBot` function. This will set every desired property to true by default (you can still disable some if you want to). The reason why this is not recommended and considered deprecated is because while Desired Properties DO slow you down during development (needing to make sure you aren't using something that you won't have at runtime), they have a significant performance impact on both CPU and memory usage.
|
||||
:::
|
||||
|
||||
:::warning[Typescript and Desired Properties]
|
||||
We are aware that TypeScript has no idea which properties will be missing. We are working on fixing this issue.
|
||||
:::
|
||||
|
||||
## Additional information on Discordeno
|
||||
|
||||
Here are some nice to know things about Discordeno that you might be interested, though some may be for more advanced use-cases.
|
||||
|
||||
Reference in New Issue
Block a user