【发布时间】:2020-11-09 23:18:03
【问题描述】:
我正在尝试做一个基本的 Discord.js 机器人,我想添加一个静音命令。
我已经尝试过了(下面的代码)。这分配了一个“foca muted you oof”角色(我知道名字很奇怪。)这不允许你做任何事情。但是在我的测试帐户上,即使它分配了该角色,我仍然可以非常好地输入消息。
main.js:
} else if(cmd === `${prefix}mute`) {
if(!msg.member.hasPermission(["MANAGE_MESSAGES"])) return msg.channel.send("no no no, you can't manage messages. ok? alright?");
let toMute = msg.guild.member(msg.mentions.users.first());
if(toMute.user.username === msg.author.username) return msg.channel.send("oof. u can't mute urself.");
if(!toMute) return msg.channel.send("idk who to mute. does that person exist????");
let role = msg.guild.roles.find(r => r.name === "foca muted you oof");
if(!role) {
try {
role = await msg.guild.createRole({
name: "foca muted you oof",
color: "#000000",
permissions: []
});
msg.guild.channels.forEach(async (channel, id) => {
await channel.overwritePermissions(role, {
"SEND_MESSAGES": false,
"ADD_REACTIONS": false
});
})
} catch(e) {
console.log(e.stack);
}
}
if(toMute.roles.has(role.id)) return msg.channel.send("oof. this user is already muted. tried to do a bravery, huh?");
await toMute.addRole(role);
msg.channel.send(`${toMute.user.username} has been muted.`);
}
你能告诉我有什么问题吗?
【问题讨论】:
-
也许被静音的用户有另一个角色覆盖较低的角色权限覆盖?
-
好吧,以前可以工作(并且用户有额外的角色),但现在即使用户有 0 个角色(除了静音的角色)它也不起作用
-
现在不行了。
-
@everyone 角色的覆盖情况如何?
-
您是否在 Discord 服务器中的实际频道上设置了权限以禁止该角色的所有内容?因为如果您只是取消选中角色本身的权限,那将不会做任何事情。另外验证 @everyone 默认角色没有设置任何权限来明确允许通道本身。
标签: javascript node.js bots discord.js