Skip to main content

Быстрый старт

В этой статье вы узнаете об основах работы nestcord и о том, как он интегрируется с NestJS!

tip

Многие из концепций, рассматриваемых в nestcord, предназначены для использования как другие компоненты в проекте NestJS.
Перед началом работы мы рекомендуем вам ознакомиться с документацией NestJS, особенно с разделом обзор.

Первым делом необходимо установить nestcord и его зависимость Discord.js

npm install @globalart/nestcord discord.js
tip

Для использования NestCord и Discord.js необходимо установить Node.js v16.0.0 или новее.

Модуль

NestCord - это такой же модуль, как и все остальные, и может быть импортирован как таковой в ваше приложение Nest.

Модули NestJS

Не знаете, что такое модули? Читайте о них в NestJS!

src/discord.module.ts
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 {}
info

Убедитесь, что настроили правильные интенты, необходимые для вашего приложения!

Аргументы модуля являются расширением 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;
}
СвойствоТипОписание
tokenstringВаш Discord токен
prefixstring or (message: Message) => stringПрефикс для вашего бота
developmentSnowflake[] or falseГильдии разработчиков для вашего бота
skipRegistrationbooleanПропустите автоматическую регистрацию команд приложения
skipGetCommandInfoFromDiscordbooleanПропустите автоматическое получение информации о команде из DiscordAPI, DiscordResponse будет равен null в CommandDiscovery
Внимание

Если у вас есть команды, использующие свойство guilds, глобальный аргумент разработки не будет его перезаписывать.

Слэш команды

Лучший способ взаимодействия с пользователями - использовать Slash-команды! Команды с косой чертой позволяют создавать команды с точными аргументами и вариантами выбора, обеспечивая пользователям наилучшие возможности.

Чтобы создать команду с помощью NestCord, вы можете использовать декоратор SlashCommand.

src/app.service.ts
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!' });
}
}
tip

Когда клиент войдет в систему, он автоматически зарегистрирует все команды. Глобальные команды кэшируются на срок до часа, поэтому, чтобы избежать кэширования глобальных команд, используйте аргумент development в модуле NestCord. Это ограничит действие команды одной гильдией, не позволяя ей попасть в кэш.

Запуск приложения

Вы можете выполнить следующую команду в командной строке вашей ОС, чтобы запустить приложение, прослушивающее события Discord API:

$ npm run start