Discord · 指南

如何制作 Discord 机器人

更新于 October 10, 2026 2 分钟阅读

本页内容
  1. 第 1 步:创建应用和机器人令牌
  2. 第 2 步:邀请机器人加入你的服务器
  3. 第 3a 步:用 Python 编写机器人(discord.py)
  4. 第 3b 步:用 JavaScript 编写机器人(discord.js)
  5. 不要把令牌写进代码
  6. 第 4 步:让机器人保持在线
  7. 常见问题

Discord 机器人是一个用自己的账号登录 Discord 的程序,可以回应命令、管理频道、玩游戏或发布动态。制作一个机器人需要三样东西:Discord Developer Portal 中的一个应用、几行代码,以及运行这些代码的地方。

本指南将搭建一个带有 /ping 斜杠命令的可用机器人,使用 Python(discord.py)或 JavaScript(discord.js)——选择你熟悉的语言即可。

第 1 步:创建应用和机器人令牌

  1. 打开 Developer Portal。访问 discord.com/developers/applications,新建一个应用并为其命名。
  2. 获取令牌。在 Bot 页面点击 Reset Token 并复制。Discord 只显示一次;如果弄丢了,再重置一次即可。
  3. 妥善保密令牌。它就是机器人的密码:任何拿到它的人都能控制你的机器人。切勿把它粘贴到要分享的代码中,也不要提交到 Git。
需要 intents 吗?只使用斜杠命令的机器人不需要任何特权 intent。只有当机器人必须读取用户在普通消息中输入的内容时,才需要在 Bot 页面开启 Message Content。所在服务器用户总数超过 10,000 的机器人,使用特权 intents 需要 Discord 审核批准。

第 2 步:邀请机器人加入你的服务器

  1. 打开应用的 Installation 页面。
  2. 在服务器(guild)的默认安装设置中,添加 scopes bot 和 applications.commands,以及机器人所需的权限——本指南只需 Send Messages。
  3. 打开生成的安装链接,选择你的服务器并授权。机器人会出现在成员列表中,在你的代码运行之前显示为离线。

较早的教程使用 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"])

运行时把令牌放在环境变量中,例如在 Linux 或 macOS 上执行 DISCORD_TOKEN=your-token python bot.py。

第 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,Discord 可以将其吊销——因此误推送的令牌往往在你察觉之前就已失效。

第 4 步:让机器人保持在线

只有代码在运行时,机器人才会在线。关闭终端或关掉电脑,它就会离线。你有三种选择:

  • 你自己的电脑——免费,适合开发和测试,但电脑休眠时机器人也会休眠。
  • 免费套餐——大多数会让整月运行的机器人进入休眠或受到限制;具体取舍可参见免费 Discord 机器人托管。
  • 机器人托管——一台始终在线的小型服务器。在 HytHost Discord 机器人托管上,你上传项目,选择 Node.js、Python 或其他运行环境,面板会启动机器人并在崩溃时自动重启。

从上传到自动重启的完整教程,请参阅如何 24/7 托管 Discord 机器人。

无需让电脑一直开机即可运行机器人:HytHost Discord 机器人托管支持 Node.js、Python、Java、Go、C#、Bun 和 Lavalink——低至 €0.89/月。

查看机器人托管套餐
常见问题

常见问题

是的。创建应用、令牌和代码都不花钱,discord.py 和 discord.js 也是免费的。只有当你想把它托管在能保持在线的地方时才需要付费。

用你已经熟悉的那个。discord.py 和 discord.js 都很成熟,覆盖完整的 Discord API。如果两者都不熟悉,Python 读起来更简单;JavaScript 的库生态更大。

检查邀请时是否包含 applications.commands scope,以及代码是否已同步命令。全局命令可能需要一点时间才会出现;如果仍未出现,请重启 Discord。

读取普通消息文本需要 Message Content intent,既要在 Developer Portal 中开启,也要在代码中请求。没有它,机器人仍然可以接收斜杠命令、提及和私信。

立即在 Developer Portal 的 Bot 页面重置。旧令牌会失效;把新令牌填到机器人运行的地方,并从代码或提交历史中删除旧令牌。

无需电脑,你的机器人也能在线

HytHost Discord 机器人托管支持 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

这篇指南对你有帮助吗?