首页 > 解决方案 > 怎么发DM消息给作者的反应?

问题描述

如何让机器人向点击反应的用户发送 DM 消息?

client.on("message", (msg) => { 
  if (msg.guild && msg.content.startsWith("!test")) {
    client.channels.cache.get("813782841187631126").send("Test-1")
      .then((sentMessage) => {
        sentMessage.react('811140592762486805')

        const filter = (r) => r.emoji.id == '811140592762486805';
        const collector = sentMessage.createReactionCollector(filter, {time: 60000});
    
        collector.on('collect', (r) => {
          reaction.author.send("Test-2");
        });
      });
  }
});

标签: javascriptdiscorddiscord.js

解决方案


ReactionCollector 上的 collect 事件有两个参数;reactionuser。您可以简单地使用用户send()上的方法向他们发送 DM。

此外,您不应该收集机器人的反应。您需要更新您的filter并添加&& !user.bot,因此您不会尝试向机器人发送消息。

const filter = (reaction, user) =>
  reaction.emoji.id === '811140592762486805' && !user.bot;
const collector = sentMessage.createReactionCollector(filter, {
  time: 60000,
});

collector.on('collect', (reaction, user) => {
  user.send('Test-2');
});

推荐阅读