javascript - 在 discord.js 中重新启动后,如何使反应仍然有效?
问题描述
我正在尝试制作一个票务机器人,它可以让您对消息做出反应,然后它会创建一个频道,但是每次我重新启动机器人时,反应都不再起作用。我该如何做?
let messageEmbed = await message.channel.send(ticketEmbed);
messageEmbed.react("1️⃣");
messageEmbed.react("2️⃣");
messageEmbed.react("3️⃣");
messageEmbed.react("4️⃣");
client.on("messageReactionAdd", async (reaction, user) => {
if (reaction.message.partial) await reaction.message.fetch();
if (reaction.partial) await reaction.fetch();
if (user.bot) return;
if (!reaction.message.guild) return;
if (reaction.emoji.name === firstreaction) {
const categoryId = "822577084223586364";
var username = reaction.message.guild.members.cache.get(user.id);
var userDiscriminator = reaction.message.guild.members.cache.get(user.id).discriminator;
var ticketExists = false;
message.guild.channels.cache.forEach((channel) => {
if (channel.name == `${reaction.user}` + "Playerreport") {
var ticketExists = true;
message.username.send("You already have an open ticket!");
return;
}
});
if (ticketExists) return;
message.guild.channels
.create(`${reaction.user}` + "Playerreport", {
type: "text",
})
.then((createdchannel) => {
createdchannel.setParent(categoryId).then((settedParent) => {
settedParent.updateOverwrite(
message.guild.roles.cache.find((x) => x.name === "@everyone"),
{
SEND_MESSAGES: false,
VIEW_CHANNEL: false,
}
);
settedParent.updateOverwrite(username, {
SEND_MESSAGES: true,
VIEW_CHANNEL: true,
READ_CHANNEL: true,
CREATE_INSTANT_INVITE: false,
ATTACH_FILES: true,
CONNECT: true,
ADD_REACTIONS: true,
});
var embedParent = new Discord.MessageEmbed()
.setTitle(`Hey ${username}, who do you want to report, and why?`)
.setDescription("Staff will try to help you as soon as possible")
.setThumbnail("https://cdn.discordapp.com/attachments/790156012119392287/821827094916759603/image_2.png");
settedParent.send(embedParent);
});
});
}
});
解决方案
您应该尝试将messageReactionAdd
事件移到命令文件之外,因为您的代码很可能会中断,除非您重新键入命令。
推荐阅读
- java - 删除级联类别子 (Java Hibernate JPA)
- pjsip - PJSIP 音频通话录音没有发生双向
- vba - 如果有逗号则拆分单元格
- android - Android Webview Cookies Getting are cleared after App
- flutter - 如何在每次构建之前生成颤振代码
- laravel - 运行“php artisan migrate”命令时如何修复“表不存在”错误?
- maven - MI测试模块-安装时出现传输错误
- reactjs - React:如何在从一个屏幕导航到另一个屏幕时保留上一页的状态
- css - @aws-amplify/ui-react 如果我的项目使用 SASS,如何自定义 UI?
- r - 滞后数据的相关图