当前位置: 首页 > 知识库问答 >
问题:

正在保存所述用户的角色

上官羽
2023-03-14

我正在尝试制作一个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删除角色,临时禁用用户并在超时后返回角色。

共有1个答案

宋鸿德
2023-03-14

你的尝试在正确的轨道上,但你错过了一个小细节。公会成员有一个您使用的方法addRoleRemveRole。然而,这些方法用于添加/删除单个角色。

当您第一次使用let角色历史=tomute.member.roles;获取用户角色时,它返回角色的集合。如果您尝试使用RemveRole(角色历史),它会尝试删除与完整集合相等的单个角色(显然不存在)。

要使其工作,您需要添加/删除整个集合的方法addRolesremovoles。所以你的代码应该是:

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字段作为它的值。你是怎么做到的?我试过了