public async Task <bool> GroupApply(MiraiHttpSession session, IGroupApplyEventArgs e) { await session.HandleGroupApplyAsync(e, GroupApplyActions.Deny, "略略略"); // 把整个事件信息直接作为第一个参数即可, 然后根据自己需要选择一个 GroupApplyActions 枚举去处理请求 // 你也可以暂存 IGroupApplyEventArgs e, 之后再调用session处理 return(false); }
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); } }
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); } } }