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());
        }
Esempio n. 2
0
        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());
            }
        }