public ModelWithSourceString <IEnumerable <GroupInfo> > GetGroupsWithModel() { var source = GetGroups(); var re = new ModelWithSourceString <IEnumerable <GroupInfo> > { SourceString = source, Model = _groupInfoSerializer.DeserializeGroupInfos(source), }; return(re); }
public ModelWithSourceString <IEnumerable <GroupMemberInfo> > GetGroupMemebersWithModel(string toGroup) { var source = GetGroupMemebers(toGroup); var re = new ModelWithSourceString <IEnumerable <GroupMemberInfo> > { SourceString = source, Model = _groupMemberInfoSerializer.DeserializeGroupMemberInfos(source), }; return(re); }
public override GetGroupMemebersWithModelApiMahuaCommandResult Handle( GetGroupMemebersWithModelApiMahuaCommand message) { // "_GroupMember_Callback({\"code\":0,\"data\":{\"alpha\":0,\"bbscount\":0,\"class\":10012,\"create_time\":1569138527,\"filecount\":0,\"finger_memo\":\"\",\"group_memo\":\"\",\"group_name\":\"PikachuRobot\",\"item\":[{\"iscreator\":1,\"ismanager\":0,\"nick\":\".\",\"uin\":1844867503},{\"iscreator\":0,\"ismanager\":0,\"nick\":\"小黑\",\"uin\":2758938447}],\"level\":0,\"nick\":\"小黑\",\"option\":2,\"total\":3},\"default\":0,\"message\":\"\",\"subcode\":0});" //string info = MpqApi.Api_GetGroupMemberB(CurrentQq, message.ToGroup); // "{\"ec\":0,\"errcode\":0,\"em\":\"\",\"adm_num\":0,\"adm_max\":10,\"vecsize\":1,\"0\":0,\"mems\":[{\"uin\":1844867503,\"role\":0,\"flag\":0,\"g\":-1,\"join_time\":1569138527,\"last_speak_time\":1569465871,\"lv\":{\"point\":0,\"level\":1},\"nick\":\".\",\"card\":\"\",\"qage\":7,\"tags\":\"-1\",\"rm\":0},{\"uin\":2758938447,\"role\":2,\"flag\":0,\"g\":-1,\"join_time\":1569139041,\"last_speak_time\":1569465854,\"lv\":{\"point\":0,\"level\":1},\"nick\":\"\\u5c0f\\u9ed1\",\"card\":\"\",\"qage\":0,\"tags\":\"-1\",\"rm\":0},{\"uin\":1036504373,\"role\":2,\"flag\":0,\"g\":0,\"join_time\":1569229350,\"last_speak_time\":1569233318,\"lv\":{\"point\":0,\"level\":1},\"nick\":\"\\uff02\\u7eed\\u5fc3\\u8a00\\u3001\",\"card\":\"\",\"qage\":9,\"tags\":\"-1\",\"rm\":0}]{\"ec\":0,\"errcode\":0,\"em\":\"\",\"adm_num\":0,\"adm_max\":10,\"vecsize\":1,\"0\":0,\"count\":3,\"svr_time\":1569465874,\"max_count\":200,\"search_count\":3}"; // bug 返回数据格式异常 且群主role值为0(普通) string groupMemberA = this.MpqApi.Api_GetGroupMemberA(this.CurrentQq, message.ToGroup); if (string.IsNullOrEmpty(groupMemberA)) { return new GetGroupMemebersWithModelApiMahuaCommandResult() { ModelWithSourceString = new ModelWithSourceString <IEnumerable <GroupMemberInfo> >() { SourceString = groupMemberA, Model = Enumerable.Empty <GroupMemberInfo>() } } } ; GroupMemberInfoListJson memberInfoListJson = MpqHelper.DeserGroupMemberJsonA(groupMemberA); ModelWithSourceString <IEnumerable <GroupMemberInfo> > withSourceString = new ModelWithSourceString <IEnumerable <GroupMemberInfo> >() { SourceString = groupMemberA, Model = ((IEnumerable <Mem>)memberInfoListJson.Mems).Select((x => new GroupMemberInfo() { Group = message.ToGroup, Age = 0, Area = string.Empty, Authority = this.GetGroupMemberAuthority(x.Role), CanModifyInGroupName = false, Gender = this.GetGender(x.G), HasBadRecord = false, InGroupName = x.Card, JoinTime = Clock.ConvertSecondsToDateTime((long)x.Join_time), LastSpeakingTime = Clock.ConvertSecondsToDateTime((long)x.Last_speak_time), Level = x.Lv.Level.ToString(), NickName = x.Nick, Qq = x.Uin.ToString(), SpecialTitle = string.Empty, TitleExpirationTime = TimeSpan.MinValue })).ToArray() }; return(new GetGroupMemebersWithModelApiMahuaCommandResult() { ModelWithSourceString = withSourceString }); }
/// <summary> /// 获取群成员,并缓存 /// </summary> /// <param name="api"></param> /// <param name="groupId"></param> /// <returns></returns> public static List <GroupMemberInfoWithBocai> GetGroupMemberListAndCache(ICoolQApi api, long groupId) { List <GroupMemberInfoWithBocai> list = new List <GroupMemberInfoWithBocai>(); Dictionary <long, GroupMemberInfoWithBocai> keyVal = new Dictionary <long, GroupMemberInfoWithBocai>(); ModelWithSourceString <IEnumerable <GroupMemberInfo> > result = CoolApiExtensions.GetGroupMemberList(api, groupId); IEnumerable <GroupMemberInfo> iterator = result.Model; if (iterator != null) { foreach (GroupMemberInfo memberInfo in iterator) { GroupMemberInfoWithBocai groupMemberInfoWithBocai = new GroupMemberInfoWithBocai(memberInfo, list.Count); //增加短名字 //===================2018-02=================== string shortName = "";// Regex.Replace(g.NickName, @"\[[^\]]*?\]", ""); shortName = function.filtetStingSpecial(groupMemberInfoWithBocai.GroupMemberBaseInfo.NickName); //===================2018-02=================== shortName = shortName.Replace("'", "").Replace("/", "").Replace("\\", "").Replace("\"", "").Replace(".", ""); bool isHanzi = false; for (int ii = 0; ii < shortName.Length; ii++) { if ((int)shortName[ii] > 127) { //是汉字 isHanzi = true; break; } } if (isHanzi) { shortName = shortName.Length > 2 ? shortName.Substring(0, 2) : shortName; } else { shortName = shortName.Length > 4 ? shortName.Substring(0, 4) : shortName; } groupMemberInfoWithBocai.NickNameShort = shortName; list.Add(groupMemberInfoWithBocai); keyVal.Add(memberInfo.Number, groupMemberInfoWithBocai); } } CacheData.GroupMemberInfoList = list; CacheData.GroupMemberInfoDic = keyVal; return(list); }
public override GetGroupMemebersWithModelApiMahuaCommandResult Handle( GetGroupMemebersWithModelApiMahuaCommand message) { var source = CoolQApi.CQ_getGroupMemberList(AuthCode, long.Parse(message.ToGroup)); var modelWithSourceString = new ModelWithSourceString <IEnumerable <GroupMemberInfo> > { SourceString = source, Model = _groupMemberInfoSerializer.DeserializeGroupMemberInfos(source), }; var re = new GetGroupMemebersWithModelApiMahuaCommandResult { ModelWithSourceString = modelWithSourceString }; return(re); }
/// <summary> /// 取群成员列表 /// </summary> /// <param name="api">api</param> /// <param name="groupId">目标群</param> /// <returns></returns> public static ModelWithSourceString <IEnumerable <GroupMemberInfo> > GetGroupMemberList(this ICoolQApi api, long groupId) { var source = api.GetGroupMemberListAsString(groupId); var list = new List <GroupMemberInfo>(); var re = new ModelWithSourceString <IEnumerable <GroupMemberInfo> > { SourceString = source, Model = Enumerable.Empty <GroupMemberInfo>() }; if (ConvertStrToGroupMemberInfos(source, ref list)) { re.Model = list; } return(re); }
/// <summary> /// 取群成员信息(支持缓存) /// </summary> /// <param name="api">api</param> /// <param name="groupId">目标群</param> /// <param name="qqId">目标QQ</param> /// <param name="cache">是否缓存</param> /// <returns></returns> public static ModelWithSourceString <GroupMemberInfo> GetGroupMemberInfoV2(this ICoolQApi api, long groupId, long qqId, bool cache) { var data = api.GetGroupMemberInfoV2AsString(groupId, qqId, cache); var source = Convert.FromBase64String(data); var re = new ModelWithSourceString <GroupMemberInfo> { SourceString = data }; GroupMemberInfo gm = new GroupMemberInfo(); if (ConvertAnsiHexToGroupMemberInfo(source, ref gm)) { re.Model = gm; } return(re); }
public override GetGroupsWithModelApiMahuaCommandResult Handle(GetGroupsWithModelApiMahuaCommand message) { var json = CleverQQApi.Api_GetGroupList(CurrentQq); if (string.IsNullOrEmpty(json)) { return(new GetGroupsWithModelApiMahuaCommandResult { ModelWithSourceString = new ModelWithSourceString <IEnumerable <GroupInfo> > { Model = Enumerable.Empty <GroupInfo>(), SourceString = json } }); } var js = new JavaScriptSerializer { MaxJsonLength = int.MaxValue }; var groupInfos = js.Deserialize <GroupInfoJsonList>(json); var re = groupInfos.Join .Select(x => new GroupInfo { Group = x.Gc.ToString(), Name = x.Gn }) .ToArray(); var modelWithSourceString = new ModelWithSourceString <IEnumerable <GroupInfo> > { SourceString = json, Model = re }; var getGroupsWithModelApiMahuaCommandResult = new GetGroupsWithModelApiMahuaCommandResult { ModelWithSourceString = modelWithSourceString }; return(getGroupsWithModelApiMahuaCommandResult); }
public override GetGroupMemebersWithModelApiMahuaCommandResult Handle( GetGroupMemebersWithModelApiMahuaCommand message) { var json = MpqApi.Api_GetGroupMemberA(CurrentQq, message.ToGroup); if (string.IsNullOrEmpty(json)) { return(new GetGroupMemebersWithModelApiMahuaCommandResult { ModelWithSourceString = new ModelWithSourceString <IEnumerable <GroupMemberInfo> > { SourceString = json, Model = Enumerable.Empty <GroupMemberInfo>() } }); } var js = new JavaScriptSerializer { MaxJsonLength = int.MaxValue }; var infos = js.Deserialize <GroupMemberInfoListJson>(json); var modelWithSourceString = new ModelWithSourceString <IEnumerable <GroupMemberInfo> > { SourceString = json, Model = infos.Mems .Select(x => new GroupMemberInfo { Group = message.ToGroup, // todo age Age = 0, // todo Area Area = string.Empty, Authority = GetGroupMemberAuthority(x.Role), // todo CanModifyInGroupName CanModifyInGroupName = false, Gender = GetGender(x.G), // todo CanModifyInGroupName HasBadRecord = false, InGroupName = x.Card, JoinTime = Clock.ConvertSecondsToDateTime(x.Join_time), LastSpeakingTime = Clock.ConvertSecondsToDateTime(x.Last_speak_time), Level = x.Lv.Level.ToString(), NickName = x.Nick, Qq = x.Uin.ToString(), // todo SpecialTitle SpecialTitle = string.Empty, // todo TitleExpirationTime TitleExpirationTime = TimeSpan.MinValue }).ToArray(), }; var re = new GetGroupMemebersWithModelApiMahuaCommandResult { ModelWithSourceString = modelWithSourceString, }; return(re); }
// private MessageController messageController = new MessageController(); public void ProcessGroupMessage(GroupMessageReceivedContext context) { String message = context.Message; message = message.Trim(); if (message == "" || message.Length == 0 || message == null) { return; } String myQQ = _mahuaApi.GetLoginQq(); String aiteQQ = "[CQ:at,qq=" + myQQ + "]"; if (message.Contains(aiteQQ)) { String sendMessage = "[CQ:at,qq=" + context.FromQq + "]"; message = message.Replace(aiteQQ, "").Replace("\"\"", "").Replace("“", "").Replace("”", "").Trim(); IDatabase redis = RedisHelper.getRedis(); // 判断用户是否在缓冲中 if (redis.StringGet(context.FromQq).IsNull) { redis.StringSet(context.FromQq, "flag"); redis.KeyExpire(context.FromQq, new TimeSpan(10000000 * Convert.ToInt16(Constants.sleepTime))); } else { string tmpStr = "为防止造成刷屏,您每次使用机器人的时间间隔" + Constants.sleepTime + "秒哦!"; sendMessage += tmpStr; _mahuaApi.SendGroupMessage(context.FromGroup, sendMessage); return; }; if (message == null || message == "" || message.Length == 0) { // } else { MessageModel messageModel = MessageController.main(message, context.FromQq); // 发送消息 string tmpStr = messageModel.SendMessage; if (messageModel.IsAdmin) { // 群数量 if (MessageConstant.QUN_TOTAL.Equals(messageModel.Code)) { ModelWithSourceString <IEnumerable <GroupInfo> > modelWithSourceString = _mahuaApi.GetGroupsWithModel(); IEnumerable <GroupInfo> groupInfo = modelWithSourceString.Model; int count = 0; foreach (var item in groupInfo) { count++; } _mahuaApi.SendGroupMessage(context.FromQq, "群数量:" + count.ToString()); } else { if (tmpStr != "" && tmpStr.Length > 0) { sendMessage += tmpStr; _mahuaApi.SendGroupMessage(context.FromQq, sendMessage); } } } else { if (tmpStr != "" && tmpStr.Length > 0) { sendMessage += tmpStr; _mahuaApi.SendGroupMessage(context.FromGroup, sendMessage); } } } } }
// private MessageController messageController = new MessageController(); public void ProcessFriendMessage(PrivateMessageFromFriendReceivedContext context) { string message = context.Message; if (message == "" || message.Length == 0 || message == null) { return; } IDatabase redis = RedisHelper.getRedis(); // 判断用户是否在缓冲中 if (redis.StringGet(context.FromQq).IsNull) { redis.StringSet(context.FromQq, "flag"); redis.KeyExpire(context.FromQq, new TimeSpan(10000000 * Convert.ToInt16(Constants.sleepTime))); } else { string tmpStr = "为防止造成刷屏,您每次使用机器人的时间间隔" + Constants.sleepTime + "秒哦!"; _mahuaApi.SendPrivateMessage(context.FromQq, tmpStr); return; }; if (message == null || message == "" || message.Length == 0) { // } else { MessageModel messageModel = MessageController.main(message, context.FromQq); string tmpStr = messageModel.SendMessage; bool isAdmin = messageModel.IsAdmin; if (isAdmin) { // 判断是否为 公告指令 if (MessageConstant.GONG_GAO.Equals(messageModel.Code)) { // 获取所有群信息 ModelWithSourceString <IEnumerable <GroupInfo> > modelWithSourceString = _mahuaApi.GetGroupsWithModel(); IEnumerable <GroupInfo> groupInfo = modelWithSourceString.Model; foreach (var item in groupInfo) { _mahuaApi.SendGroupMessage(item.Group, tmpStr); _mahuaApi.SendPrivateMessage(context.FromQq, "【" + item.Name + "】 " + item.Group + " 推送成功!"); } } // 判断是否为全体成员处理 else if (MessageConstant.AITE_ALL.Equals(messageModel.Code)) { // 获取所有群信息 ModelWithSourceString <IEnumerable <GroupInfo> > modelWithSourceString = _mahuaApi.GetGroupsWithModel(); IEnumerable <GroupInfo> groupInfo = modelWithSourceString.Model; tmpStr = "[CQ:at,qq=all]\n" + tmpStr; foreach (var item in groupInfo) { _mahuaApi.SendGroupMessage(item.Group, tmpStr); _mahuaApi.SendPrivateMessage(context.FromQq, "【" + item.Name + "】 " + item.Group + " 推送成功!"); } } // 更新金额 else if (MessageConstant.UPDATE_MONEY.Equals(messageModel.Code)) { _mahuaApi.SendPrivateMessage(context.FromQq, messageModel.SendMessage); } // 群数量 else if (MessageConstant.QUN_TOTAL.Equals(messageModel.Code)) { ModelWithSourceString <IEnumerable <GroupInfo> > modelWithSourceString = _mahuaApi.GetGroupsWithModel(); IEnumerable <GroupInfo> groupInfo = modelWithSourceString.Model; int count = 0; foreach (var item in groupInfo) { count++; } _mahuaApi.SendPrivateMessage(context.FromQq, "群数量:" + count.ToString()); } else { if (tmpStr != "" && tmpStr.Length > 0) { _mahuaApi.SendPrivateMessage(context.FromQq, tmpStr); } } } else { if (tmpStr != "" && tmpStr.Length > 0) { _mahuaApi.SendPrivateMessage(context.FromQq, tmpStr); } } } }
/// <summary> /// 开始处理 /// </summary> /// <returns></returns> public int Run() { try { // 全群发送同一条信息 if (Msg.IndexOf("#全群通知") == 0) { if (Sender.QQ == -10000) { IEnumerable <GroupInfo> groups = ExtrasCoolApiExtensions.GetGroupList(MainPlugin.CoolQApi); string Broadcast = Msg.Replace("#全群通知", ""); foreach (GroupInfo group in groups) { User system = new User(-100000, new UserSource(UserSource.GroupMessage, new Group(group.GroupNumber), 0)); system.Send(Broadcast); } return(1); } } // 强制回收垃圾 if (Msg.IndexOf("#回收垃圾") == 0) { if (Sender.QQ == 1813274096) { GC.Collect(); Sender.Send("void GC.Collect();成功"); return(1); } } // 强制重新载入全部用户 if (Msg.IndexOf("#重载用户") == 0) { if (Sender.QQ == 1813274096) { IEnumerable <GroupInfo> info = ExtrasCoolApiExtensions.GetGroupList(MainPlugin.CoolQApi); int groups = 0, users = 0; foreach (GroupInfo inf in info) { Group gp = new Group(inf.GroupNumber); ModelWithSourceString <IEnumerable <GroupMemberInfo> > members = CoolApiExtensions.GetGroupMemberList(MainPlugin.CoolQApi, inf.GroupNumber); foreach (GroupMemberInfo i in members.Model) { User usr = new User(i.Number, new UserSource(UserSource.GroupMessage, new Group(gp.QQId), 0)); users++; } groups++; } GC.Collect(); Sender.Send("已经重新载入了" + groups + "个群," + users + "个QQ。"); return(1); } } // 如果被封禁则不处理 if (Sender.Source.Group != null) { if (Sender.Source.Group.IsBaned) { return(1); } } if (Sender.IsBaned) { return(1); } // 你群如果关了千歌不处理 if (Sender.Source.Group != null) { if (!Sender.Source.Group.IsEnable) { if (rcc(Msg) != "开千歌") { return(1); } } } // 菜单 if (Menu.AutoSend(rcc(Msg), Sender) != 0) { return(1); } // 开启千歌 if (rcc(Msg) == "开千歌") { ModelWithSourceString <GroupMemberInfo> info = CoolApiExtensions.GetGroupMemberInfoV2(MainPlugin.CoolQApi, Sender.Source.Group.QQId, Sender.QQ, false); if (info.Model.Authority == "群主" || info.Model.Authority == "管理员" || Sender.QQ == 1813274096) { Sender.Send(Sender.AT + "千歌已开启"); Sender.Source.Group.IsEnable = true; return(1); } else { Sender.Send(Sender.AT + "请管理员来进行操作"); return(1); } } // 关闭千歌 if (rcc(Msg) == "关千歌") { ModelWithSourceString <GroupMemberInfo> info = CoolApiExtensions.GetGroupMemberInfoV2(MainPlugin.CoolQApi, Sender.Source.Group.QQId, Sender.QQ, false); if (info.Model.Authority == "群主" || info.Model.Authority == "管理员" || Sender.QQ == 1813274096) { Sender.Send(Sender.AT + "千歌已关闭"); Sender.Source.Group.IsEnable = false; return(1); } else { Sender.Send(Sender.AT + "请管理员来进行操作"); return(1); } } // 群状态 if (Sender.Source.Group != null) { if (rcc(Msg) == "群状态") { Status.Auto3(Sender.Source.Group); } } // 蜜柑商店 if (MardarinStore.Auto(Sender, rcc(Msg)) != 0) { return(1); } // 小游戏 if (MiniGame.Auto(Sender, rcc(Msg)) != 0) { return(1); } // 签到 if (rcc(Msg) == "签到") { return(new Checkin(Sender).Check()); } // 抛锦球 if (ThrowBall.Auto(Sender, rcc(Msg)) == 1) { return(1); } // 状态 if (rcc(Msg) == "状态") { return(Status.Auto(Sender)); } if (rcc(Msg) == "我的状态") { return(Status.Auto2(Sender)); } // 档线 if (rcc(Msg) == "档线") { return(Yohane.StopLine.Auto(Sender)); } // 转账 if (Transfer.Auto(Sender, rcc(Msg)) == 1) { return(1); } // "Sudo" if (Sender.QQ == 1813274096) { if (rcc(Msg).IndexOf("sudo") == 0) { string[] parm = Msg.Split('|'); if (parm.Length >= 3) { int num = 0; int.TryParse(parm[1], out num); Command cmd = new Command(parm[2], new User(num, Sender.Source), TimeStampHelper.ConvertDateTimeInt(DateTime.Now).ToString()); return(cmd.Run()); } } } // 抽卡 if (ScoutSimulator.Msg.Auto(Sender, rcc(Msg)) != 0) { return(1); } // 抽奖 if (Lottery.Auto(Sender, rcc(Msg)) != 0) { return(1); } // 鸽服号状态 if (SIF.CN.Status.Auto(Sender, rcc(Msg)) != 0) { return(1); } // 算运势 if (rcc(Msg) == "算运势") { return(Divination.Auto(Sender)); } // 点歌 if (rcc(Msg).IndexOf("网易点歌") == 0) { return(ChooseSong.Choose.Auto(Sender, rcc(Msg))); } // 算日美ID #region /*long getRF_id = 0; * if (Msg.Length == 12) * { * if (long.TryParse(Msg.Replace("算账号",""), out getRF_id) == true) * { * getRF_id = getRF_id * 526850996; * getRF_id = getRF_id % 999999937; * Sender.Send(Sender.AT + "Uid: " + Msg.Replace("算账号", "") + "\n" + * "Id: " + getRF_id); * return 1; * } * else * { * MessageSendHelper.Send(Sender, " × 计算失败!以下是狗开发的一点人生经验:\n - 不支持国服\n - 文本格式不对\n - 数值转换错误"); * return 1; * } * } * else * { * MessageSendHelper.Send(Sender, " × 计算失败!以下是狗开发的一点人生经验:\n - 不支持国服\n - 文本格式不对\n - 未知"); * return 1; * }*/ #endregion // 聊天解析Beta if (Chat.Msg.Auto(Sender, Msg) != 0) { return(1); } } catch (Exception ex) { Logger.Log ("Ex:" + ex.Message, Logger.WARN, new long[] { }, 0); Sender.Send("ChikaBot Test System\n错误信息 " + ex.Message + "\n错误来源 " + ex.Source + "\n错误堆叠 " + ex.StackTrace); //ExceptionReportHelper.Send("消息处理", Sender, ex, Msg); //Sender.Send(" × 千歌酱出了一个Bug, 暂时不能陪你玩了...\n 错误类型:" + ex.GetType().ToString()); } return(0); }
public static int Auto(User Sender, string Msg) { if (Msg == "抛锦球") { if (Sender.Source.Group == null) { Sender.Send("请在群内使用"); return(1); } if (Sender.RandomBanCard < 1) { Sender.Send("锦球卡不足!请购买!\nP.S 你可以在抽奖卡池,积分商店购买到。"); return(1); } Sender.RandomBanCard--; ModelWithSourceString <IEnumerable <GroupMemberInfo> > model = CoolApiExtensions.GetGroupMemberList(MainPlugin.CoolQApi, Sender.Source.Group.QQId); List <GroupMemberInfo> members = new List <GroupMemberInfo>(); foreach (GroupMemberInfo info in model.Model) { if (info.Authority != "群主") { if (info.Authority != "管理员") { members.Add(info); } } } long banQQIndexOfMembers = members[new Random().Next(0, members.Count)].Number; int banTimeBySecond = new Random().Next(60, 600); string banTimeStr = banTimeBySecond + "s"; MainPlugin.CoolQApi.SetGroupBan(Sender.Source.Group.QQId, banQQIndexOfMembers, banTimeBySecond); User BanUser = new User(banQQIndexOfMembers, Sender.Source); Sender.Send("恭喜" + BanUser.AT + "被" + Sender.AT + "砸中!禁言" + banTimeStr + "!"); return(1); } else if (Msg.IndexOf("抛锦球") == 0) { if (Sender.Source.Group == null) { Sender.Send("请在群内使用"); return(1); } if (Sender.AtBanCard < 1) { Sender.Send("锦球卡不足!请购买!\nP.S 你可以在抽奖卡池,积分商店购买到。"); return(1); } if (Msg.IndexOf("[cq:at,qq=") == -1 && Msg.IndexOf("]") == -1) { Sender.Send(Sender.AT + "请@你想禁言谁"); return(1); } string msg = Msg.Replace("抛锦球", ""); long banQQ = 0; string obj = msg.Substring( msg.IndexOf("[cq:at,qq=") + 10, msg.Length - 11 - msg.Substring(msg.IndexOf("]"), msg.Length - msg.IndexOf("]")).Length + 1 ); long.TryParse(obj, out banQQ); msg = msg.Replace("[cq:at,qq=" + obj + "]", ""); if (msg.Replace(" ", "") != "") { Sender.Send(Sender.AT + "抛锦球的格式为 /抛锦球[@一个人]\n[@一个人]为选填项"); return(1); } User banUser = new User(banQQ, Sender.Source); ModelWithSourceString <GroupMemberInfo> banUserInfo = CoolApiExtensions.GetGroupMemberInfoV2(MainPlugin.CoolQApi, Sender.Source.Group.QQId, banUser.QQ, false); if (banUserInfo.Model.Authority == "群主" || banUserInfo.Model.Authority == "管理员") { Sender.Send(Sender.AT + "你@的人太强大了,千歌不能砸中他!"); return(1); } Sender.AtBanCard--; int banTimeBySecond = new Random().Next(60, 600); int sec = 0, min = 0; min = (int)(sec / 60); sec = sec % 60; string banTimeStr = banTimeBySecond + "s"; MainPlugin.CoolQApi.SetGroupBan(Sender.Source.Group.QQId, banUser.QQ, banTimeBySecond); Sender.Send("恭喜" + banUser.AT + "被" + Sender.AT + "砸中!禁言" + banTimeStr + "!"); return(1); } else { return(0); } }
public ModelWithSourceString <IEnumerable <GroupMemberInfo> > GetGroupMemebersWithModel(string toGroup) { var json = _mpqApi.Api_GetGroupMemberA(_qqSession.CurrentQq, toGroup); Logger.Debug(json); if (string.IsNullOrEmpty(json)) { return(new ModelWithSourceString <IEnumerable <GroupMemberInfo> > { SourceString = json, Model = Enumerable.Empty <GroupMemberInfo>() }); } var js = new JavaScriptSerializer { MaxJsonLength = int.MaxValue }; var infos = js.Deserialize <GroupMemberInfoListJson>(json); var re = new ModelWithSourceString <IEnumerable <GroupMemberInfo> > { SourceString = json, Model = infos.Mems .Select(x => new GroupMemberInfo { Group = toGroup, // todo age Age = 0, // todo Area Area = string.Empty, Authority = x.Role == 3 ? GroupMemberAuthority.Leader : x.Role == 2 ? GroupMemberAuthority.Manager : GroupMemberAuthority.Normal, // todo CanModifyInGroupName CanModifyInGroupName = false, Gender = !x.G.HasValue ? Gender.Unknow : x.G == GroupMemberSex.Female ? Gender.Female : Gender.Male, // todo CanModifyInGroupName HasBadRecord = false, InGroupName = x.Card, JoinTime = Clock.ConvertSecondsToDateTime(x.Join_time), LastSpeakingTime = Clock.ConvertSecondsToDateTime(x.Last_speak_time), Level = x.Lv.Level.ToString(), NickName = x.Nick, Qq = x.Uin.ToString(), // todo SpecialTitle SpecialTitle = string.Empty, // todo TitleExpirationTime TitleExpirationTime = TimeSpan.MinValue }) .ToArray(), }; return(re); }