Бот, который повторяет значение, введенное участником?
Пользователь вводит команду !аукцион и через пробле указывает время, допустим 12:20. Далее бот должен вывести Аукцион: это значение времени - время+14ч. Как рассчитать +14ч все работает, но только от текущего момента. Т.е. если убрать самостоятельный ввод времени пользователем. Необходимо же, чтоб пользователь сам вводил время.
Значение now не задано, в этом и проблема. Как его обозначить, чтобы бот понимал, что следующее слово за словом аукцион в команде будет означать введенное время, от которого начнется отсчет. Время вводится самостоятельно, не от текущего момента, оно может быть любым.
var time = new Date();
time.setHours(time.getHours() + 14);
timehours =time.getHours();
timeminutes = time.getMinutes();
if (timehours < 10) timehours = '0' + timehours;
if (timeminutes < 10) timeminutes = '0' + timepminutes;
var result = (timehours + ":" + timeminutes);
client.on('messageCreate', (message) => {
if (message.author.bot) {
return;
}
if (message.content === "!аукцион" + now) { //now - это некое значение времени, введенное пользователем
message.reply("Аукцион: " + now + " - " + result );
}
});
Ответы (1 шт):
Для того чтобы бот понимал, что следующее слово после "!аукцион" - это значение времени, необходимо извлечь это значение из сообщения пользователя.
Вы можете использовать метод split() для разделения строки сообщения на отдельные слова, и затем использовать второй элемент массива, содержащего эти слова, как значение времени.
client.on('messageCreate', (message) => {
if (message.author.bot) {
return;
}
const args = message.content.split(' ');
if (args[0] === "!аукцион" && args[1]) {
const userTime = args[1];
const auctionTime = new Date(userTime);
auctionTime.setHours(auctionTime.getHours() + 14);
const timeHours = auctionTime.getHours();
const timeMinutes = auctionTime.getMinutes();
const result = `${timeHours}:${timeMinutes < 10 ? '0' + timeMinutes : timeMinutes}`;
message.reply(`Аукцион: ${userTime} - ${result}`);
}
});