Я пишу бота для своей школы, и в настоящее время я разрабатываю функцию, которая позволяет ученикам разговаривать по голосовому каналу, если ученик отправил конкретное сообщение c и если учитель отреагировал на него с указанием c эмодзи. Вот код.
if (handRaiseModeActive === true) {
client.on('message', handMsg => {
if (handRaiseModeActive === true) {
if ((handMsg.content.includes(PREFIX + 'talk')) && handMsg.channel.id === hgCID) {
superConsole(`**@${handMsg.author.tag} asked to speak ||\`${handMsg.author.id}\`||**`)
handMsg.react('✅')
handMsg.react('❎')
client.on('messageReactionAdd', (reaction, user) => {
if (reaction._emoji.name == '✅' && user.id !== botID && (user.id == teacherID || devID.includes(user.id))) {
handMsg.member.voice.setMute(false)
handMsg.reactions.removeAll();
superConsole(`handRaiseMode | permission to speak given to @${handMsg.author.tag} ||\`${handMsg.author.id}\`||`)
} else if (reaction._emoji.name == '❎' && user.id !== botID && (user.id == teacherID || devID.includes(user.id))) {
handMsg.reactions.removeAll()
superConsole(`handRaiseMode | permission to speak denied to @${handMsg.author.tag} ||\`${handMsg.author.id}\`||`)
}
});
}
}
})
}
teacherID
- это идентификатор учителя, devID
- это массив со всеми идентификаторами разработчиков и botID
... идентификатор бота. Команда устанавливает handRaiseModeActive
на true или false. superConsole
- это функция, в которой событие отправляется по каналу и в консоли.
И вот моя проблема: когда студент впервые спрашивает разрешение на выступление, все работает нормально, но если, после этого другой ученик получает разрешение говорить с помощью handRaiseMode, все ученики, которые ранее просили выступить, без звука ... Кажется, что l.4
все еще работает, несмотря на то, что он должен был закончиться. Я не очень понимаю, как это работает. Нужна помощь!
Заранее спасибо за ответ.
Примечание: я знаю, что есть два if (handRaisModeActive === true)
, спасибо. Второй бесполезен. Я удалю это.