我正在尝试制作一个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));
}
我希望bot删除角色,临时禁用用户并在超时后返回角色。
你的尝试在正确的轨道上,但你错过了一个小细节。公会成员有一个您使用的方法addRole
和RemveRole
。然而,这些方法用于添加/删除单个角色。
当您第一次使用let角色历史=tomute.member.roles;
获取用户角色时,它返回角色的集合
。如果您尝试使用RemveRole(角色历史)
,它会尝试删除与完整集合相等的单个角色(显然不存在)。
要使其工作,您需要添加/删除整个集合的方法addRoles
和removoles
。所以你的代码应该是:
let roleHistory = tomute.roles;
// Removing all the roles
await(tomute.removeRoles(roleHistory));
// Adding all the roles
tomute.addRoles(roleHistory);
P. s.因为你的tomute变量已经是一个用户,你需要改变你的代码来获取角色,从让角色历史=tomute.member.roles;到让角色历史=tomute.roles;
接口说明 保存角色 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /permissions/api/team/role/v1.0.0/save 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN roleName string formData
接口说明 保存角色 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 POST /permissions/api/team/role/v1.0.0/s
如何获取用户角色并将其保存在数组中?我尝试了不同的方法,下面是一个例子 但它不起作用,我也不知道该怎么做,我希望你能帮忙
我无法获得任何与CreateUser一起工作的东西。
我在一个有这种结构的拉威尔项目中工作 用户:id | first | u name |。。。 角色:id|name 分配的角色:id |用户id |角色id 我认为这是很明显的:p 用户模型 角色模型 我正在寻找一种方法来获取所有具有指定角色(在本例中为“教师”)的用户。我试过这个: 但这总是返回一个包含所有用户的数组。 有人知道为什么会这样吗?谢谢
我通过Symfony2 crud生成器创建了一个表单。我有一个与当前实体不相关的用户,我想让它自动保存当前用户的createdby字段作为它的值。你是怎么做到的?我试过了