Simple Robot v4.6.0 Help

群成员 OneBotMember

OneBotMember 实现 Member, OneBotStrangerAware 以及其他一些功能接口(后续 "更多能力" 中会介绍), 用于表示一个 OneBot11 协议中的 群成员

Member

OneBotMember 实现来自 Member 定义的抽象属性或函数。

id

QQ号。

avatar

成员QQ头像。

name

用户名。

nick

在群内的昵称, 一些地方(比如协议中)也会称其为 card

SendSupport

OneBotMember 拥有发送消息的能力。 使用 send 发送纯文本、消息或转发事件消息体。

val member: OneBotMember = ... member.send("text") member.send("text".toText() + Face(123.ID)) member.send(messageContent)
OneBotMember member = ...; member.sendAsync("text"); member.sendAsync( Messages.builder() .add("text") .add(new Face(Identifies.of(123))) .build() ); member.sendAsync(messageContent);
OneBotMember member = ...; member.sendBlocking("text"); member.sendBlocking( Messages.builder() .add("text") .add(new Face(Identifies.of(123))) .build() ); member.sendBlocking(messageContent);
OneBotMember member = ...; member.sendReserve("text") .transform(SuspendReserves.mono()) .subscribe(); member.sendReserve( Messages.builder() .add("text") .add(new Face(Identifies.of(123))) .build() ) .transform(SuspendReserves.mono()) .subscribe(); member.sendReserve(messageContent) .transform(SuspendReserves.mono()) .subscribe();

DeleteSupport

OneBotMember 实现接口 DeleteSupport ,代表其支持"删除"能力。 在这里,删除即表示将这个成员踢出群。

val member: OneBotMember = ... member.delete() member.delete(OneBotMemberDeleteOption.RejectRequest)
OneBotMember member = ...; member.deleteAsync(); member.deleteAsync(OneBotMemberDeleteOption.rejectRequest()); member.deleteAsync( OneBotMemberDeleteOption.rejectRequest(), StandardDeleteOption.IGNORE_ON_FAILURE );
OneBotMember member = ...; member.deleteBlocking("text"); member.deleteBlocking(OneBotMemberDeleteOption.rejectRequest()); member.deleteBlocking( OneBotMemberDeleteOption.rejectRequest(), StandardDeleteOption.IGNORE_ON_FAILURE );
OneBotMember member = ...; member.deleteReserve() .transform(SuspendReserves.mono()) .subscribe(); member.deleteReserve(OneBotMemberDeleteOption.rejectRequest()) .transform(SuspendReserves.mono()) .subscribe(); member.deleteReserve( OneBotMemberDeleteOption.rejectRequest(), StandardDeleteOption.IGNORE_ON_FAILURE ) .transform(SuspendReserves.mono()) .subscribe();

可以注意到, delete 支持可变参数 options。 在 OneBotGroup 中,它支持如下的可选属性:

StandardDeleteOption.IGNORE_ON_FAILURE

忽略调用过程中可能会产生的任何异常。

OneBotMemberDeleteOption.*

OneBotMemberDeleteOption 的所有子类型。

RejectRequest

拒绝此人的加群请求,也就是踢出后将其屏蔽。

OneBotStrangerAware

OneBotMember 实现 OneBotStrangerAware, 可以通过 toStranger 查询并得到一个对应的 OneBotStranger 类型。

val member: OneBotMember = ... val stranger = member.toStranger()
OneBotMember member = ...; member.toStrangerAsync() .thenAccept(stranger -> { // ... });
OneBotMember member = ...; var stranger = member.toStrangerBlocking();
OneBotMember member = ...; member.toStrangerReserve() .transform(SuspendReserves.mono()) .subscribe(stranger -> { // ... });

更多能力

设置昵称

可以通过 setNick(String) 设置此成员在群内的昵称。

val member: OneBotMember = ... member.setNick("newNick")
OneBotMember member = ...; member.setNickAsync("newNick");
OneBotMember member = ...; member.setNickBlocking("newNick");
OneBotMember member = ...; member.setNickReserve("newNick") .transform(SuspendReserves.mono()) .subscribe();

设置管理员

可以通过 setAdmin(Boolean) 设置此成员为管理或取消管理。

参数为 true 设置为管理, false 取消管理

val member: OneBotMember = ... member.setAdmin(true)
OneBotMember member = ...; member.setAdminAsync(true);
OneBotMember member = ...; member.setAdminBlocking(true);
OneBotMember member = ...; membersetAdminReserve(true) .transform(SuspendReserves.mono()) .subscribe();

获取原始类型

有些时候可能需要获取OneBot11协议中的 Member 类型的内容。 OneBotMember 的实现并不唯一,因此并不一定是来自API所获取的。

可以通过 getSourceMemberInfo 得到 GetGroupMemberInfoApi 接口的请求结果。

val member: OneBotMember = ... val info = member.getSourceMemberInfo()
OneBotMember member = ...; member.getSourceMemberInfoAsync() .thenAccept(info -> { // ... });
OneBotMember member = ...; var info = member.getSourceMemberInfoBlocking();
OneBotMember member = ...; member.getSourceMemberInfoReserve() .transform(SuspendReserves.mono()) .subscribe(info -> { // ... });

禁言

可以使用 ban(...)unban() 对成员禁言或解除禁言。

通常来讲禁言时间应该大于等于1分钟、小于30天。 但是代码内未作校验,这交给了OneBot服务端处理。

val member: OneBotMember = ... member.ban(10.minutes) member.unban()
OneBotMember member = ...; member.banAsync(10L, TimeUnit.MINUTES); member.unbanAsync();
OneBotMember member = ...; member.banBlocking(10L, TimeUnit.MINUTES); member.unbanBlocking();
OneBotMember member = ...; member.banReserve(10L, TimeUnit.MINUTES) .transform(SuspendReserves.mono()) .subscribe(); member.unbanReserve() .transform(SuspendReserves.mono()) .subscribe();

设置头衔

可以通过 setSpecialTitle(String?) 设置此成员在群内的特殊头衔。

val member: OneBotMember = ... member.setSpecialTitle("newTitle")
OneBotMember member = ...; member.setSpecialTitleAsync("newTitle");
OneBotMember member = ...; member.setSpecialTitleBlocking("newTitle");
OneBotMember member = ...; member.setSpecialTitleReserve("newTitle") .transform(SuspendReserves.mono()) .subscribe();

获取 OneBotMember

群成员 OneBotMember 通常来自 群 OneBotGroup 或与群成员相关的事件。

来自事件

大多数跟群成员相关的事件中都可以直接获取到 OneBotMember。 通常来讲,如果事件主体与群成员相关,那么就是 content, 如果侧面相关,例如某个群成员消息事件中, 消息才是重点,而群成员则为 author

Last modified: 12 September 2024