private static string SubstituteMarkup(string p, Slack instance) { return(Regex.Replace(p, @"<([@#])(.*?)>", (match) => { switch (match.Groups[1].Value) { case "#": var chan = instance.GetChannel(match.Groups[2].Value); if (chan == null) { break; } return "#" + chan.Name; case "@": var user = instance.GetUser(match.Groups[2].Value); if (user == null) { break; } return "@" + user.Name; } return match.Groups[0].Value; })); }
internal void Check(Slack slack) { try { var whosin = Singleton <NetworkData> .Instance.CertainHosts().Select(h => h.Owner).Distinct(); foreach (var item in Notes.ToArray()) { var who = slack.GetUser(item.Who); var name = "@" + who.Name; if (whosin.Contains(name, System.StringComparer.CurrentCultureIgnoreCase)) { var im = slack.Ims.FirstOrDefault(i => i.Name == who.Id); if (im == null) { im = who.OpenIm(); } slack.SendMessage(im.Id, "Reminder: " + item.Text); Notes.Remove(item); } } PersistentSingleton <Reminders> .Dirty(); } catch (Exception c) { Console.WriteLine(c); } }
/// <summary> /// Handles interactive messages. Used for button presses on previews. /// </summary> /// <param name="interactiveMessage"></param> /// <returns></returns> public async Task HandleInteractive(InteractiveMessage interactiveMessage) { if (Slack.ValidInteractiveMessage(interactiveMessage)) { var action = interactiveMessage.Actions[0]; var slackUser = await Slack.GetUser(interactiveMessage.User.Id); if (action.Name == "post") { await Slack.PostMessage(new ChatMessage { Channel = interactiveMessage.Channel.Id, Username = slackUser.Profile.DisplayName, Text = action.Value, IconUrl = slackUser.Profile.ImageOriginal, User = interactiveMessage.User.Id, }); } else if (action.Name == "random") { var url = await ImageSearch(action.Value, true); await SendGif(interactiveMessage.Channel.Id, slackUser.Profile.DisplayName, slackUser.Profile.ImageOriginal, slackUser.Id, action.Value, url); } await Slack.DeleteResponse(interactiveMessage.ResponseUrl.ToString()); } }
public static void Reply(this Message message, Slack Instance, string Text, bool targeted = false) { if (targeted) { Text = string.Format("{1}: {0}", Text, Instance.GetUser(message.User).Name); } Instance.SendMessage(message.Channel, Text); }
/// <summary> /// Sends a spongebobified message to Slack as the user that requested. /// </summary> /// <param name="webhookMessage"></param> /// <seealso cref="Command.HandleMessage(WebhookMessage)"/> /// <returns></returns> protected override async Task HandleMessage(WebhookMessage webhookMessage) { var slackUser = await Slack.GetUser(webhookMessage.UserId); await Slack.PostMessage(new ChatMessage { Channel = webhookMessage.ChannelId, Username = slackUser.Profile.DisplayName, Text = Response(webhookMessage.Text), IconUrl = slackUser.Profile.ImageOriginal }); }
/// <summary> /// Sends a gif to Slack as the user that requested the gif. /// </summary> /// <param name="webhookMessage"></param> /// <seealso cref="Command.HandleMessage(WebhookMessage)"/> /// <returns></returns> protected override async Task HandleMessage(WebhookMessage webhookMessage) { var slackUser = await Slack.GetUser(webhookMessage.UserId); var url = await Response(webhookMessage); await SendGif(webhookMessage.ChannelId, slackUser.Profile.DisplayName, slackUser.Profile.ImageOriginal, webhookMessage.UserId, webhookMessage.Text, url); }