【发布时间】:2019-05-21 09:27:10
【问题描述】:
我正在尝试制作一个 tempmute 命令,我遵循了一个在线教程,该教程有效...但是我自己的服务器有多个角色的用户,即使他们收到“静音”角色,这些角色也允许他们交谈。
有没有办法保存提到的用户的所有角色,然后删除和添加这些角色?
我已经尝试过创建一个新的 let 变量
let roleHistory = tomute.member.roles;
然后添加和删除它们:
await(tomute.removerole(roleHistory));
tomute.addRole(roleHistory);
但这没有用
module.exports.run = async (bot, message, args) => {
let tomute = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
if(!tomute) return message.reply("Couldn't find user.");
if(tomute.hasPermission("MANAGE_MESSAGES")) return message.reply("Can't mute them!");
let muterole = message.guild.roles.find(`name`, "muted");
if(!muterole){
try{
muterole = await message.guild.createRole({
name: "muted",
color: "#000000",
permissions:[]
})
message.guild.channels.forEach(async (channel, id) => {
await channel.overwritePermissions(muterole, {
SEND_MESSAGES: false,
ADD_REACTIONS: false
});
});
}catch(e){
console.log(e.stack);
}
}
let mutetime = args[1];
if(!mutetime) return message.reply("You didn't specify a time!");
await(tomute.addRole(muterole.id));
message.reply(`<@${tomute.id}> has been muted for ${ms(ms(mutetime))}`);
setTimeout(function(){
tomute.removeRole(muterole.id);
message.channel.send(`<@${tomute.id}> has been unmuted!`);
}, ms(mutetime));
}
我希望机器人在超时后将角色带走、临时用户并归还角色。
【问题讨论】:
标签: discord.js