Я хочу, чтобы мой бот Discord сообщал мне текущую дату и время с помощью простой команды, поэтому, если я скажу «Который час?» это скажет мне. В настоящее время мое единственное решение состоит в том, чтобы бот отправлял ссылку на текущее время в Google, но это не идеально, я бы хотел, чтобы он действительно отображал это как сообщение в канале.
Спасибо
Вы можете создать бота для разногласий на предпочитаемом вами языке, для них есть SDK для нескольких языков. Кроме того, есть способы создать объект даты на нескольких языках.
Вот пример в Node.JS.
Вот пример кода:
const Discord = require('discord.js')
const client = new Discord.Client()
client.on('ready', () => {
console.info('Bot is now ready to communicate with discord server');
});
client.on('message', (receivedMessage) => {
// Prevent bot from responding to its own messages
if (receivedMessage.author == client.user) {
return
}
// Check if the bot's user was tagged in the message
if (receivedMessage.content.includes(client.user.toString())) {
// Check contents if client wants date
if (receivedMessage.content == '!date') {
let date = new Date();
// Send date
let content = date.getDate() + '/' + date.getMonth() + '/' + date.getFullYear();
receivedMessage.channel.send(content)
}
// Check contents if client wants time
if (receivedMessage.content == '!time') {
let date = new Date();
// Send time
let content = date.getHours() + ':' + date.getMinutes() + ';' + date.getSeconds();
receivedMessage.channel.send(content)
}
}
})
client.login("XXXXXXXXXXX") // Replace XXXXX with your bot token
Также вы можете проверить mee6, если вы не хотите много кодировать.
Вы можете использовать встроенный класс Date
для создания строки даты и времени.
// inside a command
const currentDate = new Date();
message.channel.send(currentDate);
В приведенном выше примере бот ответит примерно так: «Сб, 12 декабря 2020 г., 15:40:06 по Гринвичу + 0100 (центральноевропейское стандартное время)».
Если вы хотите иметь более удобную для человека строку, вы можете превратить ее в строку локали, используя toLocaleString()
message.channel.send(currentDate.toLocaleString());
Это приведет к чему-то вроде «12/12/2020, 15:41:58», форматы даты и часа зависят от указанного вами языкового стандарта или языкового стандарта сервера, если он не указан.
Абсолютно. Просто укажите параметр локали для toLocaleString()
, например currentDate.toLocaleString('your-locale');
.
Кроме того, вы можете создать две разные команды «время» и «дата», и вместо записи «toLocalString» просто напишите «toLocaleDateString» для даты и «toLocaleTimeString» для времени.
Спасибо, это работает, но можно ли как-то отредактировать формат даты? Чтобы день месяца стоял первым?