Як створити бота для Discord
На цій сторінці
Бот для Discord — це програма, яка входить у Discord під власним обліковим записом і відповідає на команди, модерує, запускає ігри або публікує оновлення. Щоб його зробити, потрібні три речі: застосунок у Developer Portal від Discord, кілька рядків коду та місце, де цей код працюватиме.
У цьому посібнику ми зберемо робочого бота зі слеш-командою /ping на Python (discord.py) або JavaScript (discord.js) — оберіть мову, яку знаєте.
Крок 1: Створіть застосунок і токен бота
- Відкрийте Developer Portal. Перейдіть на discord.com/developers/applications, створіть новий застосунок і дайте йому назву.
- Отримайте токен. На сторінці Bot натисніть Reset Token і скопіюйте його. Discord показує токен лише один раз; якщо ви його втратите, скиньте його знову.
- Тримайте токен у секреті. Це пароль бота: будь-хто, у кого він є, керує вашим ботом. Ніколи не вставляйте його в код, яким ділитеся, і не комітьте його в Git.
Крок 2: Запросіть бота на свій сервер
- Відкрийте сторінку Installation вашого застосунку.
- У стандартних налаштуваннях встановлення для серверів (guilds) додайте scopes
botіapplications.commandsта потрібні боту дозволи — для цього посібника достатньо Send Messages. - Відкрийте отримане посилання для встановлення, оберіть сервер і підтвердьте. Бот з'явиться у списку учасників — офлайн, доки не запущено ваш код.
У старих туторіалах використовується OAuth2 > URL Generator з тими самими двома scopes; цей спосіб досі працює.
Крок 3a: Напишіть бота на Python (discord.py)
Для discord.py 2.7 потрібен Python 3.8 або новіший. Встановіть бібліотеку та створіть bot.py:
pip install discord.py
import os
import discord
from discord import app_commands
class Bot(discord.Client):
def __init__(self):
super().__init__(intents=discord.Intents.default())
self.tree = app_commands.CommandTree(self)
async def setup_hook(self):
await self.tree.sync()
bot = Bot()
@bot.tree.command(description="Replies with Pong!")
async def ping(interaction: discord.Interaction):
await interaction.response.send_message("Pong!")
bot.run(os.environ["DISCORD_TOKEN"])
Запустіть його з токеном у змінній середовища, наприклад DISCORD_TOKEN=your-token python bot.py у Linux або macOS.
Крок 3b: Напишіть бота на JavaScript (discord.js)
Для discord.js 14 потрібен Node.js 18 або новіший. У новій папці виконайте npm install discord.js і створіть index.js:
const { Client, Events, GatewayIntentBits, REST, Routes, SlashCommandBuilder } = require('discord.js');
const commands = [new SlashCommandBuilder().setName('ping').setDescription('Replies with Pong!').toJSON()];
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once(Events.ClientReady, async (c) => {
await new REST().setToken(process.env.DISCORD_TOKEN).put(Routes.applicationCommands(c.user.id), { body: commands });
console.log(`Logged in as ${c.user.tag}`);
});
client.on(Events.InteractionCreate, async (interaction) => {
if (interaction.isChatInputCommand() && interaction.commandName === 'ping') await interaction.reply('Pong!');
});
client.login(process.env.DISCORD_TOKEN);
Запустіть його командою DISCORD_TOKEN=your-token node index.js. Коли в консолі з'явиться Logged in, введіть /ping на своєму сервері.
Не зберігайте токен у коді
- Використовуйте змінну середовища або файл
.envі додайте.envдо.gitignoreперед першим комітом. - Якщо токен витік, скиньте його одразу на сторінці Bot. Старий токен перестає працювати, а новий ви вказуєте там, де запущено бота.
- GitHub сканує публічні репозиторії на токени ботів Discord і повідомляє про них Discord, який може їх відкликати, — тому випадково опублікований токен часто перестає працювати раніше, ніж ви це помітите.
Крок 4: Тримайте бота онлайн
Бот онлайн лише доки працює його код. Закрийте термінал або вимкніть ПК — і він перейде в офлайн. Є три варіанти:
- Власний ПК — безкоштовно, підходить для розробки й тестів, але бот спить, коли спить комп'ютер.
- Безкоштовний тариф — більшість присипляють або обмежують ботів, що працюють увесь місяць; компроміси порівняно в статті безкоштовний хостинг Discord-ботів.
- Хостинг ботів — невеликий постійно увімкнений сервер. На хостингу Discord-ботів HytHost ви завантажуєте проєкт, обираєте Node.js, Python або інше середовище, а панель запускає бота й перезапускає його в разі збою.
Повна інструкція, від завантаження до автоперезапуску, — у посібнику як розмістити Discord-бота цілодобово.
Запускайте бота, не залишаючи ПК увімкненим: хостинг Discord-ботів HytHost підтримує Node.js, Python, Java, Go, C#, Bun і Lavalink — від €0.89/міс.
Переглянути тарифиПоширені запитання
Так. Створення застосунку, токена й коду нічого не коштує, а discord.py і discord.js безкоштовні. Платити потрібно, лише якщо ви хочете розмістити бота там, де він залишатиметься онлайн.
Ту, яку ви вже знаєте. discord.py і discord.js — зрілі бібліотеки, що покривають увесь API Discord. Якщо ви не знаєте жодної, Python читається простіше; у JavaScript більша екосистема бібліотек.
Перевірте, що ви запросили його зі scope applications.commands і що код синхронізував команди. Глобальним командам може знадобитися трохи часу, щоб з'явитися; якщо їх немає, перезапустіть Discord.
Для читання тексту звичайних повідомлень потрібен intent Message Content, увімкнений у Developer Portal і запитаний у коді. Без нього бот усе одно отримує слеш-команди, згадки та особисті повідомлення.
Одразу скиньте його на сторінці Bot у Developer Portal. Старий токен перестане працювати; вкажіть новий там, де запущено бота, і видаліть старий із коду чи історії.
Ваш бот онлайн без вашого ПК
Хостинг Discord-ботів HytHost запускає Node.js, Python, Java, Go, C#, Bun або Lavalink з базою даних MySQL і резервними копіями — від €0.89/міс.
Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hoursЦей гайд був корисним?