You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

discord.js开发:如何实现Discord bot与用户的双向私信通信

Discord.js 实现私信双向通信的解决方案

前置依赖配置(必做)

discord.js v14及以上版本需要主动配置网关权限和部分结构解析,否则无法监听到私信消息:

  • 首先进入Discord开发者后台的Bot管理页,开启Message Content Intent权限开关
  • 初始化Client时配置对应的意图和partial属性,代码示例:
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({
  intents: [
    GatewayIntentBits.Guilds, // 服务器基础权限
    GatewayIntentBits.GuildMessages, // 监听服务器公频消息
    GatewayIntentBits.DirectMessages, // 监听私信消息
    GatewayIntentBits.MessageContent, // 读取消息内容权限
  ],
  // 私信频道属于偏结构,必须配置才能正常获取消息对象
  partials: ['CHANNEL', 'MESSAGE']
});

核心逻辑实现

discord.js的messageCreate事件会默认监听所有来源的消息,你只需要通过msg.guild属性判断消息来源即可:msg.guild有值时是服务器公频消息,无值时是私信消息。
完整示例代码如下:

// 可选:存储用户会话状态,实现多轮上下文对话,大流量场景建议替换为Redis/数据库
const userSessions = new Map();

client.on('messageCreate', async (msg) => {
  // 必须加:过滤bot自身发送的消息,避免循环触发
  if (msg.author.bot) return;

  // 场景1:处理服务器公频消息,主动给用户发私信
  if (msg.guild) {
    try {
      await msg.author.send("I am the bot, and sending you this message as DM");
      // 初始化用户会话状态,用于后续多轮对话识别
      userSessions.set(msg.author.id, 'INIT');
    } catch (err) {
      // 捕获用户关闭私信权限的异常,可选在公频提示用户
      await msg.reply("无法向你发送私信,请检查你的Discord隐私设置是否允许陌生人发私信");
    }
    return;
  }

  // 场景2:处理用户发来的私信消息
  if (!msg.guild) {
    const userId = msg.author.id;
    const currentStage = userSessions.get(userId) || 'INIT';

    // 根据会话阶段执行对应业务逻辑,示例如下:
    switch(currentStage) {
      case 'INIT':
        await msg.reply("你好呀,请问有什么可以帮到你的?");
        userSessions.set(userId, 'WAITING_INPUT');
        break;
      case 'WAITING_INPUT':
        await msg.reply(`我收到了你的消息:${msg.content},相关需求已经记录~`);
        // 业务处理完成后可清除会话,也可保留实现多轮对话
        userSessions.delete(userId);
        break;
      default:
        await msg.reply("不好意思,我没明白你的意思,请重新描述需求");
    }
  }
});

注意事项

  • 内存存储的会话状态会在bot重启后丢失,生产环境建议使用持久化存储方案
  • 私信发送前捕获异常可以避免程序因用户权限问题崩溃
  • 可以根据业务需要扩展会话状态的字段,存储更多上下文信息

内容的提问来源于stack exchange,提问作者Nika Kurashvili

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:06:03