频道用户定制权限
更新时间: 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 | 定制权限的更新时间 |
实现方法
创建定制权限
调用addMemberRole
方法为某个成员创建定制权限。新创建的定制权限配置默认继承自频道身份组相应权限的配置。
调用该方法必须先拥有manageRole
和manageChannel
权限,且是该频道的成员。如果没有权限,调用该方法将返回 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
)。
调用该方法必须先拥有manageRole
和manageChannel
权限,且是该频道的成员。如果没有权限,调用该方法将返回 403
错误码。
- API 原型
removeMemberRole(options: RemoveMemberRoleOptions): Promise<void>
其中RemoveMemberRoleOptions
需要传入serverId
、channelId
和accid
。
- 示例代码
API 参考
API |
说明 |
---|---|
addMemberRole |
为频道下某人定制权限 |
updateMemberRole |
修改频道下某成员的定制权限 |
removeMemberRole |
删除某人的定制权限 |
此文档是否对你有帮助?