Быстрый старт
В этой статье вы узнаете об основах работы nestcord и о том, как он интегрируется с NestJS!
Первым делом необходимо установить nestcord и его зависимость Discord.js
- npm
- Yarn
- pnpm
- Bun
npm install @globalart/nestcord discord.js
yarn add @globalart/nestcord discord.js
pnpm add @globalart/nestcord discord.js
bun add @globalart/nestcord discord.js
Для использования NestCord и Discord.js необходимо установить Node.js v16.0.0 или новее.
Модуль
NestCord - это такой же модуль, как и все остальные, и может быть импортирован как таковой в ваше приложение Nest.
Не знаете, что такое модули? Читайте о них в NestJS!
import { Module } from '@nestjs/common';
import { AppService } from './app.service';
import { IntentsBitField } from 'discord.js';
@Module({
imports: [
NestCordModule.forRoot({
token: process.env.DISCORD_TOKEN,
intents: [IntentsBitField.Flags.Guilds],
development: [process.env.DISCORD_DEVELOPMENT_GUILD_ID]
})
],
providers: [AppService]
})
export class DiscordModule {}
Убедитесь, что настроили правильные интенты, необходимые для вашего приложения!
Аргументы модуля являются расширением discord.js ClientOptions, в дополнение к 3 опциям nestcord: token
, prefix
и development
.
export interface NestCordModuleOptions extends DiscordClientOptions {
token: string;
prefix?: string | (message: Message) => string | Promise<string>;
development?: Snowflake[] | false;
skipRegistration?: boolean;
skipGetCommandInfoFromDiscord?: boolean;
}
Свойство | Тип | Описание |
---|---|---|
token | string | Ваш Discord токен |
prefix | string or (message: Message) => string | Префикс для вашего бота |
development | Snowflake[] or false | Гильдии разработчиков для вашего бота |
skipRegistration | boolean | Пропустите автоматическую регистрацию команд приложения |
skipGetCommandInfoFromDiscord | boolean | Пропустите автоматическое получение информации о команде из DiscordAPI, DiscordResponse будет равен null в CommandDiscovery |
Если у вас есть команды, использующие свойство guilds
, глобальный аргумент разработки не будет его перезаписывать.
Слэш команды
Лучший способ взаимодействия с пользователями - использовать Slash-команды! Команды с косой чертой позволяют создавать команды с точными аргументами и вариантами выбора, обеспечивая пользователям наилучшие возможности.
Чтобы создать команду с помощью NestCord, вы можете использовать декоратор SlashCommand
.
import { Injectable } from '@nestjs/common';
import { Context, SlashCommand, SlashCommandContext } from '@globalart/nestcord';
@Injectable()
export class AppService {
@SlashCommand({
name: 'ping',
description: 'Ping command!'
})
public async onPing(@Context() [interaction]: SlashCommandContext) {
return interaction.reply({ content: 'Pong!' });
}
}
Когда клиент войдет в систему, он автоматически зарегистрирует все команды.
Глобальные команды кэшируются на срок до часа, поэтому, чтобы избежать кэширования глобальных команд, используйте аргумент development
в модуле NestCord. Это ограничит действие команды одной гильдией, не позволяя ей попасть в кэш.
Запуск приложения
Вы можете выполнить следующую команду в командной строке вашей ОС, чтобы запустить приложение, прослушивающее события Discord API:
- npm
- Yarn
- pnpm
- Bun
$ npm run start
$ yarn run start
$ pnpm run start
$ bun run start