Exemplo n.º 1
0
        public async Task KillBlackSheepAsync(long groupId, long userId, Message message)
        {
            var plainPicturePath = _configuration["Pcr:ClanBattle:KillBlackSheep:PlainPath"];
            var battleYear       = _configuration["Pcr:ClanBattle:KillBlackSheep:BattleYear"] ?? string.Empty;
            var battleMonth      = _configuration["Pcr:ClanBattle:KillBlackSheep:BattleMonth"] ?? string.Empty;
            var battleName       = _configuration["Pcr:ClanBattle:KillBlackSheep:BattleName"] ?? string.Empty;

            if (string.IsNullOrWhiteSpace(plainPicturePath) || !File.Exists(plainPicturePath))
            {
                await _messageSender.SendGroupAsync(groupId,
                                                    new SimpleMessage("配置Pcr:ClanBattle:KillBlackSheep:PlainPath为空或者文件不存在!"));

                return;
            }

            if (message is IUnionMessage unionMessage)
            {
                var atUser = 0L;
                foreach (var mes in unionMessage.Messages)
                {
                    if (mes is IAtMessage atMessage && !atMessage.AtAll)
                    {
                        atUser = atMessage.Content;
                    }
                }

                if (atUser == 0)
                {
                    await _messageSender.SendGroupAsync(groupId,
                                                        new SimpleMessage("要鲨哪个内鬼?"));

                    return;
                }

                var http = new HttpClient();
                http.DefaultRequestHeaders.UserAgent.ParseAdd(
                    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 Edg/83.0.478.58");
                var response = await http.GetAsync($"http://q.qlogo.cn/headimg_dl?dst_uin={atUser}&spec=640");

                var avatar   = response.Content.ReadAsByteArrayAsync();
                var plain    = File.ReadAllBytesAsync(plainPicturePath);
                var name     = _messageProvider.GetGroupUserNameAsync(groupId, atUser);
                var clanName = _messageProvider.GetGroupNameAsync(groupId);
                var fileName = Path.Combine(Environment.CurrentDirectory, "temp", $"{Guid.NewGuid()}.jpg");
                await using var stream = new FileStream(fileName, FileMode.Create);
                await GenerateKilledPicture.GenerateKilledPictureAsync(battleYear, battleMonth, await plain,
                                                                       await avatar, battleName, await name,
                                                                       await clanName, "成为头号内鬼", stream);

                await stream.FlushAsync();

                await _messageSender.SendGroupAsync(groupId,
                                                    new LocalPictureMessage(fileName));
            }
            else
            {
                await _messageSender.SendGroupAsync(groupId,
                                                    new SimpleMessage("要鲨哪个内鬼?"));
            }
        }