Exemplo n.º 1
0
        public static bool SendKeyToCrewMember(int uid, int length, int crewlevel, int timestamp, string clevel, bool isnew)
        {
            string             token   = CrewKeyProcessor.getToken(uid, length, crewlevel, timestamp);
            PrivMessageSession session = PrivMessageSession.openSessionWith(uid, MainHolder.biliapi);
            bool succeed = true;

            if (isnew)
            {
                if (!DataBase.me.isUserBoundedQQ(uid))
                {
                    if (!MainHolder.useBiliRecFuncs)
                    {
                        MainHolder.broadcaster.BroadcastToAdminGroup("操作未能执行:约束条件[MainHolder.useBiliRecFuncs=False]不允许以下操作:\n发送B站私信");
                        return(false);
                    }
                    //succeed = succeed && session.sendMessage("欢迎新" + clevel + "上船!成为船员您可以加入舰长群,并有机会获得小礼品。请妥善保管下面的凭证,在系统出错时它将能证明您的船员身份。");
                    //succeed = succeed && session.sendMessage(token);
                    succeed = succeed && session.sendMessage("能告诉我您的QQ号吗?我将为您绑定QQ号并协助您加入舰长群。【请回复纯数字,该系统无人值守,私信由软件接收】");
                    DataBase.me.addBiliPending(uid);
                    MainHolder.broadcaster.BroadcastToAdminGroup("已通过B站私信询问QQ    新·" + clevel);
                }
            }
            else
            {
                if (!DataBase.me.isUserBoundedQQ(uid))
                {
                    if (!MainHolder.useBiliRecFuncs)
                    {
                        MainHolder.broadcaster.BroadcastToAdminGroup("操作未能执行:约束条件[MainHolder.useBiliRecFuncs=False]不允许以下操作:\n发送B站私信");
                        return(false);
                    }
                    succeed = succeed && session.sendMessage("能告诉我您的QQ号吗?我将为您绑定QQ号【请回复纯数字,该系统无人值守,私信由软件接收】");
                    DataBase.me.addBiliPending(uid);
                    MainHolder.broadcaster.BroadcastToAdminGroup("已通过B站私信询问QQ     续航·" + clevel);
                }
            }
            Commands.SendTicket(uid, crewlevel);
            return(succeed);
        }
        public async Task HandleMessageAsync(IMiraiHttpSession client, IGroupMemberJoinedEventArgs e)
        {
            if (!DataBase.me.IsGroupRelated(e.Member.Group.Id))
            {
                return;
            }
            string usname  = e.Member.Name;
            long   qq      = e.Member.Id;
            long   groupId = e.Member.Group.Id;
            string gname   = DataBase.me.getGroupName(groupId);

            gname =
                gname == "UNDEFINED_IN_DATABASE"
                ? e.Member.Group.Name : gname;
            try
            {
                if (DataBase.me.isUserBlacklisted(qq))
                {
                    MainHolder.broadcaster.BroadcastToAdminGroup("入群的用户 " + usname + "(" + qq + ") 存在于黑名单中,请三思!");
                }
                if (DataBase.me.whichGroupsAreTheUserIn(qq).Count > 1)
                {
                    List <long> groups_in = DataBase.me.whichGroupsAreTheUserIn(qq);
                    if (groups_in.Count > 1)
                    {
                        string gps = "";
                        foreach (long group in groups_in)
                        {
                            gps += DataBase.me.getGroupName(group) + "(" + group + ")\n";
                        }
                        MainHolder.broadcaster.BroadcastToAdminGroup(usname + "(" + qq + ") 加入群  " +
                                                                     gname + "(" + groupId + ") \n该用户同时加入以下群聊:\n" + gps);
                    }
                }
                if (DataBase.me.isCrewGroup(e.Member.Group.Id))
                {
                    long uid = DataBase.me.getUserBoundedUID(qq);

                    if (uid <= 0)
                    {
                        MainHolder.broadcaster.BroadcastToAdminGroup(usname + "(" + qq + ")加入舰长群  " +
                                                                     gname + "(" + groupId + ") \n[未能验证舰长记录 该用户未绑定UID]");
                        MainHolder.broadcaster.SendToGroup(groupId, "欢迎加入舰长群!\n[未绑定B站账号]");
                        //e.BeingOperateQQ.SendPrivateMessage("欢迎来到舰长群,感谢您对鹿野的支持!\n当前QQ未和Bilibili绑定,可发送#uid [uid]来绑定B站账号。例如:\n#uid 23696210\n不会操作也可以联系鸡蛋🥚");
                    }
                    else
                    {
                        MainHolder.broadcaster.BroadcastToAdminGroup(usname + "(" + qq + ")<舰长> 加入群  " +
                                                                     gname + "(" + groupId + ") \nB站信息:https://space.bilibili.com/" + uid + "\n");
                        PrivMessageSession           psession = PrivMessageSession.openSessionWith((int)uid, MainHolder.biliapi);
                        BiliApi.BiliUser             bu       = BiliApi.BiliUser.getUser((int)uid, MainHolder.biliapi);
                        CrewChecker                  cr       = new CrewChecker();
                        Dictionary <int, CrewMember> crewlist = cr.getAllCrewMembers();
                        CrewMember thismember = crewlist[(int)uid];
                        string     dpword     = "";
                        switch (thismember.level)
                        {
                        case 1:
                            dpword = "总督";
                            break;

                        case 2:
                            dpword = "提督";
                            break;

                        case 3:
                            dpword = "舰长";
                            break;
                        }
                        MainHolder.broadcaster.SendToGroup(groupId, "欢迎" + dpword + "<" + bu.name + ">加入舰长群!");
                        IGroupMemberCardInfo iginfo = new GroupMemberCardInfo(dpword + " " + bu.name, null);
                        await MainHolder.session.ChangeGroupMemberInfoAsync(qq, groupId, iginfo);

                        MainHolder.broadcaster.SendToQQ(qq, "欢迎来到舰长群,感谢您对奶狗狗的支持!请认准鹿野QQ(1249695750),可通过舰长群私聊鹿野获取好友位哦\n您的QQ号已和Bilibili账号<" + bu.name + ">绑定,如有疑问请联系鸡蛋🥚(这套系统的开发者,QQ号1250542735)");
                        psession.sendMessage("您已经成功加入了舰长群。感谢您对大总攻(XNG)的支持!");
                    }
                }
                else
                {
                    MainHolder.broadcaster.BroadcastToAdminGroup(usname + "加入了" + gname + "\n已建立用户信息");
                }
                DataBase.me.addUser(qq, groupId, usname);
            }
            catch (Exception err)
            {
                MainHolder.broadcaster.BroadcastToAdminGroup("[Exception]\n这条消息可能意味着机器人发生了错误。它仍在继续运行,但可能不是很稳定。下面的信息用来帮助鸡蛋定位错误,管理不必在意。\n[已入群的处理]" + err.Message + "\n\n堆栈跟踪:\n" + err.StackTrace);
            }
            return;
        }
Exemplo n.º 3
0
 public static void BoundQQ(long qq, PrivMessageSession session, PrivMessage pm, bool force = false)
 {
     if (DataBase.me.isUserBlacklisted(qq))
     {
         session.sendMessage("[自动回复] 您不能使用该QQ号,因为它存在严重违规记录,已被禁止加群。\n如需帮助,请联系鸡蛋(QQ1250542735)");
         MainHolder.broadcaster.BroadcastToAdminGroup(pm.talker.name + " 尝试绑定黑名单中的账号:" + qq);
     }
     else
     {
         int qqlevel = ThirdPartAPIs.getQQLevel(qq, 2);
         if (qqlevel < 0)
         {
             session.sendMessage("[自动回复] 该账号不存在或查询失败,请稍后重试。\n如需帮助,请联系鸡蛋(QQ1250542735)");
             MainHolder.broadcaster.BroadcastToAdminGroup(pm.talker.name + " QQ号无效或查询失败:" + qq);
             return;
         }
         else
         if (qqlevel < 16)
         {
             session.sendMessage("[自动回复] 您不能使用该QQ号,因为它没有达到等级要求(" + qqlevel + "<16)\n如需帮助,请联系鸡蛋(QQ1250542735)");
             MainHolder.broadcaster.BroadcastToAdminGroup(pm.talker.name + " 尝试绑定等级过低的账号(" + qqlevel + "<16):" + qq);
             return;
         }
     }
     if (DataBase.me.isBiliPending(pm.talker.uid))//等待绑定QQ
     {
         if (DataBase.me.boundBiliWithQQ(pm.talker.uid, qq))
         {
             MainHolder.broadcaster.BroadcastToAdminGroup(pm.talker.name + " 绑定了TA的QQ号:" + qq);
             session.sendMessage("[自动回复] 好的,请扫描下方二维码入群。(转发无效)\n" +
                                 "如果您的QQ号输入错误,可随时重新发送新的QQ号,我会为您换绑。\n" +
                                 "如需帮助,请联系鸡蛋(QQ1250542735)");
             session.SendImage(QunQRCode);
         }
         else
         {
             session.sendMessage("[自动回复] 系统故障,请稍后重试或联系管理员(鸡蛋QQ1250542735)");
             MainHolder.broadcaster.BroadcastToAdminGroup(pm.talker.name + "绑定TA的QQ号:" + qq + "\n失败:似乎无法操作数据库。");
         }
     }
     else
     {
         var cgroups   = DataBase.me.getCrewGroup();
         var oldqq     = DataBase.me.getUserBoundedQQ(pm.talker.uid);
         var usergroup = DataBase.me.whichGroupsAreTheUserIn(oldqq, false);
         if ((!force) && Collides(cgroups, usergroup, out List <long> _))
         {
             MainHolder.broadcaster.BroadcastToAdminGroup(pm.talker.name + "重新绑定QQ(" + oldqq + "=>" + qq + ")\n拒绝,因为原QQ已经在舰长群中");
             session.sendMessage("[自动回复] 您不能换绑QQ,因为您原先绑定的QQ(" + oldqq + ")已经在舰长群中了。如果需要换绑QQ,请先将原QQ退出舰长群。\n" +
                                 "如果强行换绑,系统将会踢出原先的QQ。需强行换绑请发送:\n" +
                                 "F" + qq);
         }
         else
         {
             if (DataBase.me.boundBiliWithQQ(pm.talker.uid, qq))
             {
                 MainHolder.broadcaster.BroadcastToAdminGroup(pm.talker.name + "重新绑定QQ(" + oldqq + "=>" + qq + ")\n已更新数据库");
                 session.sendMessage("[自动回复] 您已成功换绑QQ。原先的QQ号(" + oldqq + ")将被解绑,请使用新绑定的QQ号加入舰长群。");
             }
             else
             {
                 session.sendMessage("[自动回复] 系统故障,请稍后重试或联系管理员(鸡蛋QQ1250542735)");
                 MainHolder.broadcaster.BroadcastToAdminGroup(pm.talker.name + "重新绑定QQ(" + oldqq + "=>" + qq + ")\n" +
                                                              "该操作由于一个系统错误未能完成。");
             }
         }
     }
 }
        public void GroupMemberIncrease(object sender, GroupMemberIncreaseEventArgs e)
        {
            try
            {
                //e.BeingOperateQQ.SendPrivateMessage("欢迎入群!能询问您一下您的B站UID吗?这可以帮助我们为您提供更多自动化服务\n回复会由系统自动统计,请回复您的数字UID,按照下面的格式\n例如:");
                //e.BeingOperateQQ.SendPrivateMessage("UID:1234567");
                if (DataBase.me.isUserBlacklisted(e.user.qq))
                {
                    MainHolder.broadcaster.broadcastToAdminGroup("入群的用户 " + e.user.name + "(" + e.user.qq + ") 存在于黑名单中,请三思!");
                }
                if (DataBase.me.whichGroupsAreTheUserIn(e.user.qq).Count > 1)
                {
                    List <long> groups_in = DataBase.me.whichGroupsAreTheUserIn(e.user.qq);
                    if (groups_in.Count > 1)
                    {
                        string gps = "";
                        foreach (long group in groups_in)
                        {
                            gps += DataBase.me.getGroupName(group) + "(" + group + ")\n";
                        }
                        MainHolder.broadcaster.broadcastToAdminGroup(e.user.name + "(" + e.user.qq + ") 加入群  " +
                                                                     DataBase.me.getGroupName(e.throughgroup.id) + "(" + e.throughgroup.id + ") \n该用户同时加入以下群聊:\n" + gps);
                    }
                }
                if (DataBase.me.isCrewGroup(e.throughgroup.id))
                {
                    long   uid    = DataBase.me.getUserBoundedUID(e.user.qq);
                    string usname = e.user.name;
                    if (uid <= 0)
                    {
                        MainHolder.broadcaster.broadcastToAdminGroup(usname + "(" + e.user.qq + ")加入舰长群  " +
                                                                     DataBase.me.getGroupName(e.throughgroup.id) + "(" + e.throughgroup.id + ") \n[未能验证舰长记录 该用户未绑定UID]");
                        MainHolder.broadcaster.sendToGroup(e.throughgroup.id, "欢迎加入舰长群!\n[未能获取对应B站信息]");
                        //e.BeingOperateQQ.SendPrivateMessage("欢迎来到舰长群,感谢您对鹿野的支持!\n当前QQ未和Bilibili绑定,可发送#uid [uid]来绑定B站账号。例如:\n#uid 23696210\n不会操作也可以联系鸡蛋🥚");
                    }
                    else
                    {
                        MainHolder.broadcaster.broadcastToAdminGroup(usname + "(" + e.user.qq + ")<舰长> 加入群  " +
                                                                     DataBase.me.getGroupName(e.throughgroup.id) + "(" + e.throughgroup.id + ") \nB站信息:https://space.bilibili.com/" + uid + "\n");
                        PrivMessageSession session = PrivMessageSession.openSessionWith((int)uid);
                        BiliAPI.BiliUser   bu      = BiliAPI.BiliUser.getUser((int)uid);
                        CrewChecker        cr      = new CrewChecker();
                        cr.getAllCrewMembers();
                        Dictionary <int, CrewMember> crewlist = cr.getCurrentCrewMembers();
                        CrewMember thismember = crewlist[(int)uid];
                        string     dpword     = "";
                        switch (thismember.level)
                        {
                        case 1:
                            dpword = "总督";
                            break;

                        case 2:
                            dpword = "提督";
                            break;

                        case 3:
                            dpword = "舰长";
                            break;
                        }
                        MainHolder.broadcaster.sendToGroup(e.throughgroup.id, "欢迎" + dpword + "<" + bu.name + ">加入舰长群!");
                        MainHolder.api.changeMemberNameCard(e.throughgroup.id, e.user.qq, dpword + " " + bu.name);
                        MainHolder.broadcaster.sendToQQ(e.user.qq, "欢迎来到舰长群,感谢您对鹿野的支持!\n您的QQ号已和Bilibili账号<" + bu.name + ">绑定,如有疑问请联系鸡蛋🥚");
                        session.sendMessage("您已经成功加入了舰长群。感谢您对大总攻(XNG)的支持!");
                    }
                }
                else
                {
                    MainHolder.broadcaster.broadcastToAdminGroup(e.user.name + "加入了" + e.throughgroup.name + "\n已建立用户信息");
                    MainHolder.broadcaster.sendToGroup(e.throughgroup.id,
                                                       "[ATUSER(" + e.user.qq + ")]\n" +
                                                       "欢迎新人!为了群聊长治久安,\n" +
                                                       "请注意避免下列行为:\n" +
                                                       "·谈论鹿野三次信息\n" +
                                                       "·在群内分享或谈论不宜谈论的内\n" +
                                                       "容(政黄赌暴,含性暗示、普遍审美\n" +
                                                       "难以接受的内容)\n" +
                                                       "·任何形式的自我宣传或为他人宣传\n" +
                                                       "(包括但不限于视频转发)\n" +
                                                       ">>请查看公告 阅读完整群规<<\n"
                                                       );
                }
                DataBase.me.addUser(e.user.qq, e.throughgroup.id, e.user.name);
            }
            catch (Exception err)
            {
                MainHolder.broadcaster.broadcastToAdminGroup("[Exception]\n这条消息可能意味着机器人发生了错误。它仍在继续运行,但可能不是很稳定。下面的信息用来帮助鸡蛋定位错误,管理不必在意。\n[已入群的处理]" + err.Message + "\n\n堆栈跟踪:\n" + err.StackTrace);
            }
        }