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

如何为Discord Bot设置私信标准自动回复,非指令场景也触发预设应答

实现思路

首先需要在Bot的事件监听逻辑里,优先拦截messageCreate事件中**私信频道(Direct Message)**的消息,判断消息发送者不是Bot自身的前提下,先发送预设的自动回复内容,再根据你的业务需求决定是否继续匹配后续指令逻辑。

具体实现步骤(以discord.js v14为例)

  • 第一步:在事件监听逻辑中添加消息类型判断,优先识别私信频道的非Bot自身消息
  • 第二步:配置你需要的预设自动回复内容,支持嵌入消息(Embed)、普通文本等格式,可对齐Ticket Tool的回复效果
  • 第三步:根据需求设置是否拦截后续指令匹配,比如需要优先回复后不响应私信指令的话,可在发送完自动回复后直接return终止后续逻辑

代码示例

const { Client, GatewayIntentBits, EmbedBuilder } = require('discord.js');
const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent,
    GatewayIntentBits.DirectMessages // 必须开启私信消息的监听权限
  ],
  partials: ['CHANNEL', 'MESSAGE'] // 处理私信这类部分缓存的内容
});

// 预设自动回复嵌入消息配置,可自行调整内容、样式
const autoReplyEmbed = new EmbedBuilder()
  .setColor('#2B2D31')
  .setTitle('⚠️ 此账号为自动机器人')
  .setDescription('你发送的私信不会被人工查看,请前往对应服务器通过指令提交相关需求。\n\n常用操作指引:\n• 提交工单请在服务器内使用 `/ticket` 指令\n• 查看Bot功能说明请在服务器内使用 `/help` 指令')
  .setFooter({ text: '自动回复消息' });

client.on('messageCreate', async (message) => {
  // 优先判断是否为私信、消息发送者不是Bot自身
  if (message.channel.type === 1 && !message.author.bot) {
    // 发送预设自动回复
    await message.reply({ embeds: [autoReplyEmbed] });
    // 如果不需要响应私信中的指令,直接return终止后续逻辑
    return;
  }

  // 下方保留你原来的服务器指令匹配逻辑即可
  // ...
});

client.login('你的Bot Token');

注意事项

  • 必须在Discord开发者后台的Bot设置页,开启Message Content Intent权限,否则无法读取消息内容
  • 如果你使用其他语言/框架(比如Python的discord.py),逻辑完全一致,只需要调整对应框架的私信频道判断、事件监听的写法即可
  • 可以根据需求调整自动回复的内容,添加自定义功能说明、服务器指引等信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 09:06:04