private void _slackClient_OnHello() { _log.Debug("Hello message received"); _slackClient.BindCallback <NewMessage>(OnSlackMessageReceived); _slackClient.BindCallback <Typing>(typing => { }); }
protected MessageHandlerBase(SlackSocketClient client, HandlerContext context, ILogger logger) { Client = client; Context = context; Logger = logger; _retryPolicy = Policy .Handle <RateLimitedException>() .WaitAndRetryAsync( 10, retryAttempt => TimeSpan.FromSeconds(5 * retryAttempt), (_, timeSpan, retry, _) => Logger.LogWarning($"Rate limited exception. Attempt {retry}, Wait {timeSpan}")); Client.BindCallback <NewMessage>(OnMessageReceived); }
public void Start() { LoadConfig(); rand = new Random(); LoadFaces(); haarCascade = new CascadeClassifier(config.classifierFile); client = new SlackSocketClient(config.botToken); checkSocketTimer = new System.Timers.Timer(); checkSocketTimer.Elapsed += CheckSocketConnected; checkSocketTimer.Interval = 10000; // in miliseconds checkSocketTimer.Start(); try { ManualResetEventSlim clientReady = new ManualResetEventSlim(false); ManualResetEventSlim stopClient = new ManualResetEventSlim(false); client.Connect((connected) => { // This is called once the client has emitted the RTM start command clientReady.Set(); Console.WriteLine("Connected!"); }, () => { // This is called once the RTM client has connected to the end point }); clientReady.Wait(); client.OnMessageReceived += OnMessageReceived; client.BindCallback <NewFileSharedMessage>(OnNewFileShared); client.GetChannelList(GetChannelsCallback); var c = client.Channels.Find(x => x.name.Equals("general")); //we listen and post only on the general channel myChannels.Add(c); stopClient.Wait(); } catch (Exception e) { Console.WriteLine("Error: Unable to connect to slack."); } }