设置 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))
我无法设置此函数的 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))