public async Task <bool> GroupApply(MiraiHttpSession session, IGroupApplyEventArgs e)
        {
            await session.HandleGroupApplyAsync(e, GroupApplyActions.Deny, "略略略");

            // 把整个事件信息直接作为第一个参数即可, 然后根据自己需要选择一个 GroupApplyActions 枚举去处理请求
            // 你也可以暂存 IGroupApplyEventArgs e, 之后再调用session处理
            return(false);
        }
Пример #2
0
        public async Task <bool> GroupApply(MiraiHttpSession session, IGroupApplyEventArgs e)
        {
            await session.HandleGroupApplyAsync(e, GroupApplyActions.Allow, "欢迎");

            return(false);
        }
        public Task <bool> GroupApply(MiraiHttpSession session, IGroupApplyEventArgs e)
        {
            if (reqs == null)
            {
                reqs = new Dictionary <long, GroupEntranceInfo>();
            }
            if (repeattask == null)
            {
                dmTokenSource = new CancellationTokenSource();
                repeattask    = Repeat.Interval(TimeSpan.FromSeconds(15), () =>
                {
                    TimeSpan now = DateTime.Now.TimeOfDay;
                    if (now > startt && now < end && !hang_req && !hang_all)
                    {
                        checkAndProcessReqQueue();
                    }
                }, dmTokenSource.Token);
            }
            //string answer = e..Replace("鹿野", "");
            if (DataBase.me.isUserOperator(e.user.qq))
            {
                MainHolder.api.doGroupEnterReq(e.json, true);
                MainHolder.broadcaster.broadcastToAdminGroup(e.user.name + "#" + e.user.qq + "申请加入" + DataBase.me.getGroupName(e.throughgroup.id) + "\n管理组成员,无条件通过");
            }
            else
            if (DataBase.me.isCrewGroup(e.throughgroup.id))
            {                                                //是舰长群
                if (DataBase.me.isUserBoundedUID(e.user.qq)) //舰长绑定
                {
                    MainHolder.api.doGroupEnterReq(e.json, true);
                    MainHolder.broadcaster.broadcastToAdminGroup(e.user.name + "#" + e.user.qq + "\n!正在加入舰长群\n是舰长,同意");
                }
                else
                {
                    MainHolder.api.doGroupEnterReq(e.json, false, "该QQ无可查询的舰长信息,请联系管理员。");
                    MainHolder.broadcaster.broadcastToAdminGroup(e.user.name + "#" + e.user.qq + "\n!正在加入舰长群\n没有可查询的舰长记录,拒绝");
                }
            }
            else
            if (DataBase.me.isUserTrusted(e.user.qq) >= 0)//有信任
            {
                int  t  = DataBase.me.isUserTrusted(e.user.qq);
                long op = DataBase.me.getUserTrustOperator(e.user.qq);
                MainHolder.api.doGroupEnterReq(e.json, true);
                MainHolder.broadcaster.broadcastToAdminGroup(e.user.name + "#" + e.user.qq + "申请加入" + DataBase.me.getGroupName(e.throughgroup.id) + "\n[ATUSER(" + op + ")]设置了信任,同意");
                if (t == 1)
                {
                    DataBase.me.removeUserTrustlist(e.user.qq);
                    MainHolder.broadcaster.broadcastToAdminGroup(e.user.name + "#" + e.user.qq + " 一次性信任失效");
                }
            }
            else
            if (hang_all)
            {
                GroupEntranceInfo geinfo = new GroupEntranceInfo()
                {
                    json  = e.json,
                    qq    = e.FromQQ,
                    group = e.throughgroup
                };
                reqs.Add(e.user.qq, geinfo);
                MainHolder.broadcaster.broadcastToAdminGroup(e.user.name + "#" + e.user.qq + "申请加入" + DataBase.me.getGroupName(e.throughgroup.id) + "\n请求挂起(UC)");
            }
            else
            if ((answer.IndexOf("鹿") >= 0) || !((answer.IndexOf("奶狗") >= 0) || (answer.IndexOf("柴") >= 0) || (answer.IndexOf("狗") >= 0)))
            {
                MainHolder.api.doGroupEnterReq(e.json, false, "您的答案不太对");
                MainHolder.broadcaster.broadcastToAdminGroup(e.user.name + "#" + e.user.qq + "申请加入" + DataBase.me.getGroupName(e.throughgroup.id) + "\n" + answer + "\n答案不对,拒绝");
            }
            else
            if (DataBase.me.whichGroupsAreTheUserIn(e.user.qq).Count > 0 && !DataBase.me.isMEIgnoreGroup(e.throughgroup.id))
            {
                List <long> li = DataBase.me.whichGroupsAreTheUserIn(e.user.qq);
                string      a  = "";
                foreach (long g in li)
                {
                    a += DataBase.me.getGroupName(g) + "\n";
                }
                MainHolder.api.doGroupEnterReq(e.json, false, "您已加入多个粉丝群。如有疑问请联系管理");
                MainHolder.broadcaster.broadcastToAdminGroup(e.user.name + "#" + e.user.qq + "申请加入" + DataBase.me.getGroupName(e.throughgroup.id) + "\n重复加群:\n" + a + "拒绝");
            }
            else
            if (DataBase.me.isUserBlacklisted(e.user.qq))
            {
                MainHolder.api.doGroupEnterReq(e.json, false, "您被指定禁止加入本群");
                MainHolder.broadcaster.broadcastToAdminGroup(e.user.name + "#" + e.user.qq + "申请加入" + DataBase.me.getGroupName(e.throughgroup.id) + "\n在黑名单,拒绝");
            }
            else
            {
                long qqlevel = ThirdPartAPIs.getQQLevel(e.user.qq, 1);
                if (qqlevel < 0)
                {
                    GroupEntranceInfo geinfo = new GroupEntranceInfo()
                    {
                        json  = e.json,
                        qq    = e.user,
                        group = e.throughgroup
                    };
                    reqs.Add(e.user.qq, geinfo);
                    MainHolder.broadcaster.broadcastToAdminGroup(e.user.name + "#" + e.user.qq + "申请加入" + DataBase.me.getGroupName(e.throughgroup.id) + "\n查等级失败 稍后重试");
                }
                else
                if (qqlevel < 16)
                {
                    MainHolder.api.doGroupEnterReq(e.json, false, "您的等级低于16(☀),根据规定不能加入。");
                    MainHolder.broadcaster.broadcastToAdminGroup(e.user.name + "#" + e.user.qq + "申请加入" + DataBase.me.getGroupName(e.throughgroup.id) + "\n等级过低(" + qqlevel + "),拒绝");
                }
                else
                if (!(hang_req))
                {
                    MainHolder.api.doGroupEnterReq(e.json, true);
                    MainHolder.broadcaster.broadcastToAdminGroup(e.user.name + "#" + e.user.qq + "申请加入" + DataBase.me.getGroupName(e.throughgroup.id) + "\n" +
                                                                 "√ 答案正确\n" +
                                                                 "√ 没有重复加群\n" +
                                                                 "√ 等级足够:" + qqlevel + "\n" +
                                                                 "√ 没有黑名单限制项目\n" +
                                                                 "通过");
                }
                else
                {
                    GroupEntranceInfo geinfo = new GroupEntranceInfo()
                    {
                        json  = e.json,
                        qq    = e.user,
                        group = e.throughgroup
                    };
                    reqs.Add(e.user.qq, geinfo);
                    MainHolder.broadcaster.broadcastToAdminGroup(e.user.name + "#" + e.user.qq + "\n请求挂起(C)");
                }
            }

            try
            {
            }
            catch (Exception err)
            {
                MainHolder.broadcaster.broadcastToAdminGroup("[Exception]\n这条消息可能意味着机器人发生了错误。它仍在继续运行,但可能不是很稳定。下面的信息用来帮助鸡蛋定位错误,管理不必在意。\n[申请入群处理]" + err.Message + "\n\n堆栈跟踪:\n" + err.StackTrace);
            }
        }
Пример #4
0
        public async Task <bool> GroupApply(MiraiHttpSession session, IGroupApplyEventArgs e)
        {
            try
            {
                Logger.Instance.AddLog(LogType.Info, "已收到来自" + e.FromQQ + "的申请, 申请资料为" + e.Message);
                if (e.Message.Contains("#"))
                {
                    var cocid = e.Message.Split('\n').Last().Remove(0, 3).Replace(" ", "");
                    if (await AdminAPI.NewMember(cocid, new Data.ApplyEventArgs {
                        EventArgs = e, Session = session
                    }))
                    {
                        await session.HandleGroupApplyAsync(e, GroupApplyActions.Allow);

                        await AdminAPI.ChangeNewMemberName(cocid, new Data.ApplyEventArgs()
                        {
                            EventArgs = e, Session = session
                        });

                        return(true);
                    }
                    else
                    {
                        await session.HandleGroupApplyAsync(e, GroupApplyActions.Deny, "科技不足");

                        return(true);
                    }
                }
                else
                {
                    if (Directory.GetFiles("com.coc.groupadmin\\Blacklist").Any(x => x.EndsWith(e.FromQQ.ToString())))
                    {
                        //在黑名单内,直接拒绝
                        await session.HandleGroupApplyAsync(e, GroupApplyActions.Deny, "已被拉黑");

                        return(true);
                    }
                    await session.HandleGroupApplyAsync(e, GroupApplyActions.Allow);

                    await session.SendGroupMessageAsync(e.FromGroup, new AtMessage(e.FromQQ), new PlainMessage("新人请发玩家标签审核!"));

                    return(true);
                }
            }
            catch (Exception ex)
            {
                if (ex is NullReferenceException)
                {
                    if (Directory.GetFiles("com.coc.groupadmin\\Blacklist").Any(x => x.EndsWith(e.FromQQ.ToString())))
                    {
                        //在黑名单内,直接拒绝
                        await session.HandleGroupApplyAsync(e, GroupApplyActions.Deny, "已被拉黑");

                        return(true);
                    }
                    await session.HandleGroupApplyAsync(e, GroupApplyActions.Allow);

                    await session.SendGroupMessageAsync(e.FromGroup, new AtMessage(e.FromQQ), new PlainMessage("新人请发玩家标签审核!审核时玩家标签无效!"));

                    return(true);
                }
                else
                {
                    await session.SendGroupMessageAsync(e.FromGroup, new AtMessage(e.FromQQ), new PlainMessage(ex.Message));

                    return(true);
                }
            }
        }