如何像其他赠品机器人一样在我的机器人中添加计时器?
How do I add timer in my bot like the other giveaway bots?
我想要的是我的 bot 赠品嵌入消息中的计时器,当 bot 关闭时它可以正常工作,并且计时器仍会自行更新而不显示消息已被编辑。
所以我只是展示我在嵌入中所做的事情:
const embed = new MessageEmbed();
embed.setAuthor({
name: `${message.guild.name} GiveAways!`,
iconURL: `${message.guild.iconURL({ dynamic: true })}`
});
embed.setThumbnail(`${message.guild.iconURL({ dynamic: true })}`);
embed.setTitle(`${title.toUpperCase()}`);
embed.setColor("BLURPLE");
embed.setDescription(
`
**React With To Enter!**
**Ends In: ${time} ${}!**
**Hosted By: ${message.author}!**
`
);
embed.setFooter({
text: `${winnerCount.toString().slice(0, -1)} Winners | Ends`
});
embed.setTimestamp(Date.now() + ms(duration));
const sentGiveaway = await channel.send({
content: "||@everyone|| ** GIVEAWAY **",
embeds: [embed]
});
sentGiveaway.react("");
title
- 这提供了赠品的标题。
time
- 这会将用户输入的持续时间转换为全名。例如:4d => 4 天。
winnerCount
- 这提供了多少获胜者将赢得赠品。
duration
- 这需要来自用户的参数。
Date.now + ms(duration)
- 这提供了赠品结束的确切时间。
我的嵌入在做什么 - 这是我提供持续时间和内容的赠品嵌入,embed.setTimestamp()
没有做我想做的,它只是告诉赠品何时结束。 (我没有提供完整的代码,因为有些人告诉我不要粘贴完整的代码)
我想要什么 - 我想要在可变时间旁边的描述中,我想要一个自动时间更新,人们可以发送,机器人可以发送,但我不知道该怎么做,我已经看到许多机器人在消息中发送计时器。
This the thing I am talking about, check the highlighted thing you will see that this thing update itself when the bot is switched off. (Click the link to see the image)
他们使用秒而不是毫秒,所以你需要在处理毫秒时做必要的除法(除以1000 & Math.floor())
例如:
const timestamp = new Date().getTime() + 600000 // (in 10 minutes)
const timestampInSecs = Math.floor(timestamp / 1000); // Necessary division
// Choose appropriate formatting option - the one GiveawayBot uses is R
const timestampString = `<t:${timestampInSecs}:R>`;
我想要的是我的 bot 赠品嵌入消息中的计时器,当 bot 关闭时它可以正常工作,并且计时器仍会自行更新而不显示消息已被编辑。
所以我只是展示我在嵌入中所做的事情:
const embed = new MessageEmbed();
embed.setAuthor({
name: `${message.guild.name} GiveAways!`,
iconURL: `${message.guild.iconURL({ dynamic: true })}`
});
embed.setThumbnail(`${message.guild.iconURL({ dynamic: true })}`);
embed.setTitle(`${title.toUpperCase()}`);
embed.setColor("BLURPLE");
embed.setDescription(
`
**React With To Enter!**
**Ends In: ${time} ${}!**
**Hosted By: ${message.author}!**
`
);
embed.setFooter({
text: `${winnerCount.toString().slice(0, -1)} Winners | Ends`
});
embed.setTimestamp(Date.now() + ms(duration));
const sentGiveaway = await channel.send({
content: "||@everyone|| ** GIVEAWAY **",
embeds: [embed]
});
sentGiveaway.react("");
title
- 这提供了赠品的标题。
time
- 这会将用户输入的持续时间转换为全名。例如:4d => 4 天。
winnerCount
- 这提供了多少获胜者将赢得赠品。
duration
- 这需要来自用户的参数。
Date.now + ms(duration)
- 这提供了赠品结束的确切时间。
我的嵌入在做什么 - 这是我提供持续时间和内容的赠品嵌入,embed.setTimestamp()
没有做我想做的,它只是告诉赠品何时结束。 (我没有提供完整的代码,因为有些人告诉我不要粘贴完整的代码)
我想要什么 - 我想要在可变时间旁边的描述中,我想要一个自动时间更新,人们可以发送,机器人可以发送,但我不知道该怎么做,我已经看到许多机器人在消息中发送计时器。
This the thing I am talking about, check the highlighted thing you will see that this thing update itself when the bot is switched off. (Click the link to see the image)
他们使用秒而不是毫秒,所以你需要在处理毫秒时做必要的除法(除以1000 & Math.floor())
例如:
const timestamp = new Date().getTime() + 600000 // (in 10 minutes)
const timestampInSecs = Math.floor(timestamp / 1000); // Necessary division
// Choose appropriate formatting option - the one GiveawayBot uses is R
const timestampString = `<t:${timestampInSecs}:R>`;