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

能否用Discord.js实现基于成员的动态差异化消息推送?

基于Discord.js实现成员专属动态内容的方案

Discord原生不支持让同一条频道消息给不同成员显示不同内容,但可以通过以下思路实现你的需求:

1. 主动推送私有消息(无需用户交互)

这是最贴合你需求的方案:机器人遍历服务器成员,给每个用户发送带专属用户名水印的图片私信。只要机器人拥有发送私信的权限,就能全自动完成,不需要用户点击按钮。

示例代码(适配Discord.js v14):

// 假设你已经有一个生成带水印图片的函数imageGenerator,参数为用户名,返回图片Buffer或URL
async function pushWatermarkedImages(guildId) {
  const guild = await client.guilds.fetch(guildId);
  // 获取服务器所有成员(排除离线成员可提升效率)
  const members = await guild.members.fetch({ withPresences: false });

  for (const [_, member] of members) {
    // 跳过机器人用户
    if (member.user.bot) continue;

    try {
      // 生成带当前用户水印的图片
      const watermarkedImg = await imageGenerator(member.user.username);
      // 发送私信
      await member.send({
        content: "这是你的专属水印图片",
        files: [watermarkedImg]
      });
    } catch (err) {
      console.log(`无法给用户 ${member.user.tag} 发送消息: ${err}`);
    }
  }
}

关键限制说明

Discord没有提供"用户查看消息"的监听事件,也没有原生支持同一条消息动态变更内容的机制,所以无法实现"同一频道消息,不同用户自动看到不同内容"的效果,主动推送私信是当前最优解。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 04:43:14