Simple Robot v4.7.0 Help

频道成员 QGMember

频道成员,即 Member ,存在于频道服务器(Guild )中。

API中的频道成员

在API模块中存在一些用来获取 Member 的API。

比如你可以通过 GetMemberApi 获取 SimpleMember 类型结果的成员信息、 DeleteMemberApi 删除(踢出)一个成员等。

Stdlib模块中的频道成员

当你直接使用标准库模块时,你可以在一些与频道成员相关的事件中得到它的信息。

比如当你处理 GuildMemberAdd 类型事件时,可以通过 data 获取到 EventMember

bot.subscribe<GuildMemberAdd> { val member: EventMember = data }
bot.subscribe(EventProcessors.async(GuildMemberAdd.class, (event, raw) -> { var member = event.getData(); // ... return CompletableFuture.completedFuture(null); }));
bot.subscribe(EventProcessors.block(GuildMemberAdd.class, (event, raw) -> { var member = event.getData(); }));

组件库中的频道成员

组件中 QGMember 类型实现了simbot标准API中的 Member 类型,并提供与频道成员相关的功能。 如果你想要获取一个 QGChannel ,你可以在 QGBotQGGuild 或一个与子频道相关的事件中获取。

QGBot 中获取子频道你可以前往参考 频道操作

QGGuild 中获取频道成员你可以前往参考 获取成员

在事件中获取,那么这个事件应当与频道成员有所关联。 它们通常使用 member 属性获取。

QGMemberAddEvent 事件为例:

val event: QGMemberAddEvent = ... val member = event.member()
QGMemberAddEvent event = ... event.getMemberAsync() .thenAccept(member -> { ... })
QGMemberAddEvent event = ... var member = event.getMemberBlocking()
QGChannelCreateEvent event = ... event.getMemberReserve() // 例如转为 Reactor 的 `Mono` .transform(SuspendReserves.mono()) .subscribe(member -> { ... })

私聊消息

QGMember 实现simbot标准API中的 Channel ,而它又支持 SendSupport, 也就是说 QGMember 支持向某个频道成员发送私聊消息。

val member: QGMember = ... member.send("消息内容") member.send("消息内容".toText() + At("user id".ID))
QGMember member = ... var sendTask1 = member.sendAsync("消息内容"); var sendTask2 = member.sendAsync(Messages.of( Text.of("文本消息"), At.of(Identifies.of("user id")) ));
QGMember member = ... member.sendBlocking("消息内容"); member.sendBlocking(Messages.of( Text.of("文本消息"), At.of(Identifies.of("user id")) ));
QGTextChannel member = ... member.sendReserve("消息内容") .transform(SuspendReserves.mono()) .subscribe(receipt -> { ... }); member.sendReserve(Messages.of( Text.of("文本消息"), At.of(Identifies.of("user id")) )).transform(SuspendReserves.mono()) .subscribe(receipt -> { ... });

角色操作

QGMember 拥有一些获取或操作自身角色 (QGMemberRole) 的API。

获取角色

val member: QGMember = ... // 获取当前用户拥有的角色集合 val roles = member.roles
QGmember member = ... // 可以直接在异步中遍历 // 第一个参数 scope 可以选择 QGGuild、QGBot 等, // 或者直接使用 GlobalScope member.getRoles().collectAsync(GlobalScope.INSTANCE, member -> { }); // 可以使用 Collectables.toListAsync / collectAsync var rolesCollectable = member.getRoles(); Collectables.toListAsync(rolesCollectable) .thenAccept(role -> {});
QGmember member = ... // 可以使用 SuspendReserves.list 转为 List var roleList = member.getRoles().transform(SuspendReserves.list()); // 可以使用 Collectables 转成 Stream 或 List var rolesCollectable = member.getRoles(); Collectables.asStream(rolesCollectable) .forEach(role -> {});
QGmember member = ... // 可以直接在异步中遍历 // 第一个参数 scope 可以选择 QGGuild、QGBot 等, // 或者直接使用 GlobalScope member.getRoles().collectAsync(GlobalScope.INSTANCE, role -> { }); var rolesCollectable = guild.getRoles(); // 可以使用 Collectables 转为 Flux Collectables.asFlux(rolesCollectable) .subscribe(role -> { });
Last modified: 15 November 2024