private IEnumerable <ResponseMessage> HandleUpdateSubscription(IncomingMessage incomingMessage)
    {
        if (
            incomingMessage.RawText.ToLower().StartsWith("updatesubscribe:"))
        {
            var updateJson = incomingMessage.RawText.Substring("updatesubscribe:".Length);
            var update     = JObject.Parse(updateJson).ToObject <UpdateSubscription>();
            update.Id         = Guid.NewGuid().ToString();
            update.WebhookUrl = update.WebhookUrl.Trim('<', '>');
            UpdateSubscriptions.Add(update);
            _jsonStoragePlugin.SaveFile("subscriptions", UpdateSubscriptions.ToArray());
            yield return(incomingMessage.ReplyDirectlyToUser(
                             $"Subscription added with id `{update.Id}` {Environment.NewLine}" +
                             $"You may unsubscribe by sending `updateunsubscribe:{update.Id}` to me in DM"));
        }

        if (
            incomingMessage.RawText.ToLower().StartsWith("updateunsubscribe:"))
        {
            var id    = incomingMessage.RawText.Substring("updateunsubscribe:".Length).Trim();
            var index = UpdateSubscriptions.FindIndex(subscription => subscription.Id == id);
            if (index >= 0)
            {
                UpdateSubscriptions.RemoveAt(index);
                _jsonStoragePlugin.SaveFile("subscriptions", UpdateSubscriptions.ToArray());
                yield return(incomingMessage.ReplyDirectlyToUser($"Subscription removed"));
            }
            else
            {
                yield return(incomingMessage.ReplyDirectlyToUser($"Subscription was not found,"));
            }
        }
    }
Esempio n. 2
0
    private IEnumerable <ResponseMessage> DiscourseSearch(IncomingMessage incomingMessage, IValidHandle validHandle)
    {
        var genericAnswerKeywords = new List <string>()
        {
            "question", "i have a question", "i need help"
        };

        if (genericAnswerKeywords.Contains(incomingMessage.RawText.ToLower()))
        {
            yield return(incomingMessage.IndicateTypingOnChannel());

            _statsPlugin.IncrementState("Helper:BlindlyHelped");
            yield return(incomingMessage.ReplyToChannel(
                             $"Perhaps you should look at https://nbitstack.com/c/btcpayserver and see if there is already an answer for you there, @{incomingMessage.Username}"));
        }

        var discourseSearchKeywords = new List <string>()
        {
            "how can i", "i need help with"
        };

        if (discourseSearchKeywords.Any(s => incomingMessage.RawText.ToLower().StartsWith(s.ToLower())))
        {
            var discourseUrl = "https://nbitstack.com";
            var searchText   = incomingMessage.RawText;
            discourseSearchKeywords.ForEach(s => { searchText = searchText.Replace(s, ""); });
            yield return(incomingMessage.IndicateTypingOnChannel());

            var message = $"Maybe this can help: {discourseUrl}/search?q={Url.Encode(searchText.Trim())}";

            _statsPlugin.IncrementState("RedirectedToDiscourseSearch:Count");
            yield return(incomingMessage.ReplyToChannel(message));
        }


        var bcashKeywords = new List <string>()
        {
            "bcash", "bitcoin cash", "tell me a joke"
        };

        if (bcashKeywords.Contains(incomingMessage.RawText.ToLower()))
        {
            yield return(incomingMessage.IndicateTypingOnChannel());

            _statsPlugin.IncrementState("Jokes:Told");

            yield return(incomingMessage.ReplyToChannel(jokes[_r.Next(0, jokes.Count)].Content));
        }

        if (incomingMessage.RawText.ToLower().StartsWith("addjoke:"))
        {
            var joke = incomingMessage.RawText.Substring("addjoke:".Length);
            jokes.Add(new Joke()
            {
                Content = joke
            });
            _jsonStoragePlugin.SaveFile("jokes", jokes.ToArray());
            yield return(incomingMessage.ReplyDirectlyToUser("joke added!"));
        }
        if (incomingMessage.RawText.ToLower().StartsWith("removejoke:"))
        {
            var joke = incomingMessage.RawText.Substring("removejoke:".Length);
            if (jokes.Any(joke1 => joke == joke1.Content))
            {
                var jokeIndex = jokes.FindIndex(joke1 => joke == joke1.Content);

                jokes.RemoveAt(jokeIndex);
                _jsonStoragePlugin.SaveFile("jokes", jokes.ToArray());
                yield return(incomingMessage.ReplyDirectlyToUser("joke removed!"));
            }
        }
    }