示例#1
0
        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("数据获取失败,请稍后再试");
            }
        }
示例#2
0
        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("数据获取失败,请稍后再试");
            }
        }
示例#3
0
        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("本群目前不存在提示信息");
            }
        }
示例#4
0
        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);
        }
示例#5
0
 public static async void Normal(SoraMessage e)
 {
     try
     {
         await e.Reply(Tools.Hitokoto.Get().ToString());
     }
     catch
     {
         await e.Reply("一言获取失败,请稍后再试");
     }
 }
示例#6
0
 public static async void Another(SoraMessage e)
 {
     try
     {
         await e.Reply(Tools.Hitokoto.GetAnother());
     }
     catch
     {
         await e.Reply("毒一言获取失败,请稍后再试");
     }
 }
示例#7
0
        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秒"));
            }
        }
示例#8
0
 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()));
     }
 }
示例#9
0
        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);
            }
        }
示例#10
0
        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} 的更新日志");
            }
        }
示例#11
0
        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);
        }
示例#12
0
 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("数据获取失败,请稍后再试");
     }
 }
示例#13
0
        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("考完啦,放松一下吧");
            }
        }
示例#14
0
        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("未找到存在确诊患者的城市");
            }
        }
示例#15
0
        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("快递详情获取失败,请稍后再试");
            }
        }
示例#16
0
        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("未能成功获取到目标服务器的数据,可能为参数输入错误或目标已离线");
            }
        }
示例#17
0
        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());
        }
示例#18
0
        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());
                }
            }
        }
示例#19
0
        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());
        }
示例#20
0
 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秒"));
 }
示例#21
0
        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());
        }
示例#22
0
 public static async void TimeSpanTest(SoraMessage e, TimeSpan ts)
 => await e.Reply(ts.ToString());
示例#23
0
 public static async void DateTimeTest(SoraMessage e, DateTime dt)
 => await e.Reply(dt.ToString("yyyy年MM月dd日 HH时mm分ss秒"));
示例#24
0
 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秒"));
 }
示例#25
0
 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}");
 }
示例#26
0
 public static async void Normal(SoraMessage e)
 => await e.Reply(DateTime.Now.ToString("yyyy年MM月dd日 HH时mm分ss秒"));
示例#27
0
 public static void GetIllustDetail(SoraMessage e, params int[] ids)
 => GetIllustDetail(ids, async(msg) => await e.ReplyToOriginal(msg), async(msg) => await e.Reply(msg));
示例#28
0
 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}秒");
 }
示例#29
0
        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);
        }
示例#30
0
 public static async void CalcSpeedFromGCD(SoraMessage e, double value)
 => await e.Reply(StatusCalculator.SpeedResult.GetFromGCD25(value).ToString());