Exemplo n.º 1
0
        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;
            }));
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        /// <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());
            }
        }
Exemplo n.º 4
0
 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);
 }
Exemplo n.º 5
0
        /// <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
            });
        }
Exemplo n.º 6
0
        /// <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);
        }