javascript - Unban everyone command
问题描述
I have made this code for unbanning everyone. But it is not working. What is wrong in this? I am a beginner.
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")
解决方案
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 中的每种情况,您都需要一个break;
,因为否则它将搜索直到他找到第一个break;
,如果没有,它将创建一个无限循环。并且您必须将您创建的嵌入发送到频道中。
推荐阅读
- javascript - 5分钟后空闲用户注销不能在Angular-7的所有页面上正常工作?
- php - Wamp 服务器 aestan 托盘菜单内部错误
- reactjs - MERN 堆栈应用程序在部署到 heroku 时显示空白屏幕
- ruby-on-rails - Rails 上的 Simple_form_for - 如何在提交后显示错误验证
- bash - BASH:将查找命令的值打印到某个点并分配给一个变量
- node.js - nodejs - 在 Windows 文件服务器上保持会话
- python-2.7 - 想在 tkinter gui 窗口中创建两个标签并显示连续计数值:
- html - flex-direction 在 chrome 中没有按预期工作
- magento - 避免 ajax 在重定向之前显示会话消息(magento 2)
- php - 使用heroku迁移时找不到工匠