Exemplo n.º 1
0
        public void Connect()
        {
            var wc  = new WebClient();
            var job = JObject.Parse(wc.DownloadString("https://slack.com/api/rtm.start?token=" + Uri.EscapeUriString(Token)));

            if (!job["ok"].Value <bool>())
            {
                Console.WriteLine("couldNt connect");
                return;
            }
            var    wsurl = job["url"].Value <string>();
            var    ws    = new WebSocket(wsurl);
            string id    = job["self"]["id"].Value <string>();

            User = id;

            ws.OnOpen += (sender, e) =>
            {
            };
            ws.OnMessage += (sender, e) =>
            {
                Console.WriteLine(e.Data);
                var json = JObject.Parse(e.Data);
                var a    = json["type"].Value <string>();
                switch (a)
                {
                case "message":
                {
                    var text = JsonConvert.DeserializeObject <RTM.Message>(e.Data);
                    if (text.user == null || text.user == id || text.subtype == "bot_message")
                    {
                        break;
                    }
                    if (text.text.IndexOf(":") != -1)
                    {
                        Task.Run(() =>
                            {
                                ProcessCommand(text)?.Post();
                            });
                    }
                }
                break;

                case "reaction_removed":
                case "reaction_added":
                {
                    OnReaction?.Invoke(this, JsonConvert.DeserializeObject <RTM.Reaction>(e.Data));
                }
                break;
                }
            };

            ws.OnError += (sender, e) =>
            {
            };
            ws.OnClose += (sender, e) =>
            {
            };
            ws.Connect();
        }
Exemplo n.º 2
0
 public void RaiseOnReactionReceived()
 {
     OnReaction?.Invoke(null);
 }