跳转至

HolyParty 类型与事件

汇总 HolyParty 暴露给外部的事件类、枚举与数据类型。


ApiEvents

可注册事件的枚举集合,通过 HolyPartyServerAPI.getApiEvents() 获取。

class HolyPartyServerAPI.ApiEvents(BaseEnum):
    MemberJoinedPartyEvent              # 成员加入队伍
    MemberLeftPartyEvent                # 成员离开队伍(含主动/被踢/被强制)
    MemberRoleChangedEvent              # 成员角色变更
    PartyRolePermissionChangedEvent     # 队伍角色权限项变更

每个枚举项是 ApiEvents.EnumObject,可通过 .getEventCls() 取出对应的事件类。ApiEvents 继承自 BaseEnum,可调用 values() / valueOf(name) 反射访问。


MemberJoinedPartyEvent

玩家加入队伍时触发。

属性 类型 说明
memberId str 加入的玩家 ID
memberName str 加入的玩家显示名
partyKey PartyKey 队伍标识
otherMemberIds list[str] 此次加入前已经在队伍里的成员 ID 列表

Getter

方法 返回
getMemberId() str
getMemberName() str
getPartyKey() PartyKey
getPartyId() str(等价于 getPartyKey().getPartyId()
getPartyName() str(等价于 getPartyKey().getPartyName()
getOtherMemberIds() list[str]

MemberLeftPartyEvent

玩家离开队伍时触发,统一覆盖 主动离开 / 被踢 / 被强制离开三种场景。

属性 类型 说明
memberId str 离开的玩家 ID
memberName str 离开的玩家显示名
partyKey PartyKey 队伍标识
remainingMemberIds list[str] 离开后剩余成员 ID 列表
newOwnerId str | None 若离开导致队长转移,则为新队长 ID;否则 None
newOwnerName str | None 新队长显示名;否则 None
leftReason str | None 离开原因常量,见下表
kickerId str | None 若是被踢/被强制离开,则为操作者 ID
kickerName str | None 操作者显示名
kickerRoleName str | None 操作者在该队伍的角色名

离开原因常量

MemberLeftPartyEvent 类上挂载三个字符串常量:

常量 含义
REASON_LEAVE "leave" 玩家主动离开
REASON_KICK "kick" 被其他成员踢出
REASON_FORCE_LEAVE "force_leave" 被系统强制离开(如队伍解散后清理)

Getter

方法 返回 说明
getMemberId() str
getMemberName() str
getPartyKey() PartyKey
getPartyId() str
getPartyName() str
getRemainingMemberIds() list[str]
getNewOwnerId() str | None
getNewOwnerName() str | None
getLeftReason() str | None 取上述常量之一或 None
isKick() bool 等价于 getLeftReason() == REASON_KICK
isForceLeave() bool 等价于 getLeftReason() == REASON_FORCE_LEAVE
getKickerId() str | None
getKickerName() str | None
getKickerRoleName() str | None
getOperatorId() str | None 别名 getKickerId
getOperatorName() str | None 别名 getKickerName
getOperatorRoleName() str | None 别名 getKickerRoleName

Operator 别名

若你的代码不区分「踢出 / 强制离开」,统一使用 getOperatorXxx 名称会让逻辑更通用。


MemberRoleChangedEvent

队伍内一个或多个成员的角色发生变更时触发。

属性 类型 说明
partyKey PartyKey 队伍标识
callerName str 操作者显示名
callerRoleName str 操作者角色名
targetIds list[str] 角色被改变的成员 ID 列表
newRoleName str 新角色名

Getter

方法 返回
getPartyKey() PartyKey
getPartyId() str
getPartyName() str
getCallerName() str
getCallerRoleName() str
getTargetIds() list[str]
getNewRoleName() str

PartyRolePermissionChangedEvent

队伍内某个角色的权限项发生变更时触发。

属性 类型 说明
partyKey PartyKey 队伍标识
callerId str 操作者 ID
callerName str 操作者显示名
role str 角色内部标识(如 "owner""admin""member" 等)
roleName str 角色显示名
changes list[PartyRolePermissionChange] 本次变更的权限项列表

Getter

方法 返回
getPartyKey() PartyKey
getPartyId() str
getPartyName() str
getCallerId() str
getCallerName() str
getRole() str
getRoleName() str
getChanges() list[PartyRolePermissionChange]

PartyRolePermissionChange

权限变更条目,作为 PartyRolePermissionChangedEvent.changes 列表中的每一项。仅供给外部读取,不需要也不应由外部代码自行构造。

方法

方法 返回 说明
getItem() PartyRolePermissionItem 权限项本身
getNewValue() bool 变更后的开启状态
getStatusText() str 中文状态文本:"允许" / "禁止"
toMessageLine() str 拼好的中文一行:"变更的{item.label}: 允许/禁止"

PartyKey

队伍轻量标识对象,包含 ID 与名称。

from HolyPartyScripts.common.data_type.PartyKey import PartyKey

构造

PartyKey(partyId, partyName, extensionData=None)
# type: (str | unicode, str | unicode, dict | None) -> None

构造时会校验并规范化 partyId(必须是合法的队伍 ID 字符串)与 partyName(必须可转 str);不合法时抛 TypeError

方法

方法 返回 说明
getPartyId() str 队伍 ID
getPartyName() str 队伍显示名
setPartyName(partyName) None 修改队伍显示名(自动规范化为 str
getName() str getPartyName 的别名
setName(name) None setPartyName 的别名
serialize() dict 序列化为字典(用于持久化/网络传输)

类方法

方法 返回 说明
fromPayload(payload) PartyKey 从字典反序列化
fromParty(party) PartyKey 从任意带 getPartyId/getPartyName 接口的队伍对象生成

PartyServer

队伍完整状态对象HolyPartyServerAPI 不直接返回它,而是返回 CurrentParty 包装。如需访问完整属性,使用 currentParty.getParty()

PartyServer 是 HolyParty 的内部状态对象,外部只应读取其属性,常用方法:

方法 返回
getPartyId() str
getPartyName() str
getOwnerId() str
getMembers() list[str]
hasMember(memberId) bool
getMemberRole(memberId) str
getColor() str
getIcon() str
getCreatedAt() int
serialize() dict

ModEventPriorityEnum

事件处理器执行优先级。slot 越小越先触发。

from HolyPartyScripts.lib.common.enum.ModEventPriorityEnum import ModEventPriorityEnum
常量 slot 触发顺序
LOWEST 0 最先触发
LOW 1
NORMAL 2 默认值
HIGH 3
HIGHEST 4 最晚触发