Как создать бота для 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Этот гайд был полезен?