public async Task ReportFlask() { var googleSettings = _config.CurrentValue.GoogleSettings; // gets curent value of GoogleSettings var channel = (SocketTextChannel)_discord.GetGuild(_config.CurrentValue.MyGuildId).GetChannel(_config.CurrentValue.FlaskChannelId); var reportDate = await _googleService.ReadCellAsync(googleSettings.FlaskData.ReportDateAddres); if (DateTime.TryParseExact(reportDate, googleSettings.FlaskData.ReportDateFormat, new CultureInfo("en-US"), DateTimeStyles.None, out var reportDateResoult)) { var flaskData = await _googleService.ReadDataAsync <FlaskModel>(googleSettings.FlaskData.ReportValuesAddres); var sb = new StringBuilder(); sb.AppendLine($"[Ostatnia aktualizacja: {reportDateResoult:dd.MM.yyyy HH:mm}]".Decorate(Decorator.Bold)); if (flaskData.Any(x => x.FlaskCount < 0)) { // build ref string to algin text var strRef = StringExtensions.Empty(flaskData.Where(x => x.FlaskCount < 0).Max(x => x.WowNick.Length) + 6); sb.AppendLine("Poniższe osoby proszone są o uzupełnienie flaszek:"); sb.AppendLine(string.Empty); foreach (var item in flaskData.Where(x => x.FlaskCount < 0).OrderBy(x => x.FlaskCount)) { sb.AppendLine($"{StringExtensions.AlginToRef(item.WowNick, item.FlaskCount.ToString(), strRef).Decorate(Decorator.Inline_code)}\t{_discordContext.MentionId(item.DiscordId)}"); } } var chartResponse = await _httpClient.GetAsync(googleSettings.ReportChartUrl); var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), Guid.NewGuid() + ".png"); await using (var fs = new FileStream(filePath, FileMode.CreateNew)) { await chartResponse.Content.CopyToAsync(fs); } await channel.SendFileAsync(filePath, sb.ToString()); File.Delete(filePath); // cleanup } else { await Context.Channel.SendMessageAsync("Wystąpił problem z bazą flaszek, skontaktuj się z administratorem"); await _logger.WriteLog($"Can't parse DateTime in GooglSheets: {(string.IsNullOrEmpty(reportDate) ? "null" : reportDate)}"); } }