设置 SetInterval 以更新 discord.js 中的服务器统计信息

Setting up SetInterval to update server stats in discord.js

我无法设置此函数的 setInterval 以添加它以任何方式工作,正在尝试不同的函数、bools 等.. 甚至一次都没有让它工作。 我的代码:

Index.js

// Require the necessary discord.js classes
const { Client, Intents } = require('discord.js');
const { token } = require('./config.json');

const client = new Client({
    intents: [
        Intents.FLAGS.GUILDS,
        Intents.FLAGS.GUILD_MESSAGES,
        Intents.FLAGS.GUILD_MEMBERS, //also enable in discord developer portal
        Intents.FLAGS.GUILD_MESSAGES,
        Intents.FLAGS.GUILD_PRESENCES,
        Intents.FLAGS.DIRECT_MESSAGES
    ]
})
// BOT Credits
const display = require('./display')
// Welcome message
const welcome = require('./welcome')
// MemberCount
const ServerStats = require('./ServerStats')

client.once('ready', () => {
    console.log("Ready!")
    welcome(client)
    ServerStats(client)
    // display(client)
});

client.login(token);

ServerStats.js

console.log(`ServerStats loaded successfully.`)

module.exports = (client) => {

    const MemberID = 'ID'      
    const OnlineID = 'ID'      
    const DateID = 'ID'        
    const TimeID = 'ID'        
    const LegendsID = 'ID'     
    const LegendsRoleID = 'ID' 
    const today = new Date();                 
    const monthNames = ["January", "February", "March", "April", "May", "June", // Months to set in date
        "July", "August", "September", "October", "November", "December"
    ];
    const ServerStats = guild => {
        const MemberChannel = guild.channels.cache.get(MemberID)    // Channels Assigmenet        
        const OnlineChannel = guild.channels.cache.get(OnlineID)    // Channels Assigmenet    
        const DateChannel = guild.channels.cache.get(DateID)        // Channels Assigmenet
        const TimeChannel = guild.channels.cache.get(TimeID)        // Channels Assigmenet
        const LegendsChannel = guild.channels.cache.get(LegendsID)  // Channels Assigmenet            
        const LegendsCount = guild.roles.cache.get(LegendsRoleID).members.size; // Specified Role Count
        const OnlineUsers = guild.members.cache.filter(members => members.presence?.status == 'online').size
        const IdleUsers = guild.members.cache.filter(members => members.presence?.status == 'idle').size
        const dndUsers = guild.members.cache.filter(members => members.presence?.status == 'dnd').size
        console.log(OnlineUsers, IdleUsers, dndUsers)
        OnlineChannel.setName(`${OnlineUsers}  ⛔${dndUsers}  ${IdleUsers} `)
        DateChannel.setName(` | ${today.getDate()} / ${monthNames[today.getMonth()]} - ${today.getFullYear()}`)
        TimeChannel.setName(`⏲| ${today.getUTCHours()}:${today.getUTCMinutes()} (UTC)`)
        LegendsChannel.setName(`  | Legends: ${LegendsCount} `)
        MemberChannel.setName(`   | Members: ${guild.memberCount}`)    
        console.log('Setted')
    }

    client.on(`guildMemberAdd`, SetInterval(() => { (member) => ServerStats(member.guild) }, 120000))

}

错误:

    client.on(`guildMemberAdd`, SetInterval(() => { (member) => ServerStats(member.guild) }, 120000))
           ^

ReferenceError: SetInterval is not defined

它在guildMemberAdd 上有效一次,只是不能在Interval 中设置它。 我会感谢你的帮助 干杯!

setInterval函数是驼峰式,不是帕斯卡式;即 s 没有大写。

改变

client.on(`guildMemberAdd`, SetInterval(() => { (member) => ServerStats(member.guild) }, 120000))

client.on(`guildMemberAdd`, setInterval(() => { (member) => ServerStats(member.guild) }, 120000))