Example #1
0
 public static void Initialize(SlackBotConfiguration config)
 {
     worker = new Thread(() =>
     {
         Worker(config);
     });
     worker.Start();
 }
Example #2
0
        private static void Worker(SlackBotConfiguration config)
        {
            var client = new AmazonSQSClient(
                config.AWSAccessKey, config.AWSAccessSecret,
                Amazon.RegionEndpoint.APNortheast2);

            while (true)
            {
                try
                {
                    var req = new ReceiveMessageRequest();
                    req.QueueUrl = config.SQSUrl;
                    var resp = client.ReceiveMessage(req);

                    foreach (var msg in resp.Messages)
                    {
                        var payload = msg.Body.Split(
                            new string[] { "payload=" }, 2,
                            StringSplitOptions.None)[1];
                        var jobj = JObject.Parse(payload);

                        var key      = jobj["callback_id"].ToString();
                        var selected = jobj["actions"].ToArray()[0]["name"].ToString();

                        if (pendingActions.ContainsKey(key))
                        {
                            pendingActions[key].Invoke(selected);
                            pendingActions.TryRemove(key, out _);
                        }
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }

                Thread.Sleep(1000);
            }
        }