美文网首页
QQ事件接口: IRobotPlugin方法详细说明--已丢弃

QQ事件接口: IRobotPlugin方法详细说明--已丢弃

作者: 玄鸡快跑 | 来源:发表于2016-07-27 15:13 被阅读0次

    QQ事件

    事件通知支持基本的qq事件,包括聊天消息和系统消两了部分, 涵盖了好友消息、群消息、讨论组消息、各种请求等。view in github

    如果您的插件需要使用QQ事件的功能,需要实现 IRobotPlugin 接口。具体操作如下:

    1、需要在你的项目中的 Manifest.xml 文件中加入 'LiangdunSdk.QQEvent' 的扩展点 。以裂变插件为例,如下:

    <Extension Point="LiangdunSdk.QQEvent">
        <QQEvent Type="Fission.FissionPlugin" />
    </Extension>
    

    其中LiangdunSdk.QQEvent为事件扩展点,Fission为你实现IRobotPlugin接口类的命名空间,FissionPlugin为你实现IRobotPlugin的类。

    2、你需要实现IRobotPlugin接口的所有方法。

    IRobotPlugin 接口

    上面提到,如果要使用事件通知功能,需要实现IRobotPlugin接口,下面对IRobotPlugin进行详细说明。

    当有事件到达时,会调用所有扩展了LiangdunSdk.QQEvent点的插件的IRobotPlugin实现类的相应函数,需要注意的是这个调用是轮询的, 即是内部使用了 Akka 这样的并发框架进行处理, 但也无法控制对应函数处理时间过长(阻塞)的问题, 所以在实现你的 IRobotPlugin 接口时,如果耗时过长(如访问服务器)请使用代理或者新的线程来处理!

    IRobotPlugin 的全局名称: LiangdunSdk.QQCore.Interfaces.IRobotPlugin

    聊天消息

    QQFriendMsgArrive 好友消息

    函数原型:

    void QQFriendMsgArrive(uint uin, uint friendUin, string msg);

    当qq有好友消息到达的时候会调用这个函数。参数解析如下:

    /// <summary>
    /// 当好友消息到达时调用
    /// </summary>
    /// <param name="uin"> 机器人qq号 </param>
    /// <param name="friendUin"> 好友qq号 </param>
    /// <param name="msg"> 消息内容 </param>
    
    void QQFriendMsgArrive(uint uin, uint friendUin, string msg);
    
    

    注: 当前不支持接收图片、表情!

    StrangerMsgArrive 陌生人消息

    函数原型:

    void StrangerMsgArrive(uint uin, uint strangerUin, string msg);

    当有陌生人聊天消息到达时会调用这个函数。参数解析如下:

    /// <summary>
    /// 陌生人消息到达时调用
    /// </summary>
    /// <param name="uin"> 机器人qq号 </param>
    /// <param name="strangerUin"> 陌生人qq号 </param>
    /// <param name="msg"> 消息内容 </param>
    
    void StrangerMsgArrive(uint uin, uint strangerUin, string msg);
    
    

    注:

    当前不支持接收图片、表情!

    这里的陌生人是指群成员、讨论组成员且非好友关系的qq!

    TempSessionMsgArrive 临时群消息

    函数原型:

    void TempSessionMsgArrive(uint uin, uint clusterCode, uint senderUin, string msg);

    
    /// <summary>
    /// 来自群或者讨论组的临时会话消息时调用
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    /// <param name="senderUin">发送者qq号</param>
    /// <param name="msg">消息内容</param>
    
    void TempSessionMsgArrive(uint uin, uint clusterCode, uint senderUin, string msg);
    

    注:

    当前不支持接收图片、表情!

    当前测试时还没有收到过这种事件

    ClusterMsgArrive 普通群消息

    函数原型:

    void ClusterMsgArrive(uint uin, uint clusterCode, uint senderUin, string msg, Object images, uint senderId);

    当有普通群消息到达时调用,参数解析如下:

    /// <summary>
    /// 群消息到达时调用
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode"> 群号 </param>
    /// <param name="senderUin"> 发送者qq号 </param>
    /// <param name="msg">消息</param>
    /// <param name="images"> 图片列表 </param>
    /// <param name="senderId"> 发送者ID, 不是qq号,你可以根据id,利用 QQCoreServiceImpl.Convert2Images(uint uin, Object images, uint senderId) 获取需要的图片对象 </param>
    void ClusterMsgArrive(uint uin, uint clusterCode, uint senderUin, string msg, Object images, uint senderId);
    

    注:

    对于 images 和 senderId 参数, 你可以利用他们获取图片列表,只需要调用 QQCoreServiceImpl.Convert2Images(uint uin, Object images, uint senderId)。需要注意的是,会请求qq服务器下载图片!

    DiscussMsgArrive 讨论组消息

    函数原型:

    void DiscussMsgArrive(uint uin, uint discussId, uint senderUin, string msg);

    当有讨论组消息到达时调用,参数解析如下:

    /// <summary>
    /// 讨论组消息到达时调用
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="discussId">讨论组号</param>
    /// <param name="senderUin">发送者qq号</param>
    /// <param name="msg">消息内容</param>
    void DiscussMsgArrive(uint uin, uint discussId, uint senderUin, string msg);
    

    注:

    当前不支持讨论组图片获取!

    系统消息

    RobotOffLine QQ下线

    函数原型:

    void RobotOffLine(uint uin, DateTime time);

    当机器人下线的时候回产生这个事件,这个事件你可以忽略,参数解析如下:

    /// <summary>
    /// 机器人下线时调用
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="time">下线时间</param>
    void RobotOffLine(uint uin, DateTime time);
    
    RobotAfterLogin 在执行登录操作后返回后调用

    函数原型:

    void RobotAfterLogin(uint uin, RobotLoginStatus status);

    在执行登录操作后返回后产生这个事件,但并不代表此次登录操作后,被操作的qq已经在线了!

    /// <summary>
    /// 机器人进行登录后调用
    /// </summary>
    /// <param name="uin"> 登录的机器人 </param>
    /// <param name="status"> qq的状态 </param>
    
    RobotCrowedOffLine qq被挤下线时调用

    函数原型:

    void RobotCrowedOffLine(uint uin);

    登录的qq在别的客户端登录后产生这个事件,此时qq已经被挤下线了。

    /// <summary>
    /// 机器人被挤下线
    /// </summary>
    /// <param name="uin"> 被挤下线的qq </param>
    void RobotCrowedOffLine(uint uin);
    
    SomeOneRequestAddMe 请求加好友

    函数原型:

    void SomeOneRequestAddMe(uint uin, uint senderUin, string msg);

    当有其他人请求加机器人为好友的时候调用,参数解析:

    /// <summary>
    /// 某人请求加机器人为好友时调用
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="senderUin">请求者</param>
    /// <param name="msg">留言</param>
    void SomeOneRequestAddMe(uint uin, uint senderUin, string msg);
    
    SomeOneAgreedAddedMe 他人同意加机器人为好友

    函数原型:

    void SomeOneAgreedAddedMe(uint uin, uint senderUin);

    在机器人发出加友请求后,当他人同意加机器人为好友时调用,参数解析:

    /// <summary>
    /// 机器人发出邀请后,对方同意了加机器人为好友时调用
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="senderUin">同意者</param>
    void SomeOneAgreedAddedMe(uint uin, uint senderUin);
    
    SomeOneRejectAddedMe 他人拒绝加机器人为好友

    函数原型:

    void SomeOneRejectAddedMe(uint uin, uint senderUin, string msg);

    在机器人发出加友请求后,当他人拒绝加机器人为好友时调用,参数解析:

    /// <summary>
    /// 机器人发出邀请后,对方拒绝了加机器人为好友时调用
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="senderUin">拒绝者</param>
    /// <param name="msg">拒绝理由</param>
    void SomeOneRejectAddedMe(uint uin, uint senderUin, string msg);
    
    SomeOneRequestJoinCluster 某人请求加入机器人管理的群

    函数原型:

    void SomeOneRequestJoinCluster(uint uin, uint clusterCode, uint senderUin, byte[] token, string msg);

    当某人请求加入机器人管理的群的时候调用,参数解析:

    /// <summary>
    /// 有人请求加入机器人管理的群时调用
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    /// <param name="senderUin">请求者</param>
    /// <param name="token"> 验证 </param>
    /// <param name="msg">留言</param>
    void SomeOneRequestJoinCluster(uint uin, uint clusterCode, uint senderUin, byte[] token, string msg);
    

    注:

    在产生这个事件后,如果想允许或者拒绝请求时,可以这样:

    if (token == null) ret = QQCoreServiceImpl.AllowJoinCluster(uin, clusterCode, senderUin);
    else ret = QQCoreServiceImpl.AllowJoinCluster(uin, clusterCode, senderUin, token, true, "");
    
    SomeOneJoinClusterByOtherMem 某人被群成员邀请入群

    函数原型:

    void SomeOneJoinClusterByOtherMem(uint uin, uint clusterCode, uint senderUin, uint operateUin, byte[] token);

    当群成员邀请某人加入群,并且被邀请者同意时调用,参数解析:

    /// <summary>
    /// 其他成员邀请他人入群, 收到这个事件时,那个人已经同意加入群, 但还没有被管理员同意加入
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    /// <param name="senderUin">邀请者</param>
    /// <param name="operateUin">受邀请的人</param>
    void SomeOneJoinClusterByOtherMem(uint uin, uint clusterCode, uint senderUin, uint operateUin, byte[] token);
    
    SomeOneJoinClusterByOtherAdmin 其他管理员邀请某人入群

    函数原型:

    void SomeOneJoinClusterByOtherAdmin(uint uin, uint clusterCode, uint senderUin, uint operateUin);

    当其他管理员邀请某人加入群,被邀请人同意时调用(这个时候被邀请者已经成为群成员了),参数解析:

    /// <summary>
    /// 其他管理员邀请他人入群, 收到这个事件时,这个人已经入群了
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    /// <param name="senderUin">邀请他人的人</param>
    /// <param name="operateUin">受邀请的人</param>
    void SomeOneJoinClusterByOtherAdmin(uint uin, uint clusterCode, uint senderUin, uint operateUin);
    
    SomeOneAgreedJoinClusterByOtherAdmin 其他管理员同意某人入群

    函数原型:

    void SomeOneAgreedJoinClusterByOtherAdmin(uint uin, uint clusterCode, uint senderUin, uint operateUin);

    当其他管理员同意某人入群请求时调用,参数解析:

    /// <summary>
    /// 其他成员邀请某人加入某群时,其他管理员同意让其加入群
    /// 收到这条消息时,此人已经入群了
    /// </summary>
    /// <param name="uin"> 机器人qq </param>
    /// <param name="clusterCode"> 群号 </param>
    /// <param name="senderUin"> 同意的管理员 </param>
    /// <param name="operateUin"> 请求者 </param>
    void SomeOneAgreedJoinClusterByOtherAdmin(uint uin, uint clusterCode, uint senderUin, uint operateUin);
    
    SomeOneInviteMeJoinCluster 某人邀请机器人加某群

    函数原型:

    void SomeOneInviteMeJoinCluster(uint uin, uint clusterCode, uint senderUin);

    当其他人邀请机器人加入某群时调用,参数解析:

    /// <summary>
    /// 其他好友邀请机器人(我)加入某群
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    /// <param name="senderUin">邀请机器人的人</param>
    void SomeOneInviteMeJoinCluster(uint uin, uint clusterCode, uint senderUin);
    
    AddedMeIntoCluster 机器人被加入到某群

    函数原型:

    void AddedMeIntoCluster(uint uin, uint clusterCode);

    当机器人被加入到某个群时调用,此时机器人已经是群成员了,参加解析:

    /// <summary>
    /// 通知机器人已被加入到一个群时调用, 此时机器人已经是群的成员了
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    void AddedMeIntoCluster(uint uin, uint clusterCode);
    

    注:

    底层协议无法获取到是谁同意了机器人入群的

    SomeOneAgreedJoinCluster 被邀请者同意入群

    函数原型:

    void SomeOneAgreedJoinCluster(uint uin, uint clusterCode, uint senderUin);

    当机器人邀请某人入群,被邀请者同意入群时调用此函数。需要注意的是,如果机器人是普通群成员,即使被邀请者同意了入群,但还是需要群管理员同意才能成为群成员。

    如果机器人是管理员或者拥有者,收到这个消息时,被邀请者已经是群成员了。

    参数解析:

    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    /// <param name="senderUin">同意加入群的人, 被邀请者</param>
    void SomeOneAgreedJoinCluster(uint uin, uint clusterCode, uint senderUin);
    
    SomeOneRejectJoinCluster 机器人发出的入群邀请被拒绝

    函数原型:

    void SomeOneRejectJoinCluster(uint uin, uint clusterCode, uint senderUin, string msg);

    当机器人发出加群邀请后, 被邀请者拒绝了邀请后调用,参数解释:

    /// <summary>
    /// 机器人发出邀请后,对方拒绝加入群
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    /// <param name="senderUin">拒绝加入群的人, 被邀请者</param>
    void SomeOneRejectJoinCluster(uint uin, uint clusterCode, uint senderUin, string msg);
    
    DeleteMeFromCluster 机器人被踢

    函数原型:

    void DeleteMeFromCluster(uint uin, uint clusterCode, uint senderUin);

    当确认被管理员移除出某个群时调用,参数解析:

    /// <summary>
    /// 机器人被管理员移除出某个群时调用
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    /// <param name="senderUin">删机器人的管理员</param>
    void DeleteMeFromCluster(uint uin, uint clusterCode, uint senderUin);
    
    MemberDeleteByAdmin 群成员被管理员踢了

    函数原型:

    void MemberDeleteByAdmin(uint uin, uint clusterCode, uint senderUin, uint operateUin);

    当某个群成员被踢了时调用,参数解析:

    /// <summary>
    /// 某人被管理踢了时调用
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    /// <param name="senderUin">删人的管理员</param>
    /// <param name="operateUin">被删的成员</param>
    void MemberDeleteByAdmin(uint uin, uint clusterCode, uint senderUin, uint operateUin);
    

    注:

    需要注意的是, 能收到群成员被踢的消息事件的只有群管理员和群主。

    MemberQuitCluster 成员退群

    函数原型:

    void MemberQuitCluster(uint uin, uint clusterCode, uint operateUin);

    当某个群成员退群时调用,参数解析:

    /// <summary>
    /// 成员退群时调用
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    /// <param name="operateUin">退群的人</param>
    void MemberQuitCluster(uint uin, uint clusterCode, uint operateUin);
    
    DissolveCluster 某群被解散

    函数原型:

    void DissolveCluster(uint uin, uint clusterCode);

    当某个群被解散时调用,参数解析:

    /// <summary>
    /// 某群被解散时调用
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    void DissolveCluster(uint uin, uint clusterCode);
    
    SomeOneBeAdmin 成员成为管理员

    函数原型:

    void SomeOneBeAdmin(uint uin, uint clusterCode, uint operateUin);

    当某个成员成为管理员时调用,参数解析:

    /// <summary>
    /// 某成员成为管理员时调用
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    /// <param name="operateUin">成为管理员的成员</param>
    void SomeOneBeAdmin(uint uin, uint clusterCode, uint operateUin);
    

    注:

    需要注意的是,只有管理员级别以上的成员才可以收到这个消息

    RobotBeAdmin 机器人成为管理员

    函数原型:

    void RobotBeAdmin(uint uin, uint clusterCode);

    当机器人成为管理员时调用,参数解析:

    /// <summary>
    /// 机器人成为管理员时调用
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    void RobotBeAdmin(uint uin, uint clusterCode);
    
    MemberRevokedAdmin 成员被撤销管理员资格

    函数原型:

    void MemberRevokedAdmin(uint uin, uint clusterCode, uint operateUin);

    当某个成员被撤销管理员资格时调用, 参数解析:

    /// <summary>
    /// 某人被撤销管理员资格调用
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    /// <param name="operateUin">被撤销管理员资格的成员</param>
    void MemberRevokedAdmin(uint uin, uint clusterCode, uint operateUin);
    

    注:

    需要注意的是,只有管理员以上级别的成员才能收到这个消息

    RobotRevokedAdmin 机器人被撤销管理员资格

    函数原型:

    void RobotRevokedAdmin(uint uin, uint clusterCode);

    当机器人被撤销管理员资格时调用,参数解析:

    /// <summary>
    /// 机器人的管理员资格被撤销调用
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    void RobotRevokedAdmin(uint uin, uint clusterCode);
    
    SomeOneBanned 成员被禁言

    函数原型:

    void SomeOneBanned(uint uin, uint clusterCode, uint senderUin, uint operateUin);

    当某个成员被管理员禁言时调用, 参数解析:

    /// <summary>
    /// 某成员被禁言时调用
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    /// <param name="senderUin">进行设置操作的管理员</param>
    /// <param name="operateUin">被禁言的成员</param>
    void SomeOneBanned(uint uin, uint clusterCode, uint senderUin, uint operateUin);
    

    注:

    需要注意的是,所有群成员都会收到这个消息

    SomeOneDisBanned 成员被解禁

    函数原型:

    void SomeOneDisBanned(uint uin, uint clusterCode, uint senderUin, uint operateUin);

    当某个群成员被解禁时调用,参数解析:

    /// <summary>
    /// 某成员被解禁时调用
    /// 超时自动解禁时不支持
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    /// <param name="senderUin">管理员</param>
    /// <param name="operateUin">被禁言的成员</param>
    void SomeOneDisBanned(uint uin, uint clusterCode, uint senderUin, uint operateUin);
    

    注:

    所有成员都可以收到这个消息
    禁言时间已过,系统自动解禁时收不到这个消息,现在不支持

    ClusterBanned 群被禁言

    函数原型:

    void ClusterBanned(uint uin, uint clusterCode, uint senderUin);

    当某个群被禁言时调用, 参数解析:

    /// <summary>
    /// 群全体禁言
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    /// <param name="senderUin">进行设置操作的管理员</param>
    void ClusterBanned(uint uin, uint clusterCode, uint senderUin);
    

    注:

    所有群成员都会收到这个消息

    ClusterDisbanned 群被解禁

    函数原型:

    void ClusterDisbanned(uint uin, uint clusterCode, uint senderUin);

    当某个群被解禁时调用, 参数解析:

    /// <summary>
    /// 群解禁
    /// </summary>
    /// <param name="uin">机器人qq号</param>
    /// <param name="clusterCode">群号</param>
    void ClusterDisbanned(uint uin, uint clusterCode, uint senderUin);
    

    注:

    所有群成员都可以收到这个消息

    相关文章

      网友评论

          本文标题:QQ事件接口: IRobotPlugin方法详细说明--已丢弃

          本文链接:https://www.haomeiwen.com/subject/twmojttx.html