Хорошо, так что я практически закончил с этим Discord Bot, который я строил в JS.У меня проблема с новыми обещаниями, которые разрешаются до завершения старых, в результате чего неверная информация отправляется на неправильный сервер.
Например, моя команда "! Armory": Для этого требуется: (требуетсяАргумент item из принятых пользователем аргументов: xanax, morphine, blood bag, refill) Создайте request-promise.post -> если запрос успешен -> отправьте сообщение «loading ...» -> затем создайте отдельный request.post -> в случае успеха отредактируйте сообщение «загрузка ...» с результатами пользователей args.
Запрашиваемый HTTP содержит список пользователей из моей фракции Torn.com и элементы, которые они использовали из арсенала нашей фракции.Таким образом, сообщение, которое отправляется в редактировании, содержит всех пользователей и количество элементов, приведенных в аргументе, который они использовали.
Проблема, с которой я сталкиваюсь, состоит в том, когда кто-то выполняет команду дважды,на одном сервере или нет;результаты последнего использования команды выдаются всем.
Пример: пользователь на первом сервере использует команду, чтобы получить использование xanax, например, так: "! armory xanax" ... Пока обещание все еще разрешается, пользователь всервер 2 использует команду для получения использования морфина, например: "! armory morphine" ...
После того, как второе обещание разрешено, результаты морфина из команды, использованной на сервере 2, отправляются на оба сервера при редактированиисообщение.
Я ожидаю, что каждый сервер получит свои соответствующие результаты.
ПРАВКА, чтобы добавить код
let configJson = fs.readFileSync(`./config.json`);
let configObj = JSON.parse(configJson);
const server_api_get = 'https://torn.market:8443/getarmoury';
const server_api_update = 'https://torn.market:8443/updatearmoury';
updateData = {
method: 'POST',
url: server_api_update,
form: {
API_KEY: configObj.guilds[message.guild.id].key,
end_date: endDate, // - End Date Dropdown on Faction page(Date furthest from today)
start_date: startDate, // - Start Date Dropdown on Faction page(Date closest to today)
},
};
//
getData = {
method: 'POST',
url: server_api_get,
form: {
API_KEY: configObj.guilds[message.guild.id].key,
end_date: endDate, // - End Date Dropdown on Faction page(Date furthest from today)
start_date: startDate, // - Start Date Dropdown on Faction page(Date closest to today)
},
};
//
rp(updateData)
.then(function (body) {
// POST succeeded...
updateJson = JSON.parse(body)
console.log(body);
if (updateJson.message === "Update Successful") {
let responseTitle = '';
console.log(` - New request -\nDate/Time: ${Date()}\n` + updateJson.message)
embed.setColor('BLUE')
.setTitle('`Loading Faction Armory use for ' + type + '......`')
message.channel.send(embed).then(msg => {
rp(getData)
.then(function (body) {
responseMsg = '';
embed.setColor(`GREEN`)
.setTitle(responseTitle)
.setDescription("```coffeescript\n" + responseMsg + "\n```")
msg.edit(embed)
})
.catch(function (err) {
// POST failed...
errJSON = JSON.stringify(err)
errObj = JSON.parse(errJSON)
console.log(`${errObj.name}\n${errObj.message}`);
});
})
} else {
console.log(`Code: ${updateJson.error}\nError: ${updateJson.message}\nWrong API_KEY or no Faction API Access.`);
}
})