#javascript #node.js #discord #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);
});
});
}
});
Комментарии:
1. Где находится этот код ? Это один файл или несколько ?
2. Я использую обработчик команд. Этот код находится в файле под названием ticket.js
3. Это тоже событие ?
Ответ №1:
Вам следует попытаться переместить messageReactionAdd
событие за пределы вашего командного файла, так как ваш код, скорее всего, сломается, если вы не введете команду повторно.