@MrZilla

Как сделать ограничение по времени на команду?

vk.updates.hear(/^(?:ping)\s?([^]+)?/i, async (message) => {
	if (!message.$match[1]) {
    return message.send(`⚠ Вы не указали IP!\n Например: 127.0.0.0:25565`);
  }  
    axios.get(`https://api.mcsrvstat.us/1/${message.$match[1]}`).then(res => {
		if(res.data && res.data.players) {
			let playerCount = res.data.players.online || 0
			let playerMax = res.data.players.max || 0
			let playerList = res.data.players.list || 'Нет игроков онлайн'
		if(res.data && res.data.version) {
			let version = res.data.version || 'Неизвестна'
		if(res.data && res.data.motd.clean) {
			let motd = res.data.motd.clean || 'Нет названия'
		if(res.data && res.data.software) {
			let core = res.data.software || 'Ядро неизвестно'
		return message.send (` ${motd}:\n Версия: ${version}\n‍♂ Игроков: ${playerCount}/${playerMax} ${playerList}\n Ядро: ${core}`)
	    }
		}
		}
		}else message.send(`⚠ Неверный ip адрес!\n Либо информация о нём недоступна.`);
	}).catch(err => console.log('api.mcsrvstat.us ошибка:', err))
});

updates.startPolling()
.then(() => {
	console.log(`Ping started!`);
})

Допустим пользователь 1 выполнил команду, на него накладывается ограничение на 1 минуту и он не может выполнить команду, но в это же время пользователь 2 может ее выполнить
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ответы на вопрос 2
dollar
@dollar
Делай добро и бросай его в воду.
let can_do_commands = true;

......

can_do_commands = false;
setTimeout("can_do_commands = true", 60000);

Плюс соответствующая проверка там, где от пользователя принимаются команды. Надеюсь, дальше очевидно.
Ответ написан
@StockholmSyndrome
можно создать объект, ключами которого будут идентификаторы пользователей, у которых ограничение на отправку
let limits = {};
тогда в теле обработчика команды нужно добавить проверку
if (!limits[message.senderId]) {
  limits[message.senderId] = true;
  setTimeout(() => {
    delete limits[message.senderId];
  }, 60000);
  // отправляем сообщение
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы