public override CommonMessageResponse Message_Received(CommonMessage messageObj) { string osuId = Decode(OsuId); if (string.IsNullOrEmpty(osuId)) { return(new CommonMessageResponse(LoliReply.ParamMissing, messageObj)); } BllUserRole bllUserRole = new BllUserRole(); int userNum = OldSiteApi.GetUser(OsuId, out var userObj); if (userNum == 0) { return(new CommonMessageResponse(LoliReply.IdNotFound, messageObj, true)); } if (userNum > 1) { // ignored } var role = bllUserRole.GetUserRoleByQq(long.Parse(messageObj.UserId)); if (role.Count != 0) { if (role[0].CurrentUname == userObj.username) { return(new CommonMessageResponse("我早就认识你啦.", messageObj, true)); } string msg = role[0].CurrentUname + ",我早就认识你啦. 有什么问题请找Mother Ship(扔锅)"; return(new CommonMessageResponse(msg, messageObj, true)); } var newRole = new TblUserRole { UserId = long.Parse(userObj.user_id), Role = "creep", QQ = long.Parse(messageObj.UserId), LegacyUname = "[]", CurrentUname = userObj.username, IsBanned = false, RepeatCount = 0, SpeakingCount = 0, Mode = 0, }; int c = bllUserRole.InsertUserRole(newRole); return(c < 1 ? new CommonMessageResponse("由于各种强大的原因,绑定失败..", messageObj) : new CommonMessageResponse("明白了," + userObj.username + ",多好的名字呢.", messageObj)); }
public override CommonMessageResponse Message_Received(CommonMessage messageObj) { string id; string uname; if (OsuId == null) { BllUserRole bllUserRole = new BllUserRole(); List <TblUserRole> userInfo = bllUserRole.GetUserRoleByQq(long.Parse(messageObj.UserId)); if (userInfo.Count == 0) { return(new CommonMessageResponse(LoliReply.IdNotBound, messageObj, true)); } id = userInfo[0].UserId.ToString(); uname = userInfo[0].CurrentUname; } else { int userNum = OldSiteApi.GetUser(OsuId, out var userObj); if (userNum == 0) { return(new CommonMessageResponse(LoliReply.IdNotFound, messageObj, true)); } if (userNum > 1) { // ignored } id = userObj.user_id; uname = userObj.username; } var eloInfo = EloApi.GetEloByUid(long.Parse(id)); switch (eloInfo.Result.ToLower()) { case "fail" when eloInfo.Message.ToLower() == "unranked": return(new CommonMessageResponse(uname + "大概没有参加什么mapping赛事..所以没有数据..", messageObj, true)); case "fail": return(new CommonMessageResponse("未知错误..查询不到..", messageObj, true)); default: return(new CommonMessageResponse( $"{eloInfo.User.Name},有elo点{Math.Round(eloInfo.User.Elo, 2)},当前#{eloInfo.User.Ranking}.", messageObj, true)); } }
public override CommonMessageResponse Message_Received(CommonMessage messageObj) { string userName, userId; if (OsuId == null) { BllUserRole bllUserRole = new BllUserRole(); List <TblUserRole> userInfo = bllUserRole.GetUserRoleByQq(long.Parse(messageObj.UserId)); if (userInfo.Count == 0) { return(new CommonMessageResponse(LoliReply.IdNotBound, messageObj, true)); } userId = userInfo[0].UserId.ToString(); userName = userInfo[0].CurrentUname; } else { int userNum = OldSiteApi.GetUser(OsuId, out var userObj); if (userNum == 0) { return(new CommonMessageResponse(LoliReply.IdNotFound, messageObj, true)); } if (userNum > 1) { // ignored } userId = userObj.user_id; userName = userObj.username; } var jsonString = HttpClientUtil.HttpGet("https://syrin.me/pp+/u/" + userId); if (jsonString == null) { return(new CommonMessageResponse("PP+获取超时,请重试…", messageObj, true)); } StringFinder sf = new StringFinder(jsonString); sf.FindNext("<div class=\"performance-table\">", false); sf.FindNext("</div>"); string innerText = sf.Cut().Trim('\n').Trim('\r'); HtmlTable htmlTable = new HtmlTable(innerText); string[,] array = htmlTable.GetArray(); Dictionary <string, int> dValue = new Dictionary <string, int>(); for (var i = 0; i < array.GetLength(0); i++) { for (var j = 0; j < array.GetLength(1); j += 2) { string key = array[i, j].Trim(':').Replace("Aim (", "").Replace(")", ""); int value = int.Parse(array[i, j + 1].Replace(",", "").Trim('p')); dValue.Add(key, value); } } var cqImg = new FileImage(Draw(userName, dValue)).ToString(); return(new CommonMessageResponse(cqImg, messageObj)); }
public override CommonMessageResponse Message_Received(CommonMessage messageObj) { string subId; switch (messageObj.MessageType) { case MessageType.Private: subId = messageObj.UserId; break; case MessageType.Discuss: subId = messageObj.DiscussId; break; case MessageType.Group: default: subId = messageObj.GroupId; break; } if (List) { List <string> subedId = GetSubscribed(messageObj.MessageType, subId).ToList(); subedId.Sort(); int subedCount = subedId.Count; string subject = messageObj.MessageType == MessageType.Private ? "你" : "本群"; return(subedCount == 0 ? new CommonMessageResponse($"{subject}没有订阅任何mapper。", messageObj) : new CommonMessageResponse( string.Format("以下是{0}的订阅名单,共计{1}个:\r\n{2}", subject, subedCount, string.Join("\r\n", OldSiteApi.GetUsernameByUid(subedId))), messageObj)); } if (SubscribeMapper != null) { if (messageObj.MessageType == MessageType.Group && messageObj.PermissionLevel == PermissionLevel.Public) { return(new CommonMessageResponse(LoliReply.AdminOnly + "个人推送请私聊.", messageObj)); } List <string> subedId = GetSubscribed(messageObj.MessageType, subId).ToList(); subedId.Sort(); int subedCount = subedId.Count; if (messageObj.MessageType == MessageType.Private && subedCount >= PrivateMax) { return(new CommonMessageResponse( string.Format("你已经订阅了{0}个mapper啦,人家已经装不下的说:{1}", subedCount, string.Join(", ", OldSiteApi.GetUsernameByUid(subedId))), messageObj)); } if (messageObj.MessageType != MessageType.Private && subedCount >= GroupMax) { return(new CommonMessageResponse( string.Format("这个群已经订阅了{0}个mapper啦,人家已经装不下的说:{1}", subedCount, string.Join(", ", OldSiteApi.GetUsernameByUid(subedId))), messageObj)); } int count = OldSiteApi.GetUser(SubscribeMapper, out var userObj); if (count == 0) { return(new CommonMessageResponse("找不到指定mapper..", messageObj)); } if (count > 1) { return(new CommonMessageResponse($"找到{count}个mapper..", messageObj)); } string mapperId = userObj.user_id; string mapperName = userObj.username; if (!_userDic.ContainsKey(mapperId)) { _userDic.TryAdd(mapperId, new List <UserInfo>()); } if (_userDic[mapperId].Contains(new UserInfo(subId, messageObj.MessageType))) { string subject = messageObj.MessageType == MessageType.Private ? "你" : "本群"; return(new CommonMessageResponse($"{subject}已经订阅过{mapperName}啦..", messageObj)); } _userDic[mapperId].Add(new UserInfo(subId, messageObj.MessageType)); SaveSettings(_userDic, "userDictionary"); string sub = messageObj.MessageType == MessageType.Private ? "私聊提醒你" : "在本群提醒"; return(new CommonMessageResponse($"{mapperName}订阅成功啦!今后他qualified、rank或love或上传图后会主动{sub}。", messageObj)); } if (UnsubscribeMapper != null) { if (messageObj.MessageType == MessageType.Group && messageObj.PermissionLevel == PermissionLevel.Public) { return(new CommonMessageResponse(LoliReply.AdminOnly + "个人推送请私聊.", messageObj)); } int count = OldSiteApi.GetUser(UnsubscribeMapper, out var userObj); if (count == 0) { return(new CommonMessageResponse("找不到指定mapper..", messageObj)); } if (count > 1) { return(new CommonMessageResponse($"找到{count}个mapper..", messageObj)); } string mapperId = userObj.user_id; string mapperName = userObj.username; if (!_userDic.ContainsKey(mapperId) || !_userDic[mapperId].Contains(new UserInfo(subId, messageObj.MessageType))) { string subject = messageObj.MessageType == MessageType.Private ? "你" : "本群"; return(new CommonMessageResponse($"目前这个mapper没有被{subject}订阅..", messageObj)); } _userDic[mapperId].Remove(new UserInfo(subId, messageObj.MessageType)); if (_userDic[mapperId].Count == 0) { _userDic.Remove(mapperId, out _); } SaveSettings(_userDic, "userDictionary"); string sub = messageObj.MessageType == MessageType.Private ? "为你" : "在本群"; return(new CommonMessageResponse($"订阅取消成功,今后不再{sub}推送{mapperName}的有关动态。", messageObj)); } return(new CommonMessageResponse(LoliReply.ParamMissing, messageObj)); }
public override CommonMessageResponse Message_Received(CommonMessage messageObj) { string id; string uname; if (OsuId == null) { BllUserRole bllUserRole = new BllUserRole(); List <TblUserRole> userInfo = bllUserRole.GetUserRoleByQq(long.Parse(messageObj.UserId)); if (userInfo.Count == 0) { return(new CommonMessageResponse(LoliReply.IdNotBound, messageObj, true)); } id = userInfo[0].UserId.ToString(); uname = userInfo[0].CurrentUname; } else { int userNum = OldSiteApi.GetUser(OsuId, out var userObj); if (userNum == 0) { return(new CommonMessageResponse(LoliReply.IdNotFound, messageObj, true)); } if (userNum > 1) { // ignored } id = userObj.user_id; uname = userObj.username; } List <KudosuInfo> totalList = new List <KudosuInfo>(); List <KudosuInfo> tmpList; int page = 0; const int count = 20; do { string json = HttpClientUtil.HttpGet("https://osu.ppy.sh/users/" + id + "/kudosu?offset=" + page + "&limit=" + count); Logger.Debug("GET JSON"); tmpList = JsonConvert.DeserializeObject <List <KudosuInfo> >(json); totalList.AddRange(tmpList); page += count; if (totalList.Count != 0) { continue; } return(new CommonMessageResponse("此人一张图都没摸过……", messageObj, true)); } while (tmpList.Count != 0); List <KdInfo> kdInfoList = new List <KdInfo>(); int pastMonth = -1; KdInfo info = null; totalList.Reverse(); foreach (var item in totalList) { if (item.Created_At.Month != pastMonth) { if (pastMonth != -1) { kdInfoList.Add(info); } info = new KdInfo { Time = item.Created_At }; pastMonth = item.Created_At.Month; } if (info != null) { info.Count++; } } if (info != null) { kdInfoList.Add(info); } var cqImg = new FileImage(Draw(kdInfoList, uname)).ToString(); return(new CommonMessageResponse(cqImg, messageObj)); }