我有一个机器人,需要付费订阅。我希望能够将客户想要的代码中的特定行会ID列入白名单。我将如何去做呢?除非我的代码中将其列入白名单,否则它将自发地离开它加入的每个服务器。我已经尝试过一些东西。
client.on('guildCreate', (guild) => {
let premiumServers = ['ID1', 'ID2']; // Obviously I replaced ID1, ID2 etc with actual guild IDs
let Premium = true;
for (var i in premiumServers) {
if (guild.id !== premiumServers[i]) Premium = false;
}
if(Premium = false) {
guild.leave();
}
});
没有任何错误消息。除非服务器ID在白名单上,否则该僵尸应该将其邀请的任何服务器留在服务器上。
答案 0 :(得分:1)
如果公会的ID与Premium
中ID数组的全部不匹配,您的循环会将premiumServer
设置为false。
如果行会的ID与ID数组的任何匹配,则可能要设置Premium
为true。
例如:
// Assume that the guild is not premium first.
let Premium = false;
for (var i in premiumServers) {
// Check if the guild is premium
if (guild.id == premiumServers[i]) {
// Set to true and stop the loop.
Premium = true;
break;
}
}
最后,您在if
语句中进行了赋值,而不是相等性测试。
if(Premium = false) // <-- the statement inside does an assignment
{
guild.leave();
}
改为使用Premium == false
或!Premium
。
答案 1 :(得分:1)
看起来像这样的东西可以做得最好:
let premiumServers = ['ID1', 'ID2'];
client.on('guildCreate', (guild) => {
if(!premiumServers.includes(guild.id)) return guild.leave();
});
您的Bot在崩溃或脱机时仍可以加入服务器而不会离开服务器,因此请考虑使用:
const premiumServers = ['ID1', 'ID2'];
client.on('guildCreate', (guild) => {
if(!premiumServers.includes(guild.id)) return guild.leave();
});
client.on('ready', () => {
client.guilds.forEach(guild => {
if(!premiumServers.incudes(guild.id)) guild.leave();
});
console.log(`${client.user.username} is now online...`);
});