В настоящее время я пытаюсь создать бота Discord, который отображает «порядок», вставляя его в канал при использовании определенной команды! Job. Аргументы также являются полями во встраивании. Затем пользователь должен ввести «принять», чтобы принять указанное задание. Затем это удаляет первое размещенное встраивание, а затем публикует новый, в котором говорится, что «заказ закрыт», так что этот заказ больше не может быть «принят» кем-либо еще.
Проблема: первое встраивание работает нормально после перезапуска бота; тем не менее, "заказ закрыт" включает все предыдущие записи. Например, если в первом задании указано «x», встраивание выводит только этот порядок, как и предполагалось. Однако, если второе задание записано «y», оба будут выведены и сложены. В третьем порядке он выводит все 3 записанных et c.
После использования! Задания:
После ввода 'accept', чтобы принять задание:
После размещения и принятия второго задания выводятся оба заказа:
Соответствующий код:
client.on("ready", () => {
console.log(`Starting up. Running version ${version}`)
});
function isCommand(command, message) {
var command = command.toLowerCase(); //If a user types a command with uppercase either lowercase
var content = message.content.toLowerCase()
return content.startsWith(prefix + command); //Checking if the message has a prefix first.
};
//isNotCommand function (needed
client.on('message', (message) => {
if (isCommand('job', message)) {
const args = message.content.slice(prefix.length).trim().split(/ +/g);
// Checking if they have perms
if (message.member.roles.cache.find(r => r.name === "Owner")) {
const boostEmbed = new discord.MessageEmbed()
.setColor('GREEN')
.setDescription("A job has just been placed. Details are below.")
.setAuthor('? Job Placed!')
.addField("Rank", args[1] + " " + args[2] + " " + args[3] + " " + args[4] + " " + args[5], true)
.addField("Queue", args[6], true)
.addField("Console", args[7], true)
.addField("Payout", args[8], true)
const closedEmbed = new discord.MessageEmbed()
.setColor('RED')
.setDescription("~~A job has just been placed. Details are below.~~")
.setAuthor('? Job Closed!')
.addField("Rank", "~~" + args[1] + " " + args[2] + " " + args[3] + " " + args[4] + " " + args[5] + "~~", true)
.addField("Queue", "~~" + args[6] + "~~", true)
.addField("Console", "~~" + args[7] + "~~", true)
.addField("Payout", "~~" + args[8] + "~~", true)
const messagingEmbed = new discord.MessageEmbed()
.setColor('GREEN')
.setDescription("You have accepted the job. Details are below.")
.setAuthor('? Job Accepted!')
.addField("Rank", args[1] + " " + args[2] + " " + args[3] + " " + args[4] + " " + args[5], true)
.addField("Payout", args[8], true)
.addField("Username", args[9], true)
.addField("Password", args[10], true)
if (args[1] === undefined) {
message.author.send("!job <Rank> <Queue | Single / Duo> <Console> <Payout> <Username> <Password>")
.then(function(message) {
setTimeout(function() {
message.delete();
}, 10000);
})
} else { // Main
message.guild.channels.cache.get(channelidrequest).send(boostEmbed)
message.guild.channels.cache.get(channelidrequest).send("React if you want to take the job!")
.then(function(message) {
message.react("✅")
})
const filter = m => m.content.includes('accept');
const collector = message.channel.createMessageCollector(filter, {
time: 172800000
});
collector.on('end', collected => {
message.guild.channels.cache.get(channelidrequest).bulkDelete(1);
const msg = message.guild.channels.cache.get(channelidrequest).fetchMessages({
limit: 1
})
msg.edit(closedEmbed);
})
console.log(collector)
collector.on('collect', message => {
if (message.content == "accept") {
message.channel.send("Hello");
}
const user = message.author
if (user.id === "722188709612748830") {
console.log("No Bots");
} else {
message.guild.channels.cache.get(channelidrequest).bulkDelete(2);
message.guild.channels.cache.get(channelidrequest).send(closedEmbed);
const joblogEmbed = new discord.MessageEmbed()
.setColor('YELLOW')
.setDescription("A job has just been logged. Details are below.")
.setAuthor('? Job Logged!')
.addField("Rank", args[1] + " " + args[2] + " " + args[3] + " " + args[4] + " " + args[5], true)
.addField("Queue", args[6], true)
.addField("Console", args[7], true)
.addField("Payout", args[8], true)
.addField("Username", args[9], true)
.addField("Password", args[10], true)
.addField("Booster", "<@" + user.id + ">", true)
message.guild.channels.cache.get(channelidlog).send(joblogEmbed)
user.send(messagingEmbed);
}
Long Короче говоря, выходы складываются друг над другом, когда я просто хочу, чтобы отображалось только вложение «заказ закрыт», относящийся к размещенному заказу. Прошу прощения, если возникла путаница, это мой первый пост.