Как заставить бота Discord сообщать текущую дату и время по команде?

Я хочу, чтобы мой бот Discord сообщал мне текущую дату и время с помощью простой команды, поэтому, если я скажу «Который час?» это скажет мне. В настоящее время мое единственное решение состоит в том, чтобы бот отправлял ссылку на текущее время в Google, но это не идеально, я бы хотел, чтобы он действительно отображал это как сообщение в канале.

Спасибо

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
16 249
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете создать бота для разногласий на предпочитаемом вами языке, для них есть SDK для нескольких языков. Кроме того, есть способы создать объект даты на нескольких языках.

Вот пример в Node.JS.

  1. Как создать дискорд бота. Дискорд-бот Node.JS
  2. При ответе на сообщение создайте объект даты. Верните его в ответ.

Вот пример кода:

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», форматы даты и часа зависят от указанного вами языкового стандарта или языкового стандарта сервера, если он не указан.

Спасибо, это работает, но можно ли как-то отредактировать формат даты? Чтобы день месяца стоял первым?

Honda Guy VTEC 12.12.2020 20:10

Абсолютно. Просто укажите параметр локали для toLocaleString(), например currentDate.toLocaleString('your-locale');.

Xeoth 13.12.2020 00:16

Кроме того, вы можете создать две разные команды «время» и «дата», и вместо записи «toLocalString» просто напишите «toLocaleDateString» для даты и «toLocaleTimeString» для времени.

Другие вопросы по теме