我想等待消息的反应。成员在输入东西,然后机器人回答,用户应对BOT的消息作出反应。我尝试了这段代码,但是在console.log(“ OK”)上什么也没发生。 (对不起,匈牙利代码)
if (message.channel.id === "714071018733568031" && !message.author.bot && !message.content.startsWith("!jovahagy")) { // ID
message.author.send("Köszönjük a válaszadást! Hamarosan megerősítünk! Kérlek, várj.")
const Discord = require('discord.js');
const embedMsg = new Discord.MessageEmbed()
embedMsg.setColor('ee00ff')
embedMsg.setTitle('Csatlakozási kérelem')
embedMsg.setAuthor('KraftBOT', 'https://s1.bozaiakos.hu/tkomprofile.jpg', 'https://magentakraft.hu')
embedMsg.setDescription('Valaki szeretne csatlakozni a szerverre, ezért válaszolt a feltett kérdésre!')
embedMsg.addField('Jelentkező', `${message.author}`)
embedMsg.addField('Üzenet', `${message.content}`)
embedMsg.addField('\u200B', '\u200B')
embedMsg.addField('Jóváhagyás', `!jovahagy ${message.author}`)
embedMsg.addField('Elutasítás', `!elutasit ${message.author}`)
embedMsg.setFooter('Bozai Ákos - Profi szerverek, robotok, weboldalak.', 'https://bozaiakos.hu/images/logokor.png');
message.delete();
client.channels.cache.get("714071028925464586").send({embed: embedMsg}) // ID
.then(nMessage => {nMessage.react('✅').then(r => {
nMessage.react('❎');
});
// First argument is a filter function
nMessage.awaitReactions((reaction, user) => user.id == message.author.id && (reaction.emoji.name == '✅' || reaction.emoji.name == '❎'),
{ max: 1 }).then(collected => {
if (collected.first().emoji.name == '✅') {
const accepted = message.author;
if (!accepted.roles.cache.some(r => r.name === "Hitelesítés folyamatban")) {
nMessage.delete();
} else {
console.log("OK");
try {
var role = message.guild.roles.cache.find(role => role.name === "Tag");
accepted.roles.add(role);
var role = message.guild.roles.cache.find(role => role.name === "Hitelesítés folyamatban");
accepted.roles.remove(role);
} catch (error) {return;}
accepted.send(`${message.author} jóváhagyott téged a MagentaKraft szerveren. Mostmár chatelhetsz.`)
const Discord = require('discord.js');
const embedMsg = new Discord.MessageEmbed()
embedMsg.setColor('00ff11')
embedMsg.setTitle('Csatlakozás elfogadva')
embedMsg.setAuthor('KraftBOT', 'https://s1.bozaiakos.hu/tkomprofile.jpg', 'https://magentakraft.hu')
embedMsg.setDescription('Egy tag csatlakozása el lett fogadva.')
embedMsg.addField('Jóváhagyott tag', `${accepted}`,true)
embedMsg.addField('Jóváhagyta', `${message.author}`,true)
embedMsg.addField('Kérelmező válasza', `${message.content}`)
embedMsg.setFooter('Bozai Ákos - Profi szerverek, robotok, weboldalak.', 'https://bozaiakos.hu/images/logokor.png');
client.channels.cache.get("714071038962696262").send({embed: embedMsg});
nMessage.delete();
}
}
else if (collected.first().emoji.name == '❎') {
const accepted = message.author;
if (!accepted.roles.cache.some(r => r.name === "Hitelesítés folyamatban")) {
nMessage.delete();
} else {
accepted.send(`${message.author} elutasított téged a MagentaKraft szerveren. A részletekért kérlek, keresd fel elérhetőségeink egyikét! Az alábbi okok esetén gyakori a visszautasítás: \n- Hibás név (pl. szimbólummal kezdődik)
\n- Komolytalan jelentkezőszöveg (helyesírási hibák, témától való eltérés, egyebek...)`)
const Discord = require('discord.js');
const embedMsg = new Discord.MessageEmbed()
embedMsg.setColor('ff0000')
embedMsg.setTitle('Csatlakozás elutasítva')
embedMsg.setAuthor('KraftBOT', 'https://s1.bozaiakos.hu/tkomprofile.jpg', 'https://magentakraft.hu')
embedMsg.setDescription('Egy tag csatlakozása el lett utasítva.')
embedMsg.addField('Elutasított tag', `${accepted}`,true)
embedMsg.addField('Elutasította', `${message.author}`,true)
embedMsg.addField('Kérelmező válasza', `${message.content}`)
embedMsg.setFooter('Bozai Ákos - Profi szerverek, robotok, weboldalak.', 'https://bozaiakos.hu/images/logokor.png');
client.channels.cache.get("714071039004508220").send({embed: embedMsg});
try {
accepted.kick();
} catch (error) {return;}
nMessage.delete();
}
}
})
我该怎么办?我已经检查了所有内容,例如我的角色等,但是如果我选择了对勾,则什么也没发生。
答案 0 :(得分:0)
设置方式,只有角色为Hitelesítés folyamatban
时,机器人才会在选中标记后做出反应,可以尝试进一步调试,但是当代码重复性很强且有错误时(重用),这很难变量名称很多,所以也许就是这个原因)
这是更清晰,更干净的代码,某些代码仍然很糟糕,因为我不想承担任何责任,但是没有明确的错误,(因为它使用了async,因此需要在async函数中使用):
//not sure why you had it inside of the if statement
const Discord = require('discord.js');
if (message.channel.id === "714071018733568031" && !message.author.bot && !message.content.startsWith("!jovahagy")) { // ID
const author = message.author;
author.send("Köszönjük a válaszadást! Hamarosan megerősítünk! Kérlek, várj.");
const embedMsg = new Discord.MessageEmbed()
.setColor('ee00ff')
.setTitle('Csatlakozási kérelem')
.setAuthor('KraftBOT', 'https://s1.bozaiakos.hu/tkomprofile.jpg', 'https://magentakraft.hu')
.setDescription('Valaki szeretne csatlakozni a szerverre, ezért válaszolt a feltett kérdésre!')
.addField('Jelentkező', `${author}`)
.addField('Üzenet', `${message.content}`)
.addField('\u200B', '\u200B')
.addField('Jóváhagyás', `!jovahagy ${author}`)
.addField('Elutasítás', `!elutasit ${author}`)
.setFooter('Bozai Ákos - Profi szerverek, robotok, weboldalak.', 'https://bozaiakos.hu/images/logokor.png');
message.delete();
const cachedChannel = client.channels.cache.get("714071028925464586");
const nMessage = await cachedChannel.send(embedMsg); // ID
await nMessage.react('✅');
await nMessage.react('❎');
const filter = (reaction, user) => user.id == author.id && (reaction.emoji.name == '✅' || reaction.emoji.name == '❎');
// First argument is a filter function
nMessage.awaitReactions(filter, { max: 1 })
.then(collected => {
const emojiName = collected.first().emoji.name;
if (emojiName == '✅') {
if (!author.roles.cache.find(r => r.name === "Hitelesítés folyamatban")) return nMessage.delete();
console.log("OK");
try {
const roleToAdd = message.guild.roles.cache.find(role => role.name === "Tag");
const roleToRemove = message.guild.roles.cache.find(role => role.name === "Hitelesítés folyamatban");
//check if the roles exist?
author.roles.add(roleToAdd);
author.roles.remove(roleToRemove);
} catch (error) {
//maybe console.error instead
return;
}
author.send(`${author} jóváhagyott téged a MagentaKraft szerveren. Mostmár chatelhetsz.`);
const nextEmbed = new Discord.MessageEmbed()
.setColor('00ff11')
.setTitle('Csatlakozás elfogadva')
.setAuthor('KraftBOT', 'https://s1.bozaiakos.hu/tkomprofile.jpg', 'https://magentakraft.hu')
.setDescription('Egy tag csatlakozása el lett fogadva.')
.addField('Jóváhagyott tag', `${author}`, true)
.addField('Jóváhagyta', `${author}`, true)
.addField('Kérelmező válasza', `${message.content}`)
.setFooter('Bozai Ákos - Profi szerverek, robotok, weboldalak.', 'https://bozaiakos.hu/images/logokor.png');
cachedChannel.send(nextEmbed);
nMessage.delete();
return
}
if (!author.roles.cache.find(r => r.name === "Hitelesítés folyamatban")) return nMessage.delete();
author.send(`${author} elutasított téged a MagentaKraft szerveren. A részletekért kérlek, keresd fel elérhetőségeink egyikét! Az alábbi okok esetén gyakori a visszautasítás: \n- Hibás név (pl. szimbólummal kezdődik)
\n- Komolytalan jelentkezőszöveg (helyesírási hibák, témától való eltérés, egyebek...)`)
const nextEmbed = new Discord.MessageEmbed()
.setColor('ff0000')
.setTitle('Csatlakozás elutasítva')
.setAuthor('KraftBOT', 'https://s1.bozaiakos.hu/tkomprofile.jpg', 'https://magentakraft.hu')
.setDescription('Egy tag csatlakozása el lett utasítva.')
.addField('Elutasított tag', `${accepted}`, true)
.addField('Elutasította', `${message.author}`, true)
.addField('Kérelmező válasza', `${message.content}`)
.setFooter('Bozai Ákos - Profi szerverek, robotok, weboldalak.', 'https://bozaiakos.hu/images/logokor.png');
cachedChannel.send(nextEmbed);
try {
accepted.kick();
} catch (error) { return; }
nMessage.delete();
})
}