public static async void Normal(SoraMessage e) { try { var h = Library.Roll.Model.HistoryToday.Today(); StringBuilder sb = new(); sb.AppendLine("[" + DateTime.Today.ToString("yyyy-MM-dd") + "]"); sb.Append(h[0].ToString()); for (var i = 1; i < h.Length && i < 50; i++) { sb.AppendLine().Append(h[i].ToString()); } if (h.Length >= 50) { sb.AppendLine().Append("<更多条目已被过滤,如果需要请自行搜索>"); } await e.Reply(sb.ToString()); await e.RemoveCoins(3); } catch { await e.Reply("数据获取失败,请稍后再试"); } }
public static async void Normal(SoraMessage e) { try { var h = Library.Roll.Model.HistoryToday.Today(); StringBuilder sb = new(); sb.AppendLine("[" + DateTime.Today.ToString("yyyy-MM-dd") + "]"); sb.AppendJoin(Environment.NewLine, h); if (h.Length > 30) { var bin = UbuntuPastebin.Paste(sb.ToString(), "text", "Hitsory Today"); await e.ReplyToOriginal(new StringBuilder() .AppendLine("数据过多,请前往以下链接查看") .Append(bin).ToString()); } else { await e.Reply(sb.ToString()); } await e.RemoveCoins(3); await e.UpdateGroupCooldown("historytoday"); } catch { await e.Reply("数据获取失败,请稍后再试"); } }
public static async void TipList(SoraMessage e) { var list = await TipMessageService.GetTipMessages(TipTargetType.QQGroup, e.SourceGroup.Id); if (list.Length > 0) { var sb = new StringBuilder("本群现有的所有的提醒项目:"); foreach (var tip in list) { sb.AppendLine().AppendLine($"[ID:{tip.Id}]"); if (tip.Duplicate) { sb.AppendLine($"下一次提醒时间:{tip.TipTime:yyyy-MM-dd HH:mm:ss}"); sb.AppendLine($"提醒间隔:{tip.Interval.Days}天{tip.Interval.Hours}时{tip.Interval.Minutes}分{tip.Interval.Seconds}秒"); sb.AppendLine($"提醒结束于:{tip.EndTime:yyyy-MM-dd HH:mm:ss}"); } else { sb.AppendLine($"提醒时间:{tip.TipTime:yyyy-MM-dd HH:mm:ss}"); } sb.AppendLine("提醒内容:"); sb.Append(tip.Message); } await e.Reply(sb.ToString()); } else { await e.Reply("本群目前不存在提示信息"); } }
public static async void FHL(SoraMessage e, string _char) { _char = SoraMessage.Escape(_char); if (_char.Length != 1) { await e.ReplyToOriginal("参数错误,请检查后重试"); return; } var result = await Tools.Poem.Search(_char); if (result.Count <= 0) { await e.ReplyToOriginal("没有搜索到任何结果,请检查后重试"); return; } if (result.Count <= 5) { await e.Reply($"带有「{_char}」字的诗句有:" + Environment.NewLine + string.Join(Environment.NewLine, result)); } else { var s = new string[5]; var rand = new Tools.Rand(); for (var i = 0; i < 5; i++) { var id = rand.Int(1, result.Count) - 1; s[i] = result[id]; result.RemoveAt(id); } await e.Reply($"带有「{_char}」字的诗句有(随机选取5句):" + Environment.NewLine + string.Join(Environment.NewLine, s)); } await e.RemoveCoins(2); }
public static async void Normal(SoraMessage e) { try { await e.Reply(Tools.Hitokoto.Get().ToString()); } catch { await e.Reply("一言获取失败,请稍后再试"); } }
public static async void Another(SoraMessage e) { try { await e.Reply(Tools.Hitokoto.GetAnother()); } catch { await e.Reply("毒一言获取失败,请稍后再试"); } }
public static async void NewNewNewBOL(SoraMessage e) { var day = Math.Floor((DateTime.Now.Date - new DateTime(2021, 6, 25, 0, 0, 0)).TotalDays); if (day > 0) { await e.Reply($"当前为新新新北欧历时间:\nxxxx年xx月xx-{day}日 " + DateTime.Now.ToString("HH时mm分ss秒")); } else { await e.Reply($"当前为新新新北欧历时间:\nxxxx年xx月xx日 " + DateTime.Now.ToString("HH时mm分ss秒")); } }
public static async void MoChangeLogs(SoraMessage e, string type) { try { var articles = new ArticleList(type); if (articles.Articles.Count > 0) { await e.Reply(new StringBuilder() .AppendLine(articles.Title) .Append(string.Join(Environment.NewLine, articles.Articles.Select(x => x.Key + Environment.NewLine + " " + x.Value).Take(5))) .ToString()); } else { await e.ReplyToOriginal("无效的类型 (仅支持 beta/release/snapshot)"); } } catch (Exception ex) { await e.ReplyToOriginal(new StringBuilder() .AppendLine("获取文章列表时发生错误") .Append(ex.GetFormatString())); } }
public static async void GetIllustDetail(SoraMessage e, int id) { var detail = await Illust.Get(id); if (detail == null) { await e.ReplyToOriginal("数据获取失败,请稍后再试"); } else { ArrayList msg = new(); foreach (var img in detail.Images) { msg.Add(CQCode.CQImage(ImageUrls.ToPixivCat(img.Medium))); } msg.Add(new StringBuilder().AppendLine() .AppendLine(detail.Title) .AppendLine($"Author: {detail.Author}") .AppendLine(detail.Caption) .AppendLine($"Tags: {string.Join(" | ", detail.Tags)}") .AppendLine($"Publish Date: {detail.CreateDate:yyyy-MM-dd hh:mm:ss}") .AppendLine($"Bookmarks: {detail.TotalBookmarks} Comments:{detail.TotalComments} Views:{detail.TotalView}") .Append(detail.Url) .ToString()); await e.Reply(msg.ToArray()); await e.RemoveCoins(5); } }
public static async void FindMCSnapshot(SoraMessage e, string version) { var vm = Regex.Match(version.Trim(), @"^(?<mainVersion>[^-]+)(?<sub>-(?<subType>pre|rc)(?<subNum>\d+))?$"); var mainVersion = vm.Groups["mainVersion"].Value; var subType = "snapshot"; var subNum = ""; if (vm.Groups["sub"].Success && !string.IsNullOrWhiteSpace(vm.Groups["sub"].Value)) { subType = vm.Groups["subType"].Value; subNum = vm.Groups["subNum"].Value; } string changelog = null; var articles = new ArticleList("snapshot"); var article = articles.Articles.Where(x => x.Key.Contains(mainVersion) && (subType == "snapshot" || ((subType == "pre" ? x.Key.Contains("PRE-RELEASE") : subType == "rc" && x.Key.Contains("Release Candidate")) && x.Key.Contains(subNum)))).FirstOrDefault(); if (!string.IsNullOrEmpty(article.Key)) { changelog = article.Value; } if (!string.IsNullOrEmpty(changelog)) { MoChangeLogsFormat(e, changelog); } else { await e.Reply($"未能查找到 {version} 的更新日志"); } }
static async Task SendGif(SoraMessage e, Image <Rgba32> gif) { var file = Path.GetTempFileName(); SaveGif(gif, file); await e.Reply(CQCode.CQImage(file)); await e.RemoveCoins(5); }
public static async void Normal(SoraMessage e) { try { var h = Library.Roll.Model.Holiday.Recent(); StringBuilder sb = new(); sb.AppendLine("[" + DateTime.Today.ToString("yyyy-MM-dd") + "]"); sb.Append(h[0].ToString()); for (var i = 1; i < h.Length; i++) { sb.AppendLine().Append(h[i].ToString()); } await e.Reply(sb.ToString()); } catch { await e.Reply("数据获取失败,请稍后再试"); } }
public static async void Examination(SoraMessage e) { var day = Math.Floor((new DateTime(2021, 6, 7, 0, 0, 0) - DateTime.Now.Date).TotalDays); if (day > 3) { await e.Reply($"距离高考还有 {day} 天"); } else if (day == 3) { await e.Reply("距离高考还有 3 天,冲冲冲"); } else if (day == 2) { await e.Reply("距离高考还有 2 天,加油啊"); } else if (day == 1) { await e.Reply("明天就开始高考啦,祝你们好运!"); } else if (day < 1 && day > -4) { await e.Reply("已经在高考期间啦,考个好成绩回来哦!"); } else { await e.Reply("考完啦,放松一下吧"); } }
public static async void ChinaDiagnosisCity(SoraMessage e) { var now = DateTime.Now; if ((now - lastUpdated).TotalSeconds >= 60) { if (!Covid19Api.Update()) { await e.ReplyToOriginal("数据获取失败,请稍后再试"); return; } } var chinaData = Covid19Api.InWorld.AreaList.FirstOrDefault(x => x.Name == "中国"); if (default(Covid19DateReport).Equals(chinaData)) { await e.ReplyToOriginal("数据获取失败,请稍后再试"); return; } var cityList = chinaData.Children.Where(x => x.ExistingDiagnosed > 0) .OrderBy(x => x.ExistingDiagnosed) .Select(x => $"{x.Name} - 当前确诊 {x.ExistingDiagnosed} 人"); if (cityList.Any()) { var sb = new StringBuilder(); sb.AppendLine($"以下{cityList.Count()}个城市存在新冠确诊患者:"); sb.AppendJoin(Environment.NewLine, cityList); sb.AppendLine().AppendLine("数据更新时间: " + Covid19Api.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss")); sb.Append("数据来源: ").Append(Covid19Api.ApiHost); await e.Reply(sb.ToString()); } else { await e.Reply("未找到存在确诊患者的城市"); } }
public static async void Normal(SoraMessage e, string id) { try { var info = Library.Roll.Model.Logistics.Get(id); await e.Reply(info.ToString()); await e.RemoveCoins(15); } catch { await e.ReplyToOriginal("快递详情获取失败,请稍后再试"); } }
public static async void ServerStatus(SoraMessage e, string target) { var x = _ServerRegex.Match(target); string host = x.Groups["host"].Value; ushort port = 25565; if (ushort.TryParse(x.Groups["port"].Value, out ushort _port)) { port = _port; } ServerInfo info = new ServerInfo(host, port); await info.StartGetServerInfoAsync(); if (info.State == ServerInfo.StateType.GOOD) { var sb = new StringBuilder(); sb.AppendLine("[Minecraft Server Status]"); sb.AppendLine($"IP: {host}:{port}"); sb.AppendLine($"Version: {info.GameVersion}"); sb.AppendLine($"Players: {info.CurrentPlayerCount} / {info.MaxPlayerCount}"); sb.AppendLine($"Latency: {info.Ping}ms"); sb.AppendLine($"MOTD:").Append(info.MOTD); if (info.IconData != null) { var icon = new MemoryImage(new Bitmap(new MemoryStream(info.IconData))); await e.Reply(CQCode.CQImage(icon.ToBase64File()), Environment.NewLine, sb.ToString()); } else { await e.Reply(sb.ToString()); } } else { await e.ReplyToOriginal("未能成功获取到目标服务器的数据,可能为参数输入错误或目标已离线"); } }
public static async void Normal(SoraMessage e) { var now = DateTime.Now; if ((now - lastUpdated).TotalSeconds >= 60) { if (!Covid19Api.Update()) { await e.ReplyToOriginal("数据获取失败,请稍后再试"); return; } } await e.Reply(Covid19Api.ToString()); }
public static async void Play(SoraMessage e, long id) { var detail = await CloudMusicApi.GetSongDetail(id); if (detail == null) { await e.ReplyToOriginal("曲目信息获取失败"); } else { var url = await CloudMusicApi.GetSongUrl(id, 128000); if (url.Id == detail.Id && url.Id == id) { await e.Reply(CQCode.CQImage(detail.Album.GetPicUrl(512, 512)), new StringBuilder().AppendLine() .AppendLine("♬ " + detail.Name) .AppendLine("✎ " + string.Join(" / ", detail.Artists)) .AppendLine(detail.Url) .Append("√ 曲目链接已解析,正在下载中……") .ToString()); await e.Reply(CQCode.CQRecord(url.Url)); } else { await e.Reply(CQCode.CQImage(detail.Album.GetPicUrl(512, 512)), new StringBuilder().AppendLine() .AppendLine("♬ " + detail.Name) .AppendLine("✎ " + string.Join(" / ", detail.Artists)) .AppendLine(detail.Url) .Append("× 解析曲目链接失败") .ToString()); } } }
public static async void DiagnosisTop10(SoraMessage e) { var now = DateTime.Now; if ((now - lastUpdated).TotalSeconds >= 60) { if (!Covid19Api.Update()) { await e.ReplyToOriginal("数据获取失败,请稍后再试"); return; } } var list = Covid19Api.InWorld.AreaList.Where(x => x.ExistingDiagnosed > 0) .OrderByDescending(x => x.ExistingDiagnosed).Take(10) .Select(x => $"{x.Name} - 当前确诊 {x.ExistingDiagnosed} 人,距昨日 {Utils.ToSignNumberString(x.DifferenceExistingDiagnosed)} 人"); var sb = new StringBuilder(); sb.AppendLine($"新冠严重程度排行前10的国家"); sb.AppendJoin(Environment.NewLine, list); sb.AppendLine().AppendLine("数据更新时间: " + Covid19Api.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss")); sb.Append("数据来源: ").Append(Covid19Api.ApiHost); await e.Reply(sb.ToString()); }
public static async void BOL(SoraMessage e) { var day = Math.Floor((DateTime.Now.Date - new DateTime(2019, 8, 1, 0, 0, 0)).TotalDays) + 1; await e.Reply($"当前为北欧历时间:\n2019年08月{day,2}日 " + DateTime.Now.ToString("HH时mm分ss秒")); }
public static async void Info(SoraMessage e) { var sb = new StringBuilder(); #region QQ { sb.AppendLine("[Tencent QQ]"); if (e.IsGroupMessage) { sb.Append($"{e.GroupSenderInfo.Card}({e.Sender.Id})"); } else { sb.Append($"{e.PrivateSenderInfo.Nick}({e.Sender.Id})"); } } #endregion var t = await Database.Data.Table <UserData>().ToListAsync(); var data = t.Where(x => x.QQ == e.Sender.Id).FirstOrDefault(); if (data != null) { #region Discord { sb.AppendLine(); sb.AppendLine("[Discord]"); if (data.Discord != 0) { sb.Append("ID:" + data.Discord); } else { sb.Append("未绑定Discord账户"); } } #endregion #region Bilibili { sb.AppendLine(); sb.AppendLine("[Bilibili]"); if (data.BilibiliCookie != null) { try { var info = new Library.Bilibili.Model.MyUserInfo(data.BilibiliCookie); var birth = string.IsNullOrWhiteSpace(info.Birth) ? "保密" : info.Birth; sb.Append($"{info.Name} (UID:{info.Id}) Lv{info.Level}" + "\n" + $"性别:{info.Sex} 生日:{birth} 关注:{info.Following} 粉丝:{info.Follower}" + "\n" + info.Sign); } catch (Exception ex) { sb.Append("获取用户信息时发生错误:" + ex.Message); } } else { sb.Append("未登录B站账户"); } } #endregion } await e.Reply(sb.ToString()); }
public static async void TimeSpanTest(SoraMessage e, TimeSpan ts) => await e.Reply(ts.ToString());
public static async void DateTimeTest(SoraMessage e, DateTime dt) => await e.Reply(dt.ToString("yyyy年MM月dd日 HH时mm分ss秒"));
public static async void NewBOL(SoraMessage e) { var day = Math.Floor((DateTime.Now - new DateTime(2020, 6, 1, 0, 0, 0)).TotalDays) + 1; await e.Reply($"当前为新北欧历时间:\n2020年06月{day,2}日 " + DateTime.Now.ToString("HH时mm分ss秒")); }
public static async void ET(SoraMessage e) { long unix = DateTimeOffset.FromUnixTimeSeconds(Utils.GetNetworkTimeStamp()).ToUniversalTime().ToUnixTimeSeconds(); await e.Reply($"当前为艾欧泽亚时间:ET {GetEorzeaHour(unix),2:D2}:{GetEorzeaMinute(unix),2:D2}"); }
public static async void Normal(SoraMessage e) => await e.Reply(DateTime.Now.ToString("yyyy年MM月dd日 HH时mm分ss秒"));
public static void GetIllustDetail(SoraMessage e, params int[] ids) => GetIllustDetail(ids, async(msg) => await e.ReplyToOriginal(msg), async(msg) => await e.Reply(msg));
public static async void ShouSi(SoraMessage e) { var date = ShouSiDate.Now; await e.Reply($"当前为寿司历时间:\n{(date.Year == 1 ? "元" : date.Year.ToString("D2"))}年{date.Month:D2}月{date.Day:D2}日 {date.TimeOfDay.Hours:D2}时{date.TimeOfDay.Minutes:D2}分{date.TimeOfDay.Seconds:D2}秒"); }
public static async void Normal(SoraMessage e, string line1, string line2) { await e.Reply(CQCode.CQImage($"https://api.akiraxie.me/5000choyen?upper={Utils.UrlEncode(line1)}&lower={Utils.UrlEncode(line2)}")); await e.RemoveCoins(1); }
public static async void CalcSpeedFromGCD(SoraMessage e, double value) => await e.Reply(StatusCalculator.SpeedResult.GetFromGCD25(value).ToString());