This repository was archived by the owner on Mar 29, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
4. 事件 设置和获取类型
DavidMeow edited this page Nov 28, 2022
·
2 revisions
本章节主要讨论生成的事件和一些通用事件的处理方案
-
端发送的信息例如,端已连接,端已断开, 正在重试,出错..等, 都是由日志直接打印* - p.s.要注意, 如果您的Mirai后端部署于不同于端的位置, 您可能和后端断连时Mirai并未下线.
其事件定义在 ./Client/ClientEvent.cs 文件的 /*--Type of Service--*/行后
| 签名 | 参数 | 用途 |
|---|---|---|
| _OnServeiceConnected | string |
接收到WS连接成功信息 |
| _OnServeiceError | Exception |
接收到WS错误信息 |
| _OnServiceDropped | string |
接收到WS断连信息 |
| _OnClientOnlineEvent | OtherClientOnlineEvent |
接收到其他客户端上线通知 |
| _OnOtherClientOfflineEvent | OtherClientOfflineEvent |
接收到其他客户端下线通知 |
| _OnCommandExecutedEvent | CommandExecutedEvent |
接收到后端传送命令执行 |
| _OnUnknownEvent | string |
接收到后端传送未知指令 |
- 信息事件通知类型如 接收到好友私聊,群聊,临时信息,陌生人...等
- 均由事件推送,您可以订阅相关回调函数实现信息接收后的具体逻辑
其事件定义在 ./Client/ClientEvent.cs 文件的 /*--Type of Message--*/ 行后
| 签名 | 参数 | 用途 |
|---|---|---|
| OnFriendMessageReceive |
FriendMessageSender, Message[]
|
接收到好友私聊信息 |
| OnGroupMessageReceive |
GroupMessageSender, Message[]
|
接收到群消息 |
| OnTempMessageReceive |
TempMessageSender, Message[]
|
接收到临时信息 |
| OnStrangerMessageReceive |
StrangerMessageSender, Message[]
|
接收到陌生人消息 |
| OnOtherMessageReceive |
OtherClientMessageSender, Message[]
|
接收到其他类型消息 |
| OnFriendSyncMessageReceive |
FriendSyncMessageSender, Message[]
|
接收到好友同步消息 |
| OnGroupSyncMessageReceive |
GroupSyncMessageSender, Message[]
|
接收到群同步消息 |
| OnTempSyncMessageReceive |
TempSyncMessageSender, Message[]
|
接收到临时同步消息 |
| OnStrangerSyncMessageReceive |
StrangerSyncMessageSender, Message[]
|
接收到陌生人同步消息 |
- 端通知的通知类型如 客户端下线,Bot被邀请加入群聊,客户端网络无法连接(内网程序)...等
- 均由事件推送,并不会打印日志,除非您在构造时设置 Client.EventDebug = true*
其事件定义在 ./Client/ClientEvent.cs 文件的 /*--Type of Event--*/ 行后
| 签名 | 参数 | 说明 |
|---|---|---|
| OnEventBotOnlineEvent | BotOnlineEvent |
Mirai后台证实QQ已上线 |
| OnEventBotOfflineEventActive | BotOfflineEventActive |
Mirai后台证实QQ主动离线 |
| OnEventBotOfflineEventForce | BotOfflineEventForce |
Mirai后台证实QQ被挤下线 |
| OnEventBotOfflineEventDropped | BotOfflineEventDropped |
Mirai后台证实QQ由于网络问题掉线 |
| OnEventBotReloginEvent | BotReloginEvent |
Mirai后台证实QQ重新连接完毕 |
| 签名 | 参数 | 说明 |
|---|---|---|
| OnEventBotGroupPermissionChangeEvent | BotGroupPermissionChangeEvent |
Bot在群里的权限被改变了 |
| OnEventBotMuteEvent | BotMuteEvent |
Bot被禁言 |
| OnEventBotUnmuteEvent | BotUnmuteEvent |
Bot被解除禁言 |
| OnEventBotJoinGroupEvent | BotJoinGroupEvent |
Bot加入新群 |
| OnEventBotLeaveEventActive | BotLeaveEventActive |
Bot主动退群 |
| OnEventBotLeaveEventKick | BotLeaveEventKick |
Bot被群踢出 |
| OnEventNudgeEvent | NudgeEvent |
Bot被戳一戳 |
| OnEventBotInvitedJoinGroupRequestEvent | BotInvitedJoinGroupRequestEvent |
Bot被邀请入群申请 |
| 签名 | 参数 | 说明 |
|---|---|---|
| OnEventNewFriendRequestEvent | NewFriendRequestEvent |
接收到新好友请求 |
| OnEventFriendInputStatusChangedEvent | FriendInputStatusChangedEvent |
好友的输入状态改变 |
| OnEventFriendNickChangedEvent | FriendNickChangedEvent |
好友的昵称改变 |
| OnEventFriendRecallEvent | FriendRecallEvent |
好友撤回信息 |
| 签名 | 参数 | 说明 |
|---|---|---|
| OnEventGroupNameChangeEvent | GroupNameChangeEvent |
群名改变信息 |
| OnEventGroupEntranceAnnouncementChangeEvent | GroupEntranceAnnouncementChangeEvent |
某个群的入群公告改变 |
| OnEventGroupMuteAllEvent | GroupMuteAllEvent |
群全员禁言 |
| OnEventGroupAllowAnonymousChatEvent | GroupAllowAnonymousChatEvent |
某个群更改了群匿名聊天状态 |
| OnEventGroupAllowConfessTalkEvent | GroupAllowConfessTalkEvent |
某个群更改了坦白说的状态 |
| OnEventGroupAllowMemberInviteEvent | GroupAllowMemberInviteEvent |
某个群员邀请好友加群 |
| 签名 | 参数 | 说明 |
|---|---|---|
| OnEventGroupRecallEvent | GroupRecallEvent | 某群员撤回信息 |
| OnEventMemberJoinEvent | MemberJoinEvent |
某群有新人入群了 |
| OnEventMemberLeaveEventKick | MemberLeaveEventKick |
某群把某人踢出了(不是Bot) |
| OnEventMemberLeaveEventQuit | MemberLeaveEventQuit |
某群有成员主动退群了 |
| OnEventCardChangeEvent | MemberCardChangeEvent |
某群有人的群名片改动了 |
| OnEventSpecialTitleChangeEvent | MemberSpecialTitleChangeEvent |
某群群主改动了某人头衔 |
| OnEventPermissionChangeEvent | MemberPermissionChangeEvent |
某群有某个成员权限被改变了(不是Bot) |
| OnEventMemberMuteEvent | MemberMuteEvent |
某群的某个群成员被禁言 |
| OnEventMemberUnmuteEvent | MemberUnmuteEvent |
某群的某个群成员被取消禁言 |
| OnEventMemberHonorChangeEvent | MemberHonorChangeEvent |
某群的某个成员的群称号改变 |
| OnEventMemberJoinRequestEvent | MemberJoinRequestEvent |
接收到用户入群申请 |
在仅通知类型内,有些需要我们做出决断,例如是否加群等
下例便展示了 只要符合某条件的(本例中为邀请信息为123456) 则加入,其他拒绝
//下列参数 c 为要发送的端,而且必须是接收这个信息的端
//老写法[通用写法] (需要 using MeowMiraiLib.Msg;)
c.OnEventBotInvitedJoinGroupRequestEvent += (s) =>
{
if(s.message == "123456") //某个条件
{
new Resp_botInvitedJoinGroupRequestEvent(s.eventId, s.fromId, s.groupId, 0, "").Send(c); //0为同意
}
else
{
new Resp_botInvitedJoinGroupRequestEvent(s.eventId, s.fromId, s.groupId, 1, "").Send(c); //1为同意
}
};
//扩展写法 (需要 using MeowMiraiLib.Event;)
c.OnEventBotInvitedJoinGroupRequestEvent += (s) =>
{
if(s.message == "123456") //某个条件
{
s.Grant(c);
}
else
{
s.Deny(c);
}
};
//你也可以接受回值查看是否成功
//.....
var (t,j) = s.Grant(c);
Console.WriteLine(j);
//.....- 目前用户定义类型事件已经合并到返回值中处理, 您也可以尝试重写暴露出来的Websocket端(
client.ws.DataReceived事件) - 具体可以获取好友列表, 群列表等
如下:
var bp = new BotProfile().Send(c); //获取Bot资料
var fp = new FriendProfile(qqnumber).Send(c);//获取好友资料
var mp = new MemberProfile(qqgroup,qqnumber).Send(c);//获取群员资料
var up = new UserProfile(qqnumber).Send(c);//获取用户资料
Console.WriteLine(bp.ToString());
Console.WriteLine(fp.ToString());
Console.WriteLine(mp.ToString());
Console.WriteLine(up.ToString());- 目前本类型可以设置群公告 (8.0.0 更新)
//获取群公告&&推送群公告
var k = new Anno_list(qqgroup).Send(c);
k[1].Delete(c);//删除群公告1 (快速写法)
var k1 = new Anno_publish(qqgroup, "Bot 公告推送").Send(c);
var k2 = new Anno_publish(qqgroup, "Bot 带图公告推送实验",imageUrl: "https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png").Send(c);- 您可以扩展还没有更新但生效的消息 / 事件类型
- 所有消息都继承自 Message.cs 的 Message 类,
- 所有事件都继承自 Event.cs 的 MiraiEvent 类,
- 继承时检查是否符合其他已经继承类的特性(字段/属性)
public class NewMessageType : Message //..XXXMsg
{
//...字段(属性)
//...方法
}
public class NewEventType : MiraiEvent //..XXXEvent
{
//...字段(属性)
//...方法
}