Example #1
0
        public override bool Connect()
        {
            var clientReady = new SemaphoreSlim(0);
            var socketReady = new SemaphoreSlim(0);

            socketClient = new SlackSocketClient(Configuration.Password);
            socketClient.Connect(connected =>
            {
                clientReady.Release();
            }, () =>
            {
                socketReady.Release();
            });
            socketClient.OnMessageReceived += MessageReceivedCallback;

            if (!Task.WaitAll(new[] { clientReady.WaitAsync(), socketReady.WaitAsync() }, TimeSpan.FromSeconds(10)))
            {
                return(false);
            }
            Channels = socketClient.Channels.Select(ToChatChannel)
                       .Concat(socketClient.Groups.Select(ToChatChannel))
                       .Concat(socketClient.DirectMessages.Select(ToChatChannel))
                       .ToList();

            activityTimer = new Timer(state => socketClient.SendPresence(Presence.active), null, TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(5));
            return(true);
        }