private void _joinedChannel(object sender, SlackChannel channel) { SendMessage(channel, "Oi, eu sou o `" + BotUser.Name + "`." + "Estou aqui para ajudar.\n" + "Para obter a lista de comandos, digite: `<@" + BotId + "|" + BotUser.Name + "> ajuda`"); }
public async Task <SlackMessage> SendMessageAsync(SlackChannel channel, SlackUser user, string text, params SlackAttachment[] attachments) { List <KeyValuePair <string, string> > parameters = new List <KeyValuePair <string, string> >(); parameters.Add(new KeyValuePair <string, string>("channel", channel.Id)); parameters.Add(new KeyValuePair <string, string>("text", text)); parameters.Add(new KeyValuePair <string, string>("as_user", "true")); if (attachments.Length > 0) { parameters.Add(new KeyValuePair <string, string>("attachments", JArray.FromObject(attachments).ToString(Formatting.None))); } var result = await GetApiDataProperty <SlackMessage>(ApiCommands.Message, "message", new string[] { "user", "channel" }, parameters.ToArray()); if (result == default(SlackMessage)) { return(default(SlackMessage)); } result.SetApi(this); result.Timestamp = DateTime.UtcNow; result.Channel = channel; result.User = user; return(result); }
public void Add(SlackChannel channel) { var room = new Room { Id = channel.Id, Name = channel.Name }; _dictionary.AddOrUpdate(channel.Id, room, (k, v) => room); }
public async Task <SlackEphemeral> SendEphemeralAsync(SlackUser user, SlackChannel channel, string text, params SlackAttachment[] attachments) { var result = await GetApiData <SlackEphemeral>(ApiCommands.Ephemeral, null, new KeyValuePair <string, string>("user", user.Id), new KeyValuePair <string, string>("channel", channel.Id), new KeyValuePair <string, string>("text", text)); result.User = user; result.Channel = channel; return(result); }
/// <summary> /// Send a file to the given channel /// </summary> public JObject SendFile(SlackChannel channel, string filePath) { JObject parameters = new JObject { { "channel", channel.Id }, { "filetype", "text" }, { "filename", filePath } }; var retorno = SlackBotAPI.Call(SlackAPICalls.FilesUpload, parameters, filePath); return(retorno); }
/// <summary> /// Send a reaction to some message /// </summary> /// <param name="channel">Slack channel to send the message to</param> /// <param name="message">Message list to be sent. Messages can have slack's formatting</param> /// <param name="reactions">Array of current channel's emojis (without ":") to react</param> public void SendReaction(SlackChannel channel, SlackMessage message, params string[] reactions) { foreach (var reaction in reactions) { JObject parameters = new JObject { { "channel", channel.Id }, { "name", reaction }, { "timestamp", message.TimeStamp } }; SlackBotAPI.Call(SlackAPICalls.ReactionsAdd, parameters); } }
public async Task <IEnumerable <SlackMember> > GetChannelMembers(SlackChannel slackChannel) { var members = (await GetAllTeamMembers()).ToDictionary(x => x.Id, z => z); var memberIds = await _crudChannelMemberService.ListChannelMemberIds(_clientSettings.Token, slackChannel.Id); var result = new List <SlackMember>(memberIds.Count()); foreach (var memberId in memberIds) { result.Add(members[memberId]); } return(result); }
/// <summary> /// Sends each string in a list as a new slack message /// </summary> /// <param name="channel">Slack channel to send the message to</param> /// <param name="message">Message list to be sent. Messages can have slack's formatting</param> public bool SendMessage(SlackChannel channel, IEnumerable <string> messages) { var sucess = true; //Foreach item in the array foreach (var msg in messages) { //Send the message and if it didn't sent, sucess = false if (!SendMessage(channel, msg)) { sucess = false; } } return(sucess); }
public static async Task Create(BotService bot, SlackChannel channel, string taskName, Func <Task> task) { var slack = bot.Slack; var msg = await slack.SendMessage(channel.Id, $"{taskName}..."); try { await Task.Run(task); await msg.Update($":ballot_box_with_check: {taskName} SUCCESS"); } catch (Exception e) { await msg.Update($":ballot_box_with_check: {taskName} FAILURE"); Console.WriteLine(e); } }
/// <summary> /// Sends a message to a given slack channel /// </summary> /// <param name="channel">Slack channel to send the message to</param> /// <param name="message">Message to be sent. It can have slack's formatting</param> public bool SendMessage(SlackChannel channel, string message) { JObject parameters = new JObject { { "channel", channel.Id }, { "text", WebUtility.HtmlDecode(message).Replace('&', 'E') } }; //Adds the current identity to the message parameters = Identity.AddIdentityParameters(parameters); var result = SlackBotAPI.Call(SlackAPICalls.ChatPostMessage, parameters); bool retorno; bool.TryParse(result["ok"].ToString(), out retorno); return(retorno); }
public async Task <SlackMessage> UpdateMessageAsync(SlackChannel channel, string ts, string text, params SlackAttachment[] attachments) { List <KeyValuePair <string, string> > parameters = new List <KeyValuePair <string, string> >(); parameters.Add(new KeyValuePair <string, string>("ts", ts)); parameters.Add(new KeyValuePair <string, string>("channel", channel.Id)); parameters.Add(new KeyValuePair <string, string>("text", text)); parameters.Add(new KeyValuePair <string, string>("as_user", "true")); if (attachments.Length > 0) { parameters.Add(new KeyValuePair <string, string>("attachments", JArray.FromObject(attachments).ToString(Formatting.None))); } var result = await GetApiData <SlackMessage>(ApiCommands.Update, null, parameters.ToArray()); result.Channel = channel; return(result); }
/// <summary> /// Get a channel by giving its id /// </summary> /// <param name="id">A valid channel id</param> public static SlackChannel GetChannelFromId(string id) { var channelType = id[0].ToString().ToLower(); SlackChannel channel = null; if (channelType == "c") { channel = GetChannels().FirstOrDefault(c => c.Id == id); } else if (channelType == "g") { channel = GetGroups().FirstOrDefault(c => c.Id == id); } else if (channelType == "d") { channel = GetIms().FirstOrDefault(c => c.Id == id); } return(channel); }
public async Task StartAsync(CancellationToken cancellationToken) { slackChannel = await slackApi.GetSlackChannelWithName(token, channelName); if (slackChannel == null) { throw new Exception($"Unable to find channel with name: {channelName}"); } var iteration = 1; while (iteration < 31) { var randomValue = random.Next(1, 4); var slackMessage = randomValue switch { 1 => await GetOrCreateMessageCacheEntry(":bug:"), 2 => await GetOrCreateMessageCacheEntry(":poop:"), 3 => await GetOrCreateMessageCacheEntry(":tada:") }; var postTask = randomValue switch { 1 => slackApi.PostInThread(token, slackChannel.Id, slackMessage.ThreadId, $"`{iteration}`"), 2 => slackApi.PostInThread(token, slackChannel.Id, slackMessage.ThreadId, $"`{iteration}`"), 3 => slackApi.PostInThread(token, slackChannel.Id, slackMessage.ThreadId, $"`{iteration}`") }; await postTask; iteration++; await Task.Delay(500); } }
public async Task <SlackMessage> SendMessageAsync(SlackChannel channel, string message, params SlackAttachment[] attachments) { return(await api.SendMessageAsync(channel, BotUser, message, attachments)); }
public UserDataReceivedEventArgs(SlackUser user, SlackChannel channel, SlackTeam team) { User = user; Channel = channel; Team = team; }
protected Task <SlackMessage> SendActionMessageAsync(SlackChannel channel, string message, SlackInteractiveMessage messageData) { return(Slack.SendActionMessage(channel.Name, message, messageData)); }
protected void SendActionMessage(SlackChannel channel, string message, SlackInteractiveMessage messageData) { SendActionMessageAsync(channel, message, messageData); }
protected void SendMessage(SlackChannel channel, string message) { SendMessageAsync(channel, message); }
protected Task <SlackMessage> SendMessageAsync(SlackChannel channel, string message) { return(Slack.SendMessage(channel.Name, message)); }
protected void SendColoredMessage(SlackChannel channel, string message, string colorHex, string title, string description) { SendColoredMessageAsync(channel, message, colorHex, title, description); }
protected Task <SlackMessage> SendColoredMessageAsync(SlackChannel channel, string message, string colorHex, string title, string description) { return(Slack.SendColoredMessage(channel.Name, message, colorHex, title, description)); }
/// <summary> /// Returns a list of users inside an specific channel /// </summary> public IEnumerable <SlackUser> GetUsersFromChannel(SlackChannel channel) { return(GetChannelFromId(channel.Id).Members.Select(GetUserFromId)); }
protected Task <string> SendActionMessageAndWait(SlackChannel channel, string message, SlackInteractiveMessage messageData) { return(Slack.SendActionMessageAndWait(channel.Name, message, messageData)); }
public async Task <SlackResponse> DeleteMessageAsync(SlackChannel channel, string ts) { return(await GetApiData <SlackResponse>(ApiCommands.Delete, null, new KeyValuePair <string, string>("channel", channel.Id), new KeyValuePair <string, string>("ts", ts))); }