如何在 2026 年使用 JavaScript (discord.js) 或 Python (discord.py) 创建你的第一个 Discord 机器人——从注册到部署,一步一步。
Grow your server faster with Rally
Rally gives server owners community management tools, member engagement features, and discovery placement — all in one bot. Add it to your server in 2 minutes.
Add Rally to your server →创建你的第一个 Discord 机器人比你想象的要容易。你不需要计算机科学学位或多年的编程经验。在 2026 年,如果你专注于此,构建和部署一个功能正常的机器人只需要一个周末。
本指南将引导你完成整个过程:注册你的机器人、编写你的第一个命令、在本地测试它以及将其部署上线。到最后,你将拥有一个在你的服务器上运行的机器人。
Discord 机器人是一个通过 API 连接到 Discord 并响应事件的程序:当有人输入命令、对消息做出反应、加入服务器等。
关键概念:
/command) 而不是前缀命令 (!command)。斜杠命令是官方支持和推荐的。这是你的机器人在 Discord 系统中正式存在的地方。
流程:
现在创建机器人用户:
配置机器人设置:
你需要一个特殊的邀请链接才能将机器人添加到服务器。
在开发者门户中:
bot发送消息(任何机器人都必不可少)管理消息(如果你正在审核)添加反应(如果机器人对事物做出反应)连接 + 说话(如果是音乐/语音机器人)发送消息 + 读取消息(最低可行)除非绝对必要,否则不要使用管理员权限。 过度授权是一种安全风险。
初学者的两个主要选择:
Discord.js 是最受欢迎的 Discord 机器人框架。庞大的社区、大量的教程和出色的文档。
优点:
缺点:
开始:
npm init -ynpm install discord.js语法更简单,非常适合初学者,非常适合学习基础知识。
优点:
缺点:
开始:
pip install discord.py给初学者的建议: 如果你了解 Python,请使用 discord.py。如果你了解 JavaScript,请使用 discord.js。如果你两者都不了解,Python 更容易学习,但 JavaScript 在线资源更多。选择一个并坚持下去。
这是一个用 Python 编写的最小可用的 Discord 机器人,它响应一个命令:
import discord
from discord.ext import commands
# 使用命令前缀和意图创建机器人
intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix='!', intents=intents)
@bot.event
async def on_ready():
print(f'{bot.user} 已连接到 Discord!')
@bot.command(name='hello', help='打招呼')
async def hello(ctx):
await ctx.send(f'你好 {ctx.author.name}!')
@bot.command(name='ping', help='响应 pong')
async def ping(ctx):
await ctx.send('Pong!')
bot.run('YOUR_TOKEN_HERE')
这做了什么:
!hello 和 !ping 命令要运行它:
'YOUR_TOKEN_HERE' 替换为步骤 1 中的实际令牌bot.pypython bot.py!hello在部署之前,请在本地(在你的计算机上)测试你的机器人。
设置一个测试服务器:
常见错误:
彻底测试。一个在生产中存在错误的机器人是令人尴尬的。
现在你了解了基础知识,请扩展更多功能。
Python 示例——一个简单的经济命令:
@bot.command(name='balance', help='检查你的硬币余额')
async def balance(ctx):
# 在一个真正的机器人中,这将查询一个数据库
# 现在,只需返回一个模拟值
await ctx.send(f'{ctx.author.name},你有 100 个硬币!')
@bot.command(name='roll', help='掷骰子 (1-6)')
async def roll(ctx):
import random
result = random.randint(1, 6)
await ctx.send(f'{ctx.author.name} 掷出:**{result}**')
每个命令都是一个简单的函数。添加任意数量的命令。
在本地托管适用于测试,但当你关闭笔记本电脑时,你的机器人会停止运行。部署到服务器,以便它 24/7 全天候运行。
Replit(对初学者来说最简单):
Railway.app(现代、可靠):
Glitch(类似于 Replit):
重要提示: 不要将你的令牌硬编码到你推送到 GitHub 的代码中。使用环境变量:
import os
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
bot.run(TOKEN)
在本地创建一个 .env 文件(添加到 .gitignore,以便不提交):
DISCORD_TOKEN=your_actual_token_here
在 Replit/Railway 上,将令牌设置为平台设置中的秘密环境变量(而不是在代码中)。
错误 1:硬编码令牌 永远不要将你的令牌放在你推送到 GitHub 的代码中。泄露令牌的机器人会立即受到威胁。使用环境变量。
错误 2:不处理错误 你的机器人在意外输入时崩溃。添加错误处理:
@bot.command()
async def divide(ctx, a: int, b: int):
try:
result = a / b
await ctx.send(result)
except ZeroDivisionError:
await ctx.send('不能除以零!')
except ValueError:
await ctx.send('请输入有效的数字!')
错误 3:不尊重速率限制 Discord 限制了你发送消息的速度。不要垃圾邮件 API。在批量操作之间添加延迟。
错误 4:忽略意图 许多初学者机器人失败是因为他们没有在开发者门户中启用必要的意图。在部署之前检查你的机器人需要的意图。
错误 5:过于雄心勃勃的范围 不要试图在你的第一个机器人中构建一个经济系统、审核、音乐和 50 个命令。从 3-5 个简单的命令开始。一旦你感到舒适,就进行扩展。
现在你有一个基本的机器人:
/command 语法而不是前缀命令你的第一个 Discord 机器人是一个周末项目。你的第一个好的 Discord 机器人是一个月的练习。你的第一个被 1,000 台服务器使用的机器人是几个月的迭代、功能开发和社区建设。现在开始,不断迭代,不要想太多。