private static StrangerInfo UpdatePrivateInfo(long id) { StrangerInfo obj = null; try { obj = CoolQHttpApiClient.GetStrangerInfo(id.ToString()).Data; } catch { //obj = InitInfo(); } return(obj /* ?? InitInfo()*/); //StrangerInfo InitInfo() //{ // var groupInfoV2 = new StrangerInfo // { // Nickname = new CoolQIdentity(id, MessageType.Private).ToString(), // UserId = id, // Age = "-1", // Sex = "unknown", // }; // return groupInfoV2; //} }
private static GroupInfoV2 UpdateGroupInfo(long id) { GroupInfoV2 obj = null; try { obj = CoolQHttpApiClient.GetGroupInfoV2(id.ToString()).Data; } catch { //obj = InitInfo(); } return(obj /* ?? InitInfo()*/); //GroupInfoV2 InitInfo() //{ // var groupInfoV2 = new GroupInfoV2 // { // GroupName = new CoolQIdentity(id, MessageType.Group).ToString(), // GroupId = long.Parse(id.ToString()), // Admins = new List<GroupInfoV2Admins>(), // }; // return groupInfoV2; //} }
private CoolQRouteMessage AddCount(CoolQRouteMessage cm) { string user = cm.UserId, group = cm.GroupId; try { Logger.Warn("发现好图,存了"); if (!UserCount.ContainsKey(user)) { UserCount.Add(user, 2); } UserCount[user]--; if (UserCount[user] != 0) { return(cm.ToSource("?", true)); } else { UserCount[user] = 2; CoolQHttpApiClient.SetGroupBan(group, user, (int)(0.5 * 60 * 60)); return(cm.ToSource("?", true)); } } finally { SaveSettings(UserCount); } }
public override CoolQRouteMessage OnMessageReceived(CoolQScopeEventArgs scope) { var routeMsg = scope.RouteMessage; long groupId = Convert.ToInt64(routeMsg.GroupId); long userId = Convert.ToInt64(routeMsg.UserId); long discussId = Convert.ToInt64(routeMsg.DiscussId); var type = routeMsg.MessageType; string group, sender, message = routeMsg.Message.RawMessage; var data = CoolQDispatcher.Current.SessionList[(CoolQIdentity)routeMsg.Identity].GetDataAsync().Result; if (type == MessageType.Private) { group = "私聊"; sender = data.Name; } else if (type == MessageType.Discuss) { group = data.Name; sender = routeMsg.UserId; } else { var userInfo = data?.GroupInfo?.Members ?.FirstOrDefault(i => i.UserId == userId) ?? CoolQHttpApiClient.GetGroupMemberInfo(routeMsg.GroupId, routeMsg.UserId).Data; group = data?.Name; sender = string.IsNullOrEmpty(userInfo.Card) ? userInfo.Nickname : userInfo.Card; } Logger.Message($"({group}) {sender}:\r\n {CoolQCode.DecodeToString(message).Replace("\n", "\n ")}"); return(null); }
public override CoolQRouteMessage OnMessageReceived(CoolQScopeEventArgs scope) { var routeMsg = scope.RouteMessage; if (routeMsg.RawMessage == "收到福袋,请使用新版手机QQ查看") { CoolQHttpApiClient.DeleteMessage(routeMsg.MessageId); } return(null); //return routeMsg.ToSource("已撤回福袋。若需关闭,请使用 \"/plugin -disable PackDetector\""); }
public override CoolQRouteMessage OnMessageReceived(CoolQScopeEventArgs scope) { var routeMsg = scope.RouteMessage; if (routeMsg.GroupId == "133605766") { return(null); } if (routeMsg.GroupId == null) { return(null); } if (routeMsg.ArgString.Trim() == "") { return(routeMsg.ToSource("要睡多少小时呀??", true)); } double sleepTime; if (SleepTime > 12) { sleepTime = 12; } else if (SleepTime < 0.5) { sleepTime = 0.5; } else if (SleepTime > 0) { sleepTime = SleepTime; } else { return(routeMsg.ToSource("穿越是不可以的……", true)); } DateTime dt = new DateTime(); dt = dt.AddHours(sleepTime); int s = (int)(dt.Ticks / 10000000); CoolQHttpApiClient.SetGroupBan(routeMsg.GroupId, routeMsg.UserId, s); string msg = "祝你一觉睡到" + DateTime.Now.AddHours(sleepTime).ToString("HH:mm") + " :D"; return(routeMsg.ToSource(msg, true)); }
public override async void SendMessageAsync(RouteMessage message) { var routeMsg = (CoolQRouteMessage)message; OnMessageSending?.Invoke(routeMsg); if (routeMsg.Canceled && !routeMsg.IsForced) { return; } if (routeMsg.DelayTime > TimeSpan.FromSeconds(0)) { await Task.Delay(routeMsg.DelayTime).ConfigureAwait(false); } var msg = (routeMsg.EnableAt && routeMsg.MessageType != MessageType.Private ? new At(routeMsg.UserId) + " " : "") + ((CoolQMessage)routeMsg.Message).Compose(); string info = routeMsg.Identity.ToString(); string status; switch (routeMsg.MessageType) { case MessageType.Group: status = CoolQHttpApiClient.SendGroupMessageAsync(routeMsg.GroupId, msg).Status; break; case MessageType.Discuss: status = CoolQHttpApiClient.SendDiscussMessageAsync(routeMsg.DiscussId, msg).Status; break; case MessageType.Private: status = CoolQHttpApiClient.SendPrivateMessageAsync(routeMsg.UserId, msg).Status; break; default: throw new ArgumentOutOfRangeException(); } Logger.Message(string.Format("({0}) 我: {{status: {1}}}\r\n {2}", info, status, CoolQCode.DecodeToString(msg))); }
public override bool Event_Received(object sender, EventEventArgs args) { var rootId = new CoolQIdentity(2241521134, MessageType.Private); bool handled = false; var obj = args.ParsedObject; switch (obj) { case string str: SendMessageAsync(new CoolQRouteMessage(str, rootId)); break; case FriendRequest friendRequest: { var msg = string.Format("{0} ({1})邀请加我为好友", CoolQHttpApiClient.GetStrangerInfo(friendRequest.UserId.ToString()).Data?.Nickname, friendRequest.UserId); SendMessageAsync(new CoolQRouteMessage(msg, rootId)); break; } case GroupInvite groupInvite: if (groupInvite.SubType == "invite") { var msg = string.Format("{0} ({1})邀请我加入群{2}", CoolQHttpApiClient.GetStrangerInfo(groupInvite.UserId.ToString()).Data?.Nickname, groupInvite.UserId, groupInvite.GroupId); SendMessageAsync(new CoolQRouteMessage(msg, rootId)); } break; case GroupAdminChange groupAdminChange: break; } return(handled); }
public override CoolQRouteMessage OnMessageReceived(CoolQScopeEventArgs scope) { var routeMsg = scope.RouteMessage; string sessionId = null; var sessionType = MessageType.Private; if (routeMsg.CurrentAuthority != Authority.Root) { return(routeMsg.ToSource(DefaultReply.RootOnly)); } if (Message == null) { return(routeMsg .ToSource("你要说什么……") .ForceToSend()); } if (GroupId != null && DiscussId != null) { return(routeMsg .ToSource("不能同时选择群和讨论组……") .ForceToSend()); } string innerMessage = Decode(Message); if (UseAllGroup) { sessionType = MessageType.Group; List <GroupInfo> list = CoolQHttpApiClient.GetGroupList().Data; List <string> failedList = new List <string>(); string ok = $"◈◈ {DateTime.Now:M月d日 H:mm}公告 ◈◈{Environment.NewLine}"; string msg = ok + innerMessage; if (list?.Count > 0) { foreach (var groupInfo in list) { try { sessionId = groupInfo.GroupId.ToString(); SendMessage(new CoolQRouteMessage(msg, new CoolQIdentity(sessionId, sessionType))); Thread.Sleep(3000); } catch { failedList.Add($"({groupInfo.GroupId}) {groupInfo.GroupName}"); } } } else { return(routeMsg .ToSource("无有效群。") .ForceToSend()); } SaveLogs(msg, "announcement"); if (failedList.Count == 0) { return(routeMsg .ToSource("已成功发送至" + list.Count + "个群。") .ForceToSend()); } else { return(routeMsg .ToSource(string.Format("有以下{0}个群未成功发送: {1}{2}", failedList.Count, Environment.NewLine, string.Join(Environment.NewLine, failedList)) ) .ForceToSend()); } } if (DiscussId != null) { sessionId = DiscussId; sessionType = MessageType.Discuss; } else if (GroupId != null) { sessionId = GroupId; sessionType = MessageType.Group; } if (UserId != null) { sessionId = UserId; } if (DiscussId == null && GroupId == null && UserId == null) { return(routeMsg .ToSource(Decode(routeMsg.ArgString)) .ForceToSend()); } SendMessage(new CoolQRouteMessage(innerMessage, new CoolQIdentity(sessionId, sessionType))); return(null); }
public override CoolQRouteMessage OnMessageReceived(CoolQScopeEventArgs scope) { var routeMsg = scope.RouteMessage; // 查黄图 if (routeMsg.Group == null || routeMsg.GroupId != "133605766") { return(null); } var imgList = CoolQCode.GetImageInfo(routeMsg.RawMessage); if (imgList == null) { return(null); } List <string> urlList = new List <string>(); List <CosObject> cacheList = new List <CosObject>(); foreach (var item in imgList) { if (Md5List.Keys.Contains(item.Md5)) { cacheList.Add(Md5List[item.Md5]); } else if (item.Size > 1000 * 60) //60KB { urlList.Add(item.Url); } } if (urlList.Count == 0 && cacheList.Count == 0) { return(null); } Logger.Warn("发现了" + (urlList.Count + cacheList.Count) + "张图"); CosAnalyzer model = new CosAnalyzer { result_list = new List <CosObject>() }; if (urlList.Count != 0) { string str = Newtonsoft.Json.JsonConvert.SerializeObject(new { appid = "1252749411", url_list = urlList.ToArray() }); var abc = WebRequest.CreatePostHttpResponse( "http://service.image.myqcloud.com/detection/porn_detect", str, authorization: Signature.Get()); var respStr = WebRequest.GetResponseString(abc); model = Newtonsoft.Json.JsonConvert.DeserializeObject <CosAnalyzer>(respStr); } model.result_list.AddRange(cacheList); int i = 0; foreach (var item in model.result_list) { if (i < imgList.Length && !Md5List.Keys.Contains(imgList[i].Md5)) { Md5List.Add(imgList[i].Md5, item); } i++; switch (item.data.result) { case 0 when item.data.normal_score > item.data.hot_score && item.data.normal_score > item.data.porn_score && item.data.confidence > 40: continue; case 1: case 2: CoolQHttpApiClient.SetGroupBan(routeMsg.GroupId, routeMsg.UserId, 24 * 60 * 60); return(routeMsg.ToSource("...")); default: break; } if (item.data.porn_score >= item.data.hot_score && item.data.porn_score > 65) { return(AddCount(routeMsg)); } if (item.data.hot_score >= item.data.porn_score && item.data.hot_score > item.data.normal_score && item.data.hot_score > 80) { return(AddCount(routeMsg)); } break; } return(null); //if (user != "2241521134") return null; }
public override CoolQRouteMessage OnMessageReceived(CoolQScopeEventArgs scope) { var routeMsg = scope.RouteMessage; _routeMsg = routeMsg; if (List) { if (_routeMsg.CurrentAuthority == Authority.Root) { BllUserRole bllUserRole = new BllUserRole(); List <string> strs = new List <string>(); foreach (var matchInfo in _matchList) { var userInfo = bllUserRole.GetUserRoleByQq(long.Parse(matchInfo.Qq))[0]; string osuName = userInfo.CurrentUname; long? id = matchInfo.SetId; string status; if (matchInfo.TargetQq == null) { status = "等待匹配"; } else { var info = bllUserRole.GetUserRoleByQq(long.Parse(matchInfo.TargetQq))[0]; string name = info.CurrentUname; status = $"已经和{name}匹配"; } if (id == null) { strs.Add(osuName + ": 闲置中。"); } else { strs.Add($"{osuName} 地图号: s/{id} {status}"); } } return(_routeMsg .ToSource(string.Join("\r\n", strs)) .ForceToSend()); } else { return(_routeMsg.ToSource(DefaultReply.RootOnly)); } } if (_routeMsg.MessageType != MessageType.Private) { return(_routeMsg.ToSource(DefaultReply.PrivateOnly)); } try { using (_session = new Session(DefaultTimeout, _routeMsg.Identity, _routeMsg.UserId)) { BllUserRole bllUserRole = new BllUserRole(); List <TableUserRole> userInfo = bllUserRole.GetUserRoleByQq(long.Parse(routeMsg.UserId)); if (userInfo.Count == 0) { return(_routeMsg.ToSource("这个功能是需要绑定osu id的,请使用/setid完成绑定", true)); } _osuId = userInfo[0].UserId.ToString(); try { // Init if (!_matchList.Select(q => q.Qq).Contains(_routeMsg.UserId)) { const string intro = @"这是一个利用我进行自动化管理的M4M平台,只需将图的链接给我,你无需自己各处求摸。 我会地合理地从库中挑选,并与你和另一人互相推荐,以达成自动匹配M4M的目的。 每个人只能给我一张图,第二张图会覆盖第一张图,所以有什么图需摸要记得更新哦! 最重要的一点:这仅仅是一个平台,真正的交流还需面对面进行。"; SendMessage(_routeMsg.ToSource(intro)); _matchList.Add(new MatchInfo(_routeMsg.UserId)); SaveMatchList(); //apply Thread.Sleep(8000); } // Load _myInfo = _matchList.FirstOrDefault(q => q.Qq == _routeMsg.UserId); _myInfo.IsOperating = true; _myInfo.LastUse = DateTime.Now; var plugin = DaylilyCore.Current.PluginManager.GetPlugin <M4MMatchNoticeApp>(); if (plugin != null) { if (M4MMatchNoticeApp.Tipped.ContainsKey(_myInfo.Qq)) { M4MMatchNoticeApp.Tipped[_myInfo.Qq] = DateTime.Now; } else { M4MMatchNoticeApp.Tipped.TryAdd(_myInfo.Qq, DateTime.Now); } plugin.SaveSettings(); } // Confirm if (Confirm) { if (_myInfo.TargetQq == null) { return(_routeMsg .ToSource("你尚且还没有正在进行的匹配。") .ForceToSend()); } var oInfo = _matchList.FirstOrDefault(q => q.Qq == _myInfo.TargetQq); if (DateTime.Now - oInfo.LastConfirmedTime < new TimeSpan(3, 0, 0)) { return(_routeMsg .ToSource("你已在三小时之内发出过核对确认,请稍后再试。") .ForceToSend()); } oInfo.RequestBeConfirmed(); SaveMatchList(); //apply string nick = CoolQHttpApiClient.GetStrangerInfo(oInfo.Qq).Data?.Nickname ?? "玩家"; SendMessage(_routeMsg .ToSource($"你已经确认了{nick}({oInfo.Qq})的摸,请及时完成自己的摸!") .ForceToSend() ); string nick2 = CoolQHttpApiClient.GetStrangerInfo(_myInfo.Qq).Data?.Nickname ?? "玩家"; SendMessage(new CoolQRouteMessage($"{nick2}({_myInfo.Qq})已经确认查收了你的摸。", new CoolQIdentity(oInfo.Qq, MessageType.Private))); if (oInfo.LastConfirmedTime == null || _myInfo.LastConfirmedTime == null) { return(null); } Thread.Sleep(2000); oInfo.FinishedSet.Add(_myInfo.SetId); _myInfo.FinishedSet.Add(oInfo.SetId); oInfo.Finish(); _myInfo.Finish(); SendMessage(new CoolQRouteMessage( $"你与{nick}({oInfo.Qq})的M4M ({oInfo.SetUrl}) 已完成,合作愉快!", new CoolQIdentity(_myInfo.Qq, MessageType.Private))); SendMessage(new CoolQRouteMessage( $"你与{nick2}({_myInfo.Qq})的M4M ({_myInfo.SetUrl}) 已完成,合作愉快!", new CoolQIdentity(oInfo.Qq, MessageType.Private))); SaveMatchList(); //apply return(null); } // Finish else if (Finish) { if (_myInfo.TargetQq == null) { return(_routeMsg .ToSource("你尚且还没有正在进行的匹配。") .ForceToSend()); } var oInfo = _matchList.FirstOrDefault(q => q.Qq == _myInfo.TargetQq); if (DateTime.Now - _myInfo.LastNoticeTime < new TimeSpan(3, 0, 0)) { return(_routeMsg .ToSource("你已在三小时之内发出过完成提醒,请稍后再试。") .ForceToSend()); } _myInfo.RequestFinishMatch(); SaveMatchList(); //apply string nick2 = CoolQHttpApiClient.GetStrangerInfo(_myInfo.Qq).Data?.Nickname ?? "玩家"; SendMessage(new CoolQRouteMessage( $"{nick2}({_myInfo.Qq})已经摸完了你的图:\r\n" + $"{oInfo.SetUrl}\r\n" + $"正在等待你的摸。\r\n" + $"请检查他的modding情况,回复 \"/m4m -确认\" 查收。\r\n" + $"若对方没有摸完,请不要查收。若有疑问请相互交流。", new CoolQIdentity(oInfo.Qq, MessageType.Private))); return(_routeMsg .ToSource("已发送完成请求。") .ForceToSend()); } // Cancel else if (Cancel) { if (_myInfo.TargetQq == null) { return(_routeMsg .ToSource("你尚且还没有正在进行的匹配。") .ForceToSend()); } var oInfo = _matchList.FirstOrDefault(q => q.Qq == _myInfo.TargetQq); if (oInfo.MatchTime == null) { oInfo.MatchTime = DateTime.Now; // 临时补救 } if (DateTime.Now - oInfo.MatchTime < new TimeSpan(7, 0, 0, 0)) { return(_routeMsg .ToSource("取消失败,仅匹配持续一周以上才可取消。") .ForceToSend()); } string nick = CoolQHttpApiClient.GetStrangerInfo(oInfo.Qq).Data?.Nickname ?? "玩家"; string nick2 = CoolQHttpApiClient.GetStrangerInfo(_myInfo.Qq).Data?.Nickname ?? "玩家"; oInfo.FinishedSet.Add(_myInfo.SetId); _myInfo.FinishedSet.Add(oInfo.SetId); oInfo.Finish(); _myInfo.Finish(); SendMessage(new CoolQRouteMessage( $"你与{nick}({oInfo.Qq})的M4M ({oInfo.SetUrl}) 已强制取消。", new CoolQIdentity(_myInfo.Qq, MessageType.Private))); SendMessage(new CoolQRouteMessage( $"你与{nick2}({_myInfo.Qq})的M4M ({_myInfo.SetUrl}) 已强制取消。", new CoolQIdentity(oInfo.Qq, MessageType.Private))); SaveMatchList(); //apply return(null); } // No set after load if (_myInfo.Set == null) { return(SessionNoMap()); } // Matched Main string info; if (_myInfo.TargetQq != null) { var oInfo = _matchList.FirstOrDefault(q => q.Qq == _myInfo.TargetQq); string nick = CoolQHttpApiClient.GetStrangerInfo(oInfo.Qq).Data?.Nickname ?? "玩家"; info = $"你已经成功和{nick}({oInfo.Qq})匹配\r\n" + $"· 你的信息:\r\n" + $" 地图地址:{_myInfo.SetUrl}\r\n" + $" 备注:{_myInfo.Mark}\r\n" + $"· 他的信息:\r\n" + $" 地图地址:{oInfo.SetUrl} \r\n" + $" 备注:{oInfo.Mark}\r\n" + $"当你摸图完成时,请使用 \"/m4m -完成\" 提醒对方审阅。\r\n" + $"当对方向你提出审阅请求后,请使用 \"/m4m -确认\" 完成审阅。\r\n" + $"若匹配持续超过一周,可使用 \"/m4m -取消\" 强制取消,且下次不会匹配到此图。"; return(_routeMsg .ToSource(info) .ForceToSend()); } // Main info = $"· 你的信息:\r\n" + $" 地图地址:{_myInfo.SetUrl} \r\n" + $" 备注:{_myInfo.Mark}\r\n" + $"· 从下面的选项中选择一个你想进行的操作:\r\n" + $">【1】删除已发布的地图。\r\n" + $">【2】管理摸图偏好(当前:{_myInfo.GetPreferenceString()})。\r\n" + $">【3】开始进行m4m匹配。"; SendMessage(_routeMsg .ToSource(info) .ForceToSend() ); CoolQRouteMessage cmMain = SessionCondition("1", "2", "3"); switch (cmMain.RawMessage) { case "1": SendMessage(_routeMsg .ToSource("删除现有地图,确认吗?\r\n" + "【1】是 【2】否") .ForceToSend()); CoolQRouteMessage cmPub = SessionCondition("1", "2"); if (cmPub.RawMessage == "1") { _myInfo.RemoveSet(); SaveMatchList(); //apply return(_routeMsg .ToSource("删除成功。使用/m4m重新发布地图。") .ForceToSend()); } else { return(_routeMsg .ToSource("你已取消操作。") .ForceToSend()); } case "2": if (SessionMode(out var sessionNoMap)) { return(sessionNoMap); } return(null); case "3": // core MatchInfo[] fullList = _matchList.Where(i => i.Qq != _myInfo.Qq && i.TargetQq == null && i.Set != null && !i.IsOperating && DateTime.Now - i.LastUse < new TimeSpan(7, 0, 0, 0)).ToArray(); if (fullList.Length == 0) { return(_routeMsg .ToSource("目前没有可匹配的用户,也有可能是可匹配的用户同时在浏览m4m菜单。请等待他人匹配或稍后重试。") .ForceToSend()); } MatchInfo[] canModList = fullList.Where(i => i.Preference.Have(_myInfo.Modes) == 1 && _myInfo.Preference.Have(i.Modes) == 1 && !i.FinishedSet.Contains(_myInfo.SetId) && !_myInfo.FinishedSet.Contains(i.SetId)).ToArray(); if (canModList.Length == 0) { return(_routeMsg .ToSource("目前没有与你情况相符合的用户,请等待他人匹配或稍后重试。") .ForceToSend()); } MatchInfo[] bestList = new MatchInfo[0]; int count = 0; while (bestList.Length == 0 && count < 120) { bestList = canModList.Where(i => Math.Abs(_myInfo.GetPreferanceTotalLength(i) - i.GetPreferanceTotalLength(_myInfo)) < count).ToArray(); count += 10; Thread.Sleep(1); } MatchInfo matchInfo; if (bestList.Length < 1) { SendMessage(_routeMsg .ToSource("目前没有最佳的匹配,继续尝试不佳的匹配吗?\r\n" + "【1】是 【2】否") .ForceToSend() ); CoolQRouteMessage cmContinue = SessionCondition("1", "2"); if (cmContinue.RawMessage == "1") { MatchInfo[] notBestList = new MatchInfo[0]; int c = count; while (notBestList.Length == 0 && c < 10000) { notBestList = canModList.Where(i => Math.Abs(_myInfo.GetPreferanceTotalLength(i) - i.GetPreferanceTotalLength(_myInfo)) < c).ToArray(); c += 50; Thread.Sleep(1); } matchInfo = notBestList[StaticRandom.Next(notBestList.Length)]; } else { return(_routeMsg .ToSource("你已取消操作。请等待他人匹配或稍后重试。") .ForceToSend()); } } else { matchInfo = bestList[StaticRandom.Next(bestList.Length)]; } var data1 = CoolQHttpApiClient.GetStrangerInfo(matchInfo.Qq).Data; var data2 = CoolQHttpApiClient.GetStrangerInfo(_myInfo.Qq).Data; string sub1 = "Ta", sub2 = "Ta"; string nick1 = "玩家", nick2 = "玩家"; if (data1 != null) { if (data1.Sex == "male") { sub1 = "他"; } else if (data1.Sex == "female") { sub1 = "她"; } nick1 = data1.Nickname; } if (data2 != null) { if (data2.Sex == "male") { sub2 = "他"; } else if (data2.Sex == "female") { sub2 = "她"; } nick2 = data2.Nickname; } _myInfo.Start(matchInfo.Qq); matchInfo.Start(_myInfo.Qq); SaveMatchList(); //apply const string tip = "当你选择完成摸图时,对方会收到一条消息确认你的mod,反之亦然。" + "当双方互批完成时,M4M成功结束!\r\n" + "若有疑问,请与对方互相协商。详细情况请使用 \"/m4m\"。"; SendMessage(new CoolQRouteMessage($"{nick2}({_myInfo.Qq}) 与你成功匹配\r\n" + $"{sub2}的地图:{_myInfo.SetUrl}\r\n" + $"{sub2}的备注:{_myInfo.Mark}\r\n" + tip, new CoolQIdentity(matchInfo.Qq, MessageType.Private))); return(_routeMsg .ToSource($"你与{nick1}({matchInfo.Qq}) 成功匹配\r\n" + $"{sub1}的地图:{matchInfo.SetUrl}\r\n" + $"{sub1}的备注:{matchInfo.Mark}\r\n" + tip) .ForceToSend()); default: return(_routeMsg .ToSource("你开始了?走了.jpg") .ForceToSend()); } } catch (TimeoutException) { return(_routeMsg .ToSource("由于长时间未操作,已经自动取消m4m状态。") .ForceToSend()); } } } catch (NotSupportedException) { return(_routeMsg .ToSource("你已在进行m4m状态中。", true) .ForceToSend()); } finally { if (_myInfo != null) { _myInfo.IsOperating = false; SaveMatchList(); //apply } } }