コード例 #1
0
ファイル: GachaHandler.cs プロジェクト: SofiaXu/Rimirin
        public async void DoHandleAsync(MiraiHttpSession session, IMessageBase[] chain, IBaseInfo info, bool isGroupMessage = true)
        {
            List <IMessageBase> result = null;
            IMessageBase        img    = null;

            sb.Clear();
            switch (chain.First(m => m.Type == "Plain").ToString())
            {
            case "单抽":
                logger.LogInformation($"{info.Name} 单抽");
                var card = await GachaSingle();

                var message = $"单抽结果: {stars[card.Item2.Rarity]} {data.Characters[card.Item2.CharacterId.ToString()].CharacterName[0]} - {card.Item2.Prefix[0]}";
                img = await session.UploadPictureAsync(UploadTarget.Group, await client.GetCardThumbPath(card.Item2.ResourceSetName, card.Item1));

                result = new List <IMessageBase>
                {
                    new PlainMessage(message),
                    img
                };
                logger.LogInformation(message);
                break;

            case "当期池子":
                GachaDetail gd        = GetRecentGachaDetail();
                DateTime    endTime   = DateTimeOffset.FromUnixTimeMilliseconds(long.Parse(gd.ClosedAt[0])).LocalDateTime;
                DateTime    startTime = DateTimeOffset.FromUnixTimeMilliseconds(long.Parse(gd.PublishedAt[0])).LocalDateTime;
                sb.AppendLine(gd.GachaName[0]);
                sb.AppendLine(gd.Information.NewMemberInfo[0]);
                sb.AppendLine($"{startTime} - {endTime}");
                img = await session.UploadPictureAsync(UploadTarget.Group, await client.GetGachaBannerImagePath(gd.BannerAssetBundleName));

                result = new List <IMessageBase>
                {
                    new PlainMessage(sb.ToString()),
                    img
                };
                logger.LogInformation(sb.ToString());
                break;

            case "十连":
                List <(string, Card)> cards = new List <(string, Card)>(11);
                for (int i = 0; i < 9; i++)
                {
                    cards.Add(await GachaSingle());
                }
                cards.Add(await GachaSingle(tenTimes: true));
                img = await session.UploadPictureAsync(UploadTarget.Group, await render.RenderGachaImageAsync(cards));

                sb.AppendLine("十连结果:");
                foreach (var item in cards)
                {
                    sb.AppendLine($"{stars[item.Item2.Rarity]} {data.Characters[item.Item2.CharacterId.ToString()].CharacterName[0]} - {item.Item2.Prefix[0]}");
                }
                result = new List <IMessageBase>
                {
                    new PlainMessage(sb.ToString()),
                    img
                };
                logger.LogInformation(sb.ToString());
                break;

            default:
                break;
            }
            if (isGroupMessage)
            {
                await session.SendGroupMessageAsync(((IGroupMemberInfo)info).Group.Id, result.ToArray());
            }
            else
            {
                await session.SendFriendMessageAsync(info.Id, result.ToArray());
            }
        }