Discord.js机器人/应用运行端口及修改方法咨询
Discord.js 应用端口问题解答
核心结论
discord.js 本身没有默认运行端口——它基于 WebSocket 与 Discord API 建立长连接,基础机器人功能(消息监听、指令响应等)不需要监听 HTTP 端口就能运行。你之前用 Express 是因为需要搭建 HTTP 服务处理 OAuth2 授权、斜杠命令交互回调这类需要接收 HTTP 请求的场景,纯 discord.js 机器人无需这一步。
若需监听端口(处理交互/自定义HTTP服务)
如果你的机器人需要处理 Discord 交互请求(如斜杠命令、按钮点击),或需要自定义 HTTP 服务,可在 discord.js 项目中集成 Express(或其他 HTTP 框架)手动指定端口:
示例代码(集成Express指定端口)
const { Client, GatewayIntentBits } = require('discord.js'); const express = require('express'); // 初始化Discord客户端 const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent ] }); // 初始化Express服务 const app = express(); const PORT = 3000; // 自定义端口,可替换为任意未被占用的端口 // 配置路由处理Discord交互请求 app.use(express.json()); app.post('/discord-interactions', (req, res) => { // 此处编写交互逻辑(如斜杠命令响应) res.sendStatus(200); }); // 启动HTTP服务 app.listen(PORT, () => { console.log(`HTTP服务已启动,监听端口 ${PORT}`); }); // 登录Discord机器人 client.login('你的机器人令牌');
端口转发说明
和之前用 Express 的流程一致:启动上述 HTTP 服务后,用 ngrok 转发你指定的端口(比如 ngrok http 3000),再将 ngrok 生成的公网 URL 配置到 Discord 开发者后台的交互端点中即可。
内容的提问来源于stack exchange,提问作者DaveExotic
相关产品推荐
相关产品推荐

