Пример #1
0
        public void SendAllPersistentEnemies(GroupID group)
        {
            var enemies = StalkerPool;

            if (!enemies.Any())
            {
                Messenger.SendGroup(group, "目前没有小小黑出现.");
                return;
            }

            var sb = new StringBuilder();

            sb.AppendLine("下面是全太阳系内的小小黑, 快去锤爆?");
            foreach (var enemy in enemies)
            {
                sb.AppendLine(WFFormatter.ToString(enemy));
            }
            Messenger.SendGroup(group, sb.ToString().Trim());
        }
Пример #2
0
        private void CheckPersistentEnemies()
        {
            var enemies = StalkerPool;

            if (!enemies.Any(enemy => enemy.isDiscovered && !sendedStalkerSet.Contains(enemy.lastDiscoveredTime)))
            {
                return;
            }

            var sb = new StringBuilder();

            sb.AppendLine("我看到有小小黑冒头了? 干!");

            foreach (var enemy in enemies.Where(enemy => enemy.isDiscovered && !sendedStalkerSet.Contains(enemy.lastDiscoveredTime)))
            {
                sb.AppendLine(WFFormatter.ToString(enemy));
                sendedStalkerSet.Add(enemy.lastDiscoveredTime);
            }

            Messenger.Broadcast(sb.ToString().Trim());
        }
Пример #3
0
        public async Task <string> SendAllAlerts()
        {
            try
            {
                await UpdateAlertPool();
            }
            catch (OperationCanceledException)
            {
                return("操作超时.");
            }
            var alerts = AlertPool;
            var sb     = new StringBuilder();

            sb.AppendLine("指挥官, 下面是太阳系内所有的警报任务, 供您挑选.");
            foreach (var alert in alerts)
            {
                sb.AppendLine(WFFormatter.ToString(alert));
                sb.AppendLine();
            }

            return(sb.ToString().Trim().AddPlatformInfo());
        }
Пример #4
0
        public async Task <string> SendAllInvasions()
        {
            try
            {
                await UpdateInvasionPool();
            }
            catch (OperationCanceledException)
            {
                return("操作超时.");
            }
            var invasions = InvasionPool;
            var sb        = new StringBuilder();

            sb.AppendLine("指挥官, 下面是太阳系内所有的入侵任务.");
            sb.AppendLine();

            foreach (var invasion in invasions.Where(invasion => !invasion.completed))
            {
                sb.AppendLine(WFFormatter.ToString(invasion));
                sb.AppendLine();
            }

            return(sb.ToString().Trim().AddPlatformInfo());
        }
Пример #5
0
        public void SendWMInfo(string item, GroupID group, bool quickReply, bool isbuyer)
        {
            // 下面 你将要 看到的 是 本项目 最大的  粪山
            // Actually 这粪山挺好用的
            var words = new List <string> {
                "prime", "p", "甲"
            };
            var heads = new List <string> {
                "头部神经光", "头部神经", "头部神", "头部", "头"
            };

            foreach (var word in words)
            {
                foreach (var head in heads)
                {
                    if (!item.Contains("头部神经光元"))
                    {
                        if (item.Contains(word + head))
                        {
                            item = item.Replace(word + head, word + "头部神经光元");
                            break;
                        }
                    }
                }
            }
            var searchword   = translator.TranslateSearchWord(item);
            var formateditem = item;

            if (item == searchword)
            {
                searchword   = translator.TranslateSearchWord(item + "一套");
                formateditem = item + "一套";
                if (formateditem == searchword)
                {
                    searchword   = translator.TranslateSearchWord(item.Replace("p", "prime").Replace("总图", "蓝图"));
                    formateditem = item.Replace("p", "prime").Replace("总图", "蓝图");
                    if (formateditem == searchword)
                    {
                        searchword   = translator.TranslateSearchWord(item.Replace("p", "prime") + "一套");
                        formateditem = item.Replace("p", "prime") + "一套";
                        if (formateditem == searchword)
                        {
                            var sb          = new StringBuilder();
                            var similarlist = translator.GetSimilarItem(item.Format(), "wm");
                            sb.AppendLine($"物品 {item} 不存在或格式错误.");
                            if (similarlist.Any())
                            {
                                sb.AppendLine($"请问这下面有没有你要找的物品呢?(可尝试复制下面的名称来进行搜索)");
                                foreach (var similarresult in similarlist)
                                {
                                    sb.AppendLine($"    {similarresult}");
                                }
                            }


                            sb.AppendLine("注: 这个命令是用来查询 WarframeMarket 上面的物品的, 不是其他什么东西.");
                            Messenger.SendGroup(group, sb.ToString().Trim().AddRemainCallCount(group));
                            return;
                        }
                    }
                }
            }

            var msg = string.Empty;

            if (Config.Instance.NotifyBeforeResult)
            {
                Messenger.SendGroup(group, "好嘞, 等着, 着啥急啊, 这不帮你查呢.");
            }

            var failed = false;

            if (Config.Instance.IsThirdPartyWM)
            {
                try
                {
                    if (isWFA)
                    {
                        var infoEx = GetWMINfoEx(searchword);
                        if (infoEx.orders.Items.Any())
                        {
                            OrderWMInfoEx(infoEx, isbuyer);
                            translator.TranslateWMOrderEx(infoEx, searchword);
                            msg = WFFormatter.ToString(infoEx, quickReply, isbuyer);
                        }
                        else
                        {
                            msg = $"抱歉, WarframeMarket 上目前还没有售卖 {item} 的用户";
                        }
                    }
                    else
                    {
                        msg = "很抱歉, 本机器人没有 WFA 授权, 无法使用第三方 WM, 这很可能是由于错误设置导致的. 请联系机器人负责人.";
                    }
                }
                catch (Exception)
                {
                    Messenger.SendGroup(group, "很抱歉, 在使用第三方 API 时遇到了网络问题. 正在为您转官方 API.");
                    failed = true;
                }
            }

            if (!Config.Instance.IsThirdPartyWM || failed)
            {
                var info = GetWMInfo(searchword);
                if (info.payload.orders.Any())
                {
                    OrderWMInfo(info, isbuyer);
                    translator.TranslateWMOrder(info, searchword);
                    msg = WFFormatter.ToString(info, quickReply, isbuyer);
                }
                else
                {
                    msg = $"抱歉, WarframeMarket 上目前还没有售卖 {item} 的用户";
                }
            }

            if (!quickReply)
            {
                msg = $"{msg}\n\n快捷回复请使用指令 <查询 {item} -QR>";
            }

            if (!isbuyer)
            {
                msg = $"{msg}\n\n查询买家请使用指令 <查询 {item} -B>";
            }

            Messenger.SendGroup(group, msg.AddPlatformInfo().AddRemainCallCount(group));
        }