如何让我的机器人对反应做出响应?

时间:2021-08-02 00:58:41

标签: javascript discord.js

我目前正在尝试在我的机器人上制作一个带有反应的票务系统,它没有显示任何错误,但是当我做出反应时它不会发出“嗨”输出,我的代码如下:

client.on("ready", async () => {
  const guild = client.guilds.cache.get("my server ID")
  const channel = guild.channels.cache.get("the channel ID")
  const message = guild.channels.cache.get("the same channel ID").send(new Discord.MessageEmbed()
  .setAuthor("Tickets", guild.iconURL({ dynamic: true })).setDescription("React to the emoji below to start a ticket")).then(sent => {
    sent.react("✉️")
  const filter = (r, u) => r.emoji.name === "✉️";
  const collector = sent.createReactionCollector(filter, { max: 1 });
  collector.on("collect", (r, u) => {
    if(u.bot) return null;
    else channel.send("Hi")
  })
  })
})

1 个答案:

答案 0 :(得分:0)

bot 不响应的原因是它已经从 bot 本身收集了消息中的 ✉️,因此它已经达到了 max 的 1 反应。但它会检查 u.bot 确实是 true(在 collect 事件中),因此根本不会响应。

要解决此问题,您可以删除集合事件中的 if(u.bot) return null;,并将其放入 filter 中,如下所示:

const filter = (r, u) => r.emoji.name === "✉️" && !u.bot;