【发布时间】:2020-01-04 03:47:44
【问题描述】:
我最近一直在思考这段代码最长的时间。我可以添加角色,但第二次尝试删除角色时没有错误,也没有实际删除角色。
我曾尝试在互联网上查找此问题,但每个问题要么不是相同的上下文,要么没有解决我的问题。我也尝试过完全复制我的添加角色命令,只需将“addRole”更改为“removeRole”,仍然无法正常工作。
// Unmute.js
/* ... */
exports.run = async(client,message,args) => {
/* ... */
let mutee = message.mentions.members.first() || message.guild.members.get(args[0])
if (!mutee) return message.channel.send("You did not mention a user!")
let reason = args.slice(1).join(" ")
if (!reason) reason = "No reason."
let muterole = message.guild.roles.find(r => r.property === "Muted")
if (!muterole) {
try {
muterole = await message.guild.createRole({
name: "Muted",
color: "#514f48",
permissions: []
})
message.guild.channels.forEach(async(channel, id) => {
await channel.overwritePermissions(muterole, {
SEND_MESSAGES: false,
ADD_REACTIONS: false,
SPEAK: false
});
})
} catch(e) {
console.log(e.stack)
}
}
/* ... */
mutee.removeRole(muterole.id).then(() => {
message.delete()
/* ... */
});
}
// Mute.js
/* ... */
exports.run = async(client,message,args) => {
/* ... */
let mutee = message.mentions.members.first() || message.guild.members.get(args[0])
if (!mutee) return message.channel.send("You did not mention a user!")
let reason = args.slice(1).join(" ")
if (!reason) reason = "No reason."
let muterole = message.guild.roles.find(r => r.property === "Muted")
if (!muterole) {
try {
muterole = await message.guild.createRole({
name: "Muted",
color: "#514f48",
permissions: []
})
message.guild.channels.forEach(async(channel, id) => {
await channel.overwritePermissions(muterole, {
SEND_MESSAGES: false,
ADD_REACTIONS: false,
SPEAK: false
});
})
} catch(e) {
console.log(e.stack)
}
}
/* ... */
mutee.addRole(muterole.id).then(() => {
message.delete()
/* ... */
});
}
(除非需要,否则所有不必要的部分都被剪掉了)
我在运行%mute [user] 时所期望的结果是使用户静音,它确实做到了。我对%unmute [user] 的期望结果当然是取消用户静音,它不会取消用户静音,而是继续执行“then”语句,该语句只有在成功取消用户静音时才会运行。没有打印错误或任何错误,所以我一点也不明白这个问题。
【问题讨论】:
标签: node.js express npm discord discord.js