public async Task <string> GetManualDiary() { var client = new SlackTaskClient(OAuthAccessToken); var channels = await client.GetChannelListAsync(); var diaryChannel = channels.channels .Where(x => x.name == "diary") .FirstOrDefault(); if (diaryChannel == null) { Console.WriteLine("not found diary channel."); return(null); } var history = await client.GetChannelHistoryAsync(diaryChannel); var yesterday = DateTime.UtcNow.AddDays(-1); var stringBuilder = new StringBuilder(); var targetMessages = history.messages .Where(x => string.IsNullOrEmpty(x.subtype)) .Reverse() .ToArray(); foreach (var targetMessage in targetMessages) { var messageUtc = targetMessage.ts.ToUniversalTime(); if (messageUtc >= yesterday) { stringBuilder.AppendLine("(jst) " + messageUtc.AddHours(9).ToString("yyyy/MM/dd HH:mm:ss")); var lines = targetMessage.text.Split('\n'); foreach (var line in lines) { if (line.StartsWith("<http") && line.EndsWith(">")) { var url = line.TrimStart('<').TrimEnd('>'); stringBuilder.AppendLine(url); } else { stringBuilder.AppendLine(line); } } stringBuilder.AppendLine(); } } return(stringBuilder.ToString()); }
static async Task Main(string[] args) { string TOKEN = Environment.GetEnvironmentVariable("SLACK_TOKEN"); if (String.IsNullOrEmpty(TOKEN)) { throw new Exception("Please provide a SLACK_TOKEN environment variable"); } var dop = Environment.GetEnvironmentVariable("SLACK_MAXDOP"); var dopValue = 1; if (dop != null && Int32.TryParse(dop, out dopValue)) { MAX_DEGREE_OF_PARALLELISM = dopValue; } Console.WriteLine("Parallel processing threads: " + MAX_DEGREE_OF_PARALLELISM); var slackClient = new SlackTaskClient(TOKEN); var list = await slackClient.GetChannelListAsync(); Console.WriteLine("channels: " + list.channels.Count()); var users = await slackClient.GetUserListAsync(); Console.WriteLine("users: " + users.members.Count()); var tasks = new List <Task>(); foreach (var channel in list.channels) { tasks.Add(CheckStuff(slackClient, channel, users)); } await Task.WhenAll(tasks.ToArray()); Console.WriteLine(""); Console.WriteLine("------------------------------------------------------------"); Console.WriteLine(""); var counts = peoples.GroupBy(s => s).OrderByDescending(x => x.Count()); foreach (var cnt in counts) { Console.WriteLine(cnt.Key + ": " + cnt.Count()); } }