Как написать бота для Discord на TypeScript: пошаговое руководство

9 минут чтения
Средний рейтинг статьи — 4.8

Создание собственного Discord-бота — отличный способ попрактиковаться в TypeScript и автоматизировать задачи внутри серверов. В этом руководстве мы рассмотрим процесс создания простого бота с использованием TypeScript и популярной библиотеки discord.js.

Шаг 1: Создание Discord-приложения

  1. Перейдите в Discord Developer Portal.
  2. Нажмите "New Application", задайте имя и создайте приложение.
  3. Перейдите в раздел "Bot" и нажмите "Add Bot" или "Reset Bot".
  4. Скопируйте токен бота — он понадобится для подключения.

⚠️ Никогда не публикуйте токен — это даст полный доступ к вашему боту.

Шаг 2: Настройка проекта с TypeScript

mkdir discord-bot-ts && cd discord-bot-ts
npm init -y
npm install discord.js dotenv
npm install -D typescript ts-node @types/node
npx tsc --init

Создайте файл .env для хранения токена:

DISCORD_TOKEN=ваш_токен_бота

И файл .gitignore:

node_modules
.env

Шаг 3: Структура проекта

discord-bot-ts/
├── src/
│   └── index.ts
├── .env
├── package.json
└── tsconfig.json

Шаг 4: Написание кода бота

// src/index.ts
import { Client, GatewayIntentBits } from 'discord.js';
import * as dotenv from 'dotenv';
 
dotenv.config();
 
const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent] });
 
client.once('ready', () => {
  console.log(`Бот запущен как ${client.user?.tag}`);
});
 
client.on('messageCreate', (message) => {
  if (message.content === '!ping') {
    message.reply('Pong!');
  }
});
 
client.login(process.env.DISCORD_TOKEN);

Для запуска используйте:

npx ts-node src/index.ts

Шаг 5: Приглашение бота на сервер

  1. Перейдите в Discord Developer Portal > OAuth2 > URL Generator.
  2. Выберите bot и нужные bot permissions (например, Send Messages).
  3. Перейдите по сгенерированному URL, чтобы пригласить бота на ваш сервер.

Шаг 6: Рекомендации по архитектуре

По мере роста проекта структура должна масштабироваться. Пример возможной архитектуры:

src/
├── commands/
│   └── ping.ts
├── events/
│   └── messageCreate.ts
├── config/
│   └── env.ts
├── index.ts

Модульная структура позволяет удобно добавлять команды, обрабатывать события и работать с зависимостями.

Примеры команд

// src/commands/ping.ts
import { CommandInteraction } from 'discord.js';
 
export const pingCommand = {
  name: 'ping',
  description: 'Ответит Pong!',
  execute(interaction: CommandInteraction) {
    interaction.reply('Pong!');
  }
};

Вывод

Создание Discord-бота на TypeScript — это несложно и очень гибко. Вы получаете статическую типизацию, удобную архитектуру и богатый функционал библиотеки discord.js. Это отличная база как для личных проектов, так и для коммерческих решений.

9 минут чтения
Средний рейтинг статьи — 4.8

Настроить мониторинг за 30 секунд

Надежные оповещения о даунтаймах. Без ложных срабатываний