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
{
//...字段(属性)
//...方法
}