Как написать бота для Discord на TypeScript: пошаговое руководство
Создание собственного Discord-бота — отличный способ попрактиковаться в TypeScript и автоматизировать задачи внутри серверов. В этом руководстве мы рассмотрим процесс создания простого бота с использованием TypeScript и популярной библиотеки discord.js
.
Шаг 1: Создание Discord-приложения
- Перейдите в Discord Developer Portal.
- Нажмите "New Application", задайте имя и создайте приложение.
- Перейдите в раздел "Bot" и нажмите "Add Bot" или "Reset Bot".
- Скопируйте токен бота — он понадобится для подключения.
⚠️ Никогда не публикуйте токен — это даст полный доступ к вашему боту.
Шаг 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: Приглашение бота на сервер
- Перейдите в Discord Developer Portal > OAuth2 > URL Generator.
- Выберите
bot
и нужныеbot permissions
(например,Send Messages
). - Перейдите по сгенерированному 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
. Это отличная база как для личных проектов, так и для коммерческих решений.
Настроить мониторинг за 30 секунд
Надежные оповещения о даунтаймах. Без ложных срабатываний