我制作了这个代码来解除所有人的禁令。但它不起作用。这有什么问题?我是初学者。
let discord = require("discord.js")
let client = new discord.Client()
client.on('message', message => {
const member = message.member;
switch (message.content.toLowerCase()) {
case (PREFIX + "-unban all"):
if (member.hasPermission('MANAGE_SERVER')) {
async function ubAll() {
const users = await message.guild.fetchBans()
for (const user of users.array()) {
await message.guild.unban(user)
}
}
let embed = new discord.MessageEmbed()
.setTitle("Done!")
.setDescription("Successfully Unbanned everyone.")
.setColor("Green")
.setThumbnail("https://riyazapp.com/wp-content/uploads/2020/04/checkmark.gif")
}
if (!member.hasPermission('MANAGE_SERVER')) {
message.reply("You do not have enough permissions for this command!")
}
}
})
client.login("not showing")
答案 0 :(得分:0)
let discord = require("discord.js");
let client = new discord.Client();
client.on('message', message => {
const member = message.member;
switch (message.content.toLowerCase()) {
case ("-unban all"):
if (member.hasPermission('MANAGE_SERVER')) {
async function ubAll() {
let users = await message.guild.fetchBans();
let userArr = users.array();
let unbanUsers = [];
for(var i = 0; i < userArr.length; i++) {
unbanUsers.push(userArr[i].user.id);
}
for(var j = 0; j < unbanUsers.length; j++) {
message.guild.members.unban(unbanUsers[j]);
}
}
ubAll();
let embed = new discord.MessageEmbed()
.setTitle("Done!")
.setDescription("Successfully Unbanned everyone.")
.setColor("Green")
.setThumbnail("https://riyazapp.com/wp-content/uploads/2020/04/checkmark.gif")
message.channel.send(embed);
}
else {
message.reply("You do not have enough permissions for this command!")
}
break;
}
})
client.login("not showing")
您好,您的代码中有很多错误。您在未定义的情况下使用了 PREFIX
。我猜你的前缀是 -
,因为我在你的 switch-case 的第一个案例中看到了它。无论如何,我还修复了您的 ubAll
函数。现在看起来有点复杂,但别担心,它并不难理解。因为我是经典 for 循环的粉丝,所以我在新函数中使用了它们。
那么它的作用是什么?
在 users
中存储了来自被禁止用户的所有信息。在 userArr
中,我们只是将我们从 users
获得的所有信息存储在一个数组中。然后我创建了一个空数组 unbanUsers
来存储我们想要取消禁止的所有用户(在我们的例子中是每个人)。然后在第一个 for 循环中,我们遍历 users
数组中的所有值并将用户 ID 推送到我们的 unbanUsers
数组中(因为我们需要用户的 ID 来解除对他的禁止)。现在,我们在第一个 for 循环中找到的每个用户的 ID 都存储在 unbanUsers
中。在第二个 for 循环中,我们遍历 unbanUsers
数组并取消禁止每个用户。
然后你必须调用函数,因为如果你不这样做,它根本无法工作。您还忘记了您的案例中的 break;
。对于 switch-case 中的每个 case,你都需要一个 break;
,否则它会一直搜索直到他找到第一个 break;
,如果没有,它会创建一个无限循环。然后,您必须将您创建的嵌入内容发送到频道中。