Доброе утро всем. Я колебался, прежде чем приехать сюда, но ответы, которые я нашел, не соответствовали моей конкретной проблеме c.
Я кодирую Bot Discord в Javascript, и я занимаюсь обслуживанием системы. Для этого я даю точную роль всем игрокам, которая предотвращает любые действия с их стороны во время обслуживания. Единственная проблема с этим заключается в том, что сервер, на котором я работаю, содержит около ста игроков, и еще больше будет. Поэтому я ищу решение этой проблемы: когда я даю одинаковую роль всем игрокам, Node.js имеет блокировку, которая останавливает событие «добавить роль» 11 раз.
Вот фрагмент ошибки с тем же кодом, который повторяется столько раз, сколько есть игроков.
Код, над которым я работаю, следующий :
...
} else if (args[0] == 'maintenanceon') {
if (message.member.roles.find(r => r.name === "•?•Développeur") || message.member.roles.find(r => r.name === "•?•ADMINISTRATEUR")) {
var membersWithRole1 = message.guild.roles.get("666026501472518167").members;
var membersWithRole2 = message.guild.roles.get("666051237543673877").members;
var membersWithRole3 = message.guild.roles.get("667770156730155028").members;
var membersWithRole4 = message.guild.roles.get("661281161334620181").members;
var membersWithRole5 = message.guild.roles.get("665287396740300810").members;
var membersWithRole6 = message.guild.roles.get("667038859149705219").members;
var membersWithRole7 = message.guild.roles.get("664966379954241545").members;
var membersWithRole8 = message.guild.roles.get("665306076610035723").members;
var membersWithRole9 = message.guild.roles.get("661900218102448160").members;
var membersWithRole10 = message.guild.roles.get("661286020599382018").members;
membersWithRole1.forEach((member, key) => member.addRole("661944276564836363"));
membersWithRole2.forEach((member, key) => member.addRole("661944276564836363"));
membersWithRole3.forEach((member, key) => member.addRole("661944276564836363"));
membersWithRole4.forEach((member, key) => member.addRole("661944276564836363"));
membersWithRole5.forEach((member, key) => member.addRole("661944276564836363"));
membersWithRole6.forEach((member, key) => member.addRole("661944276564836363"));
membersWithRole7.forEach((member, key) => member.addRole("661944276564836363"));
membersWithRole8.forEach((member, key) => member.addRole("661944276564836363"));
membersWithRole9.forEach((member, key) => member.addRole("661944276564836363"));
membersWithRole10.forEach((member, key) => member.addRole("661944276564836363"));
}
} else if (args[0] == 'maintenanceoff') {
if (message.member.roles.find(r => r.name === "•?•Développeur") || message.member.roles.find(r => r.name === "•?•ADMINISTRATEUR")) {
var membersWithRole = message.guild.roles.get("661944276564836363").members;
membersWithRole.forEach((member, key) => member.removeRole("661944276564836363"));
}
}
Я уже пытался решить проблему, ища такие вещи:
const EventEmitter = require('events');
const emitter = new EventEmitter();
emitter.setMaxListeners(0);
Но ничего, что я пробовал, не работает, и я безнадежен. Спасибо за чтение, и я надеюсь, что я скоро решу эту проблему.
- Макс.