поэтому я делаю простую команду AFK как это
client.on('message', message => {
if (message.content.includes('!afk')) {
message.member.setNickname(`[AFK] ${message.member.displayName} `).catch(error => console.info(error));
}
if (message.content === '!back') {
message.member.setNickname(message.member.displayName.replace('[AFK] ', )).catch(error => console.info(error));
}
});
и я хочу, если пользователь AFK, а затем пользовательский чат типа «привет», [AFK] исчезнет без префикса «! Назад»
Как я могу это сделать?
Спасибо за помощь (:



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если я правильно понимаю, вы просите удалить статус AFK, когда игрок снова что-то набирает. Я сделал грубое решение, используя JS Набор, которое должно хорошо работать с небольшим набором пользователей, но может потребовать дополнительных настроек для больших серверов.
По сути, когда игрок набирает !afk, он включается в набор игроков AFK, а когда он/она/оно возвращается и что-то набирает, его имя удаляется из набора, а его никнейм обновляется.
Я не уверен, существует ли (РЕДАКТИРОВАТЬ: Да, это), но основная идея в том, чтобы вести учет чего-то уникального для каждого афк-игрока.message.member.id и это правильное поле для отслеживания игрока
const afkPlayers = new Set();
client.on('message', message => {
if (message.content.includes('!afk')) {
afkPlayers.add(message.member.id);
message.member.setNickname(`[AFK] ${message.member.displayName} `).catch(error => console.info(error));
}
if (afkPlayers.member.has(message.member.id)){
afkPlayers.member.delete(message.member.id);
message.member.setNickname(message.member.displayName.replace('[AFK] ', )).catch(error => console.info(error));
}
});
Я действительно не знаю, как работает Discord и когда именно запускается событие «сообщение», но мне кажется, что вы, вероятно, могли бы сделать это даже без set, как это было предложено @TheCave3:
client.on('message', message => {
const pref='[AFK] ';
if (message.content.includes('!afk'))
message.member.setNickname(pref+message.member.displayName).catch(error => console.info(error));
else if (message.member.displayName.slice(0,pref.length)===pref)
message.member.setNickname(message.member.displayName.slice(pref.length)).catch(error => console.info(error));
});