Web

频道用户定制权限

更新时间: 2024/03/14 19:21:13

除了可以通过频道身份组对所有身份组成员在频道维度进行权限控制,也可以为某个频道成员专门定制权限,管控其在频道维度的操作。

定制权限数据结构

频道成员定制权限由QChatMembeRole定义,其参数说明如下:

参数 类型 说明
serverId string 成员所属服务器的 ID
id string 定制权限 ID
accid string 需要定制权限的成员的 IM 账号 (accid
channelId string 成员所属的频道的 ID
nick string 需要定制权限的成员在服务器的昵称
avatar string 需要定制权限的成员在服务器的头像 URL
ext string 自定义字段
auths QChatRoleAuth 频道身份组的权限
membertype TMemberType 返回成员类型,normal:服务器的普通成员,owner:服务器的所有者(即创建者)
jointime number 需要定制权限的成员加入服务器的时间
inviter string 返回邀请该成员的用户的 IM 账号(accid
createTime number 定制权限的创建时间
updateTime number 定制权限的更新时间

实现方法

uml diagram

创建定制权限

调用addMemberRole 方法为某个成员创建定制权限。新创建的定制权限配置默认继承自频道身份组相应权限的配置。

调用该方法必须先拥有manageRolemanageChannel权限,且是该频道的成员。如果没有权限,调用该方法将返回 403 错误码。

  • API 原型

    addMemberRole(options: AddMemberRoleOptions): Promise<QChatMemberRole>
    
  • 示例代码

    const memberRole = await qchat.qchatRole.addMemberRole({
    "serverId": "{{YOUR_SERVER_ID}}",
    "channelId": "{{YOUR_CHANNEL_ID}}",
    "accid": "{{YOUR_ACCOUNT_ID}}"
    })
    
    console.log(memberRole)
    // {
    //     "serverId": "1001190",
    //     "id": "444056",
    //     "accid": "ctt1",
    //     "channelId": "1099153",
    //     "auths": {
    //         "manageChannel": "ignore",
    //         "manageRole": "ignore",
    //         "sendMsg": "ignore",
    //         "recallMsg": "ignore",
    //         "deleteMsg": "ignore",
    //         "remindOther": "ignore",
    //         "remindEveryone": "ignore",
    //         "manageBlackWhiteList": "ignore"
    //     },
    //     "createTime": 1646200705882,
    //     "updateTime": 1646200705882,
    //     "nick": "",
    //     "memberType": "normal",
    //     "joinTime": 1645431196871,
    //     "inviter": "cjl"
    // }
    
    

修改定制权限

调用updateMemberRole可修改某成员的定制权限。

该方法的入参结构为QChatUpdateMemberRoleParam,需要传入所属的服务器 ID、频道 ID、目标成员的 IM 账号(accid)和需更新的权限 Map。

  • 调用该方法必须先拥有manageRole权限。如果没有该权限,调用该方法将返回 403 错误码。
  • 用户无法配置自己没有的权限。例如用户没有权限A,则无法修改权限A 的配置。
  • API 原型

    updateMemberRole(options: UpdateMemberRoleOptions): Promise<QChatMemberRole>
    
  • 示例代码

    let memberRole = await qchat.qchatRole.addMemberRole({
    "serverId": "{{YOUR_SERVER_ID}}",
    "channelId": "{{YOUR_CHANNEL_ID}}",
    "accid": "{{YOUR_ACCOUNT_ID}}"
    })
    
    memberRole = await qchat.qchatRole.updateMemberRole({
    "serverId": memberRole.serverId,
    "channelId": memberRole.channelId,
    "accid": memberRole.accid,
    "auths": {
        "remindEveryone": "deny"
    }
    })
    

删除定制权限

调用removeMemberRole方法可将某人的定制权限删除。

该方法的入参结构为QChatRemoveMemberRoleParam,需要传入所属的服务器 ID、频道 ID、目标成员的 IM 账号(accid)。

调用该方法必须先拥有manageRolemanageChannel权限,且是该频道的成员。如果没有权限,调用该方法将返回 403 错误码。

  • API 原型
removeMemberRole(options: RemoveMemberRoleOptions): Promise<void>

其中RemoveMemberRoleOptions需要传入serverIdchannelIdaccid

  • 示例代码

API 参考

API
说明
addMemberRole 为频道下某人定制权限
updateMemberRole 修改频道下某成员的定制权限
removeMemberRole 删除某人的定制权限
此文档是否对你有帮助?
有帮助
去反馈
  • 定制权限数据结构
  • 实现方法
  • 创建定制权限
  • 修改定制权限
  • 删除定制权限
  • API 参考