我目前正在尝试在我的机器人上制作一个带有反应的票务系统,它没有显示任何错误,但是当我做出反应时它不会发出“嗨”输出,我的代码如下:
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")
})
})
})
答案 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;