我正在尝试在user.setGame中创建一个倒计时,有人可以帮我创建倒计时代码吗?
const bot = new Discord.Client();
bot.on('ready', () => {
console.log('I am ready!');
user.setGame(countdown)
});
谢谢!
答案 0 :(得分:1)
假设“倒计时”是指游戏设置前的特定时间,您可以轻松使用setTimeout之类的内容。以下是使用代码的示例:
const Discord = require('discord.js');
const bot = new Discord.Client();
bot.on('ready', () => {
console.log('I am ready!');
setTimeout(() => {
bot.user.setGame('Online and ready to roll!');
}, 60000); // Time in Milliseconds (60000 = 60 seconds = 1 minute)
});
编辑:通过新评论,我现在明白了你的目标。使用上面的一些方法和一个名为setInterval的小东西,这对你应该没问题。我们还将使用名为pretty-ms的令人敬畏的模块,这将使我们的时间保持可读性。我将提供两个示例,一个使用漂亮的ms,另一个不使用。
const Discord = require('discord.js');
const pms = require('pretty-ms');
const bot = new Discord.Client();
const endTime = new Date("May 20 2018 2:00 PM");
bot.on('ready', () => {
console.log('I am ready!');
const countdownGame = setInterval(() => {
if (endTime.getTime() - Date.now() < 0) {
clearInterval(countdownGame);
bot.user.setGame('Time\'s Up!');
}
// Get the endDate minus the current date, and then make the milliseconds pretty
// Remove { compact: true } for a full value. You can see all the options
// available on the module's page.
bot.user.setGame(pms(endTime.getTime() - Date.now(), { compact: true }));
}, 60000); // Time in Milliseconds before rerun (60000 = 60 seconds = 1 minute)
// Due to Discord ratelimiting, you may need to change this value to only update every
// 2 minutes or more.
});
应该注意的是,在执行new Date("May 20 2018 2:00 PM");
时,这只是您可以将日期设置为未来的众多方法之一。你也可以像AndréPaulo在他的例子中所说的那样使用.setHours。查看MDN上的Date文档,了解设置更多日期的方法!
如果由于某种原因,你不想使用漂亮的ms(它是一个漂亮有用的模块,我很抱歉),这里有一个setGame行的例子没有使用pms。
// Hours
bot.user.setGame((endTime.getTime() - Date.now())/1000/60/60);
// Minutes
bot.user.setGame((endTime.getTime() - Date.now())/1000/60);
// Seconds
bot.user.setGame((endTime.getTime() - Date.now())/1000);
请记住,没有使用模块,当时间结束或低于你的设置时,它将包括小数。我建议使用Number#toFixed。
编辑2:另外,AndréPaulo的正确性是ClientUser#setGame被折旧。从1.11.3开始,它现在是ClientUser#setPresence。
快乐的编码!
答案 1 :(得分:1)
user.setGame()
已被弃用
您可能需要查看user.setPresence()
bot.user.setPresence({ game: { name: 'with discord.js' })
.then(console.log)
.catch(console.error);
所以这样的事情会起作用:
bot.on('ready', () => {
console.log('I am ready!');
var hours = 12;
let now = new Date();
var later = new Date();
later.setHours(now.getHours()+hours);
bot.user.setPresence({game: {name: hours+':00'});
var interval = setInterval(() => {
let left = new Date(later - new Date());
if(left >= 0){
bot.user.setPresence({game: {name: left.getHours() + ":" + left.getMinutes()});
} else {
// time is up
}
}, 60000);
});
(未测试的)