如何在Discord.js中更改机器人昵称而不发送消息/message每隔一分钟创建一次事件



我想每分钟更改一次机器人昵称。我尝试了message.guild.members.cache.get(bot.user.id).setNickname("Botnickname" +"✅") message.guild.me.setNickname("Botnme" +"✅"),它只在有人编写/发送消息(使用messageCreate(事件时有效。

但我只想在不使用任何事件的情况下,每分钟都更改昵称。就像更改机器人程序bot.user.setUsername("BotUsername")的用户名一样。我可以直接更改机器人的用户名而不是昵称,但更改用户名是有限制的,所以有什么可能的解决方案可以在没有任何事件的情况下只更改昵称?

昵称属性只能在公会中更改,因此它需要一个事件,但您可以像下面的一样在准备中设置一个间隔

client.on('ready', () => {
const guild = 'id';
setInterval(() => {
client.guilds.cache.get(guild).me.setNickname('nick')
}, 60000);
});

您可以将其设置为cron作业,该作业不需要任何事件。只是要上线的机器人。

const cron = require('node-cron')
const guildId = 'putGuildIdNumberHere' // edit this line
cron.schedule('*/1 * * * *', function() { //triggers every minute on the minute
const nicknames = [
"Name 1",
"Name 2",
"Name 3",
"" // in case you want it to show its real name every once in a while
]
client.guilds.cache.get(guildId).me.setNickname(nicknames[Math.floor(Math.random() * nicknames.length)]) 
// picks a name randomly from the list
})