Ejemplo n.º 1
0
    public override void Execute(IEnumerable <String> arguments)
    {
        if (!arguments.Any())
        {
            base.Execute(arguments);
            return;
        }

        if (!Int32.TryParse(arguments.First(), out Int32 height))
        {
            Writer.WriteLine($"Pyramid height of \"{arguments.First()}\" must be an integer");
            return;
        }


        IEnumerable <String> pyramidBlockArguments = arguments.Skip(1);

        if (!pyramidBlockArguments.Any())
        {
            Writer.WriteLine("Pyramid block not supplied.");
            return;
        }

        String pyramidBlock = String.Join(' ', pyramidBlockArguments);

        var pyramid = PyramidBuilder.Get(pyramidBlock, height);

        foreach (var line in pyramid)
        {
            TwitchClientManager.SpoolMessage(line);
        }
    }
Ejemplo n.º 2
0
 public void Client_OnMessageReceived(Object sender, OnMessageReceivedArgs e)
 {
     if (UsersToPogO.Contains(e.ChatMessage.Username))
     {
         TwitchClientManager.SpoolMessage($"@{e.ChatMessage.DisplayName} PogO");
     }
 }
Ejemplo n.º 3
0
        public override void Execute(IEnumerable <String> arguments)
        {
            Char userTypeString = arguments.FirstOrDefault()?.ToLower()[0] ?? default;

            var userType = userTypeString switch
            {
                'm' => UserType.Moderator,
                'v' => UserType.VIP,
                _ => UserType.Viewer,
            };

            // Remove user type parameter from message.
            if (userType != UserType.Viewer)
            {
                arguments = arguments.Skip(1);
            }

            var chatters = Api
                           .Undocumented
                           .GetChattersAsync(TwitchClientManager.PrimaryChannelName)
                           .Result
                           .Where(user => user.UserType >= userType);

            var message = " " + String.Join(' ', arguments);

            foreach (var user in chatters)
            {
                TwitchClientManager.SpoolMessage(TwitchClientManager.PrimaryChannelName, user.Username + message);
            }
            ;
        }
Ejemplo n.º 4
0
        private void TwitchClient_OnMessageReceived(Object sender, OnMessageReceivedArgs e)
        {
            if (e.ChatMessage.Channel != ListenChannel)
            {
                return;
            }
            if (e.ChatMessage.Username != ListenUsername)
            {
                return;
            }

            String translatedText = NodeService.InvokeFromStringAsync <String>(
                moduleString: JavaScript.Translate,
                args: e.ChatMessage.Message.Split(' ').ToArray()).Result;

            if (translatedText != null)
            {
                if (translatedText == e.ChatMessage.Message)
                {
                    TwitchClientManager.SpoolMessage($"TearChub New {ListenUsername} message in {ListenChannel}'s chat!");
                    TwitchClientManager.SpoolMessage("Message: " + e.ChatMessage.Message);
                }
                else
                {
                    TwitchClientManager.SpoolMessage($"TearChub New non-english {ListenUsername} message in {ListenChannel}'s chat!");
                    TwitchClientManager.SpoolMessage("Original message: " + e.ChatMessage.Message);
                    TwitchClientManager.SpoolMessage("Translated message: " + translatedText);
                    String replacedMessage = e.ChatMessage.Message.Replace(" ", "%20");
                    TwitchClientManager.SpoolMessage("View on google translate: https://translate.google.com/?um=1&ie=UTF-8&hl=en&client=tw-ob#view=home&op=translate&sl=zh-CN&tl=en&text=" + replacedMessage);
                }
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Notify when a pyramid has been broken.
        /// </summary>
        private void SpoolPyramidFailedMessage(String userThatBrokePyramid)
        {
            // Only send message on relavant pyramids to avoid false positives.
            if (Pyramid.TallestHeight < MinimumRelevantPyramidHeight)
            {
                return;
            }

            if (Pyramid.ContributorDisplayNames.Contains(userThatBrokePyramid))
            {
                if (Pyramid.ContributorDisplayNames.Count == 1)
                {
                    // User broke their own pyramid.
                    TwitchClientManager.SpoolMessage($"@{userThatBrokePyramid} You just ruined your own {Pyramid.TallestHeight}-story tall {Pyramid.Block} pyramid. Sadge");
                }
                else
                {
                    // User broke co-operative pyramid.
                    TwitchClientManager.SpoolMessage($"@{userThatBrokePyramid} Imagine working with @{String.Join(", @", Pyramid.ContributorDisplayNames.Where(name => !name.Equals(userThatBrokePyramid, StringComparison.OrdinalIgnoreCase)))} to build a {Pyramid.TallestHeight}-story tall {Pyramid.Block} pyramid and then ruining it. 4WeirdW");
                }
            }
            else
            {
                // User broke someone else's pyramid.
                TwitchClientManager.SpoolMessage($"@{userThatBrokePyramid} Nice job ruining the {Pyramid.TallestHeight}-story {Pyramid.Block} tall pyramid built by @{String.Join(", @", Pyramid.ContributorDisplayNames)}. PogO");
            }
        }
Ejemplo n.º 6
0
        public override void Invoke(Object sender, OnUserCommandReceivedArgs e)
        {
            switch (e.Words.Length)
            {
            case 0:
                TwitchClientManager.SpoolMessage(e.ChatMessage.Channel, $"{e.ChatMessage.DisplayName} {GetRandom(0, 100)}");
                break;

            case 1:
                TwitchClientManager.SpoolMessage(
                    e.ChatMessage.Channel,
                    $"{e.ChatMessage.DisplayName} You must include a minimum and maximum integer",
                    Priority.Low);
                break;

            default:
                if (!Int32.TryParse(e.Words[0], out Int32 min) || !Int32.TryParse(e.Words[1], out Int32 max))
                {
                    TwitchClientManager.SpoolMessage(
                        e.ChatMessage.Channel,
                        $"The minimum and maximum values must be integers",
                        Priority.Low);
                    break;
                }
                TwitchClientManager.SpoolMessage(e.ChatMessage.Channel, $"{e.ChatMessage.DisplayName} {GetRandom(min, max)}");
                break;
            }
        }
Ejemplo n.º 7
0
        public async override void Invoke(Object sender, OnUserCommandReceivedArgs e)
        {
            if (!e.Words.Any() || !e.Words.First().Equals(e.ChatMessage.Username, StringComparison.OrdinalIgnoreCase))
            {
                TwitchClientManager.SpoolMessageAsMe(e.ChatMessage.Channel, $"{e.ChatMessage.DisplayName} I cannot join other users' channels for you.");
                return;
            }

            using var context = ContextFactory.GetContext();

            // Users can only add their own channel
            var channelFound = context.StartupChannels.FirstOrDefault(x => x.UserID == e.ChatMessage.UserId);

            String outputMessage;

            if (channelFound == null)
            {
                if (context.StartupChannels.Count() >= MaximumChannelsToJoin)
                {
                    outputMessage = $"{e.ChatMessage.DisplayName} I have reached the maximum number of channels to join and could not join your channel.";
                }
                else
                {
                    // Add new channel.
                    context.StartupChannels.Add(new StartupChannel()
                    {
                        UserID      = e.ChatMessage.UserId,
                        DisplayName = e.ChatMessage.DisplayName
                    });

                    outputMessage = $"{e.ChatMessage.DisplayName} I have now joined your channel.";
                }
            }
            else
            {
                // Update the display name
                channelFound.DisplayName = e.ChatMessage.DisplayName;

                if (channelFound.DisplayName == e.ChatMessage.DisplayName)
                {
                    outputMessage = $"{e.ChatMessage.DisplayName} I have already joined your channel.";
                }
                else
                {
                    outputMessage = $"{e.ChatMessage.DisplayName} I have already joined your channel. Updated user name.";
                }

                // Update the display name
                channelFound.DisplayName = e.ChatMessage.DisplayName;
            }


            var task = context.SaveChangesAsync();

            TwitchClientManager.Client.JoinChannel(e.ChatMessage.Username);

            TwitchClientManager.SpoolMessageAsMe(e.ChatMessage.Channel, outputMessage);

            await task;
        }
Ejemplo n.º 8
0
        public async override void Invoke(Object sender, OnUserCommandReceivedArgs e)
        {
            if (!e.Words.Any() || !e.Words.First().Equals(e.ChatMessage.Username, StringComparison.OrdinalIgnoreCase))
            {
                TwitchClientManager.SpoolMessageAsMe(e.ChatMessage.Channel, $"{e.ChatMessage.DisplayName} I cannot leave other users' channels for you.");
                return;
            }

            var context = ContextFactory.GetContext();

            // Users can only leave their own channel.
            var channelFound = context.StartupChannels.FirstOrDefault(x => x.UserID == e.ChatMessage.UserId);

            Task <Int32> task = null;

            if (channelFound is not null)
            {
                context.StartupChannels.Remove(channelFound);
                task = context.SaveChangesAsync();
            }

            TwitchClientManager.Client.LeaveChannel(e.ChatMessage.Username);

            TwitchClientManager.SpoolMessageAsMe(e.ChatMessage.Channel, $"{e.ChatMessage.DisplayName} I have left your channel");

            if (task is not null)
            {
                await task;
            }
        }
Ejemplo n.º 9
0
        /// <summary>Dank memes are cool</summary>
        /// <example></example>
        /// <param name="arguments"></param>
        public override void Execute(IEnumerable <String> arguments)
        {
            String surroundingEmote = arguments.FirstOrDefault() ?? "yyjW";

            TwitchClientManager.SpoolMessage($"{surroundingEmote} {surroundingEmote} {surroundingEmote} {surroundingEmote}");
            TwitchClientManager.SpoolMessage($"{surroundingEmote} yyj1 yyj2 {surroundingEmote}");
            TwitchClientManager.SpoolMessage($"{surroundingEmote} yyj3 yyj4 {surroundingEmote}");
            TwitchClientManager.SpoolMessage($"{surroundingEmote} {surroundingEmote} {surroundingEmote} {surroundingEmote}");
        }
Ejemplo n.º 10
0
        public override void Invoke(Object sender, OnUserCommandReceivedArgs e)
        {
            String translatedText = NodeService.InvokeFromStringAsync <String>(moduleString: JavaScript.Translate, args: e.Words).Result;

            if (translatedText is not null)
            {
                TwitchClientManager.SpoolMessage(translatedText);
            }
        }
Ejemplo n.º 11
0
        private void TwitchClient_OnUserJoined(Object sender, OnUserJoinedArgs e)
        {
            // Don't count self
            if (e.Username.Equals(TwitchClientManager.Name.Value, StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            TwitchClientManager.SpoolMessage($"@{e.Username} {Greeting} {(CurrentMode == Mode.Wholesome ? Compliments.GetCompliment() : String.Empty)}");
        }
Ejemplo n.º 12
0
 private void SpoolSuccessMessage()
 {
     if (Contributors.Count == 1)
     {
         TwitchClientManager.SpoolMessage($"@{Contributors.Single()} Nice {Border} jimbox! peepoClap");
     }
     else
     {
         TwitchClientManager.SpoolMessage($"@{String.Join(", @", Contributors)} Nice {Border} jimbox! Hooray teamwork! peepoClap");
     }
 }
Ejemplo n.º 13
0
 private void SpoolPyramidSuccessMessage()
 {
     if (Pyramid.ContributorDisplayNames.Count == 1)
     {
         TwitchClientManager.SpoolMessage($"@{Pyramid.ContributorDisplayNames.Single()} Nice {Pyramid.TallestHeight}-story tall {Pyramid.Block} pyramid! peepoClap");
     }
     else
     {
         TwitchClientManager.SpoolMessage($"@{String.Join(", @", Pyramid.ContributorDisplayNames)} Nice {Pyramid.TallestHeight}-story tall {Pyramid.Block} pyramid! Hooray teamwork! peepoClap");
     }
 }
Ejemplo n.º 14
0
        public override void Execute(IEnumerable <String> arguments)
        {
            base.Execute(arguments);

            if (IsEnabled)
            {
                TwitchClientManager.EnsureJoinedToChannel(Channel);
            }

            Repeater.IsRunning = IsEnabled;
        }
Ejemplo n.º 15
0
        private void Client_OnMessageReceived(Object sender, OnMessageReceivedArgs e)
        {
            if (ShouldIgnore(e.ChatMessage))
            {
                PreviousMessages.Enqueue(null);
            }
            else if (OnCooldown)
            {
                MessageCooldownTracker++;
                if (MessageCooldownTracker > MessageCooldownCount)
                {
                    OnCooldown             = false;
                    MessageCooldownTracker = 0;
                }
            }
            else
            {
                PreviousMessages.Enqueue(e.ChatMessage.Message);
            }


            if (PreviousMessages.Count >= MessageSampleCount)
            {
                // Get the most common message from the last GeneralMessageCount
                // number of messages, as long as there is more than one
                // duplicate of it.
                if (TryGetMessageToSend(out String message))
                {
                    TwitchClientManager.SpoolMessage(message);
                    OnCooldown = true;
                }

                // Empty the last messages, whether one was sent or not to
                // avoid copying old messages.
                PreviousMessages.Clear();
            }
            else if (SpamMessageSampleCounts.Any(count => PreviousMessages.Count >= count))
            {
                // Get the most common message from the last SpamMessageCount
                // number of messages, as long as there is more than one
                // duplicate of it.
                if (TryGetMessageToSend(out String message))
                {
                    TwitchClientManager.SpoolMessage(message);
                    // Empty the last messages, if one was sent.
                    PreviousMessages.Clear();
                    OnCooldown = true;
                }
            }
        }
Ejemplo n.º 16
0
    public override void Invoke(Object sender, OnUserCommandReceivedArgs e)
    {
        if (e.Words.Length < 2)
        {
            TwitchClientManager.SpoolMessage(e.ChatMessage.DisplayName + " Usage: !pyramid <size> <text>", Priority.Low);
            return;
        }

        if (!Int32.TryParse(e.Words[0], out Int32 height) || height < 1)
        {
            TwitchClientManager.SpoolMessage($"{e.ChatMessage.DisplayName} Pyramid height of \"{e.Words[0]}\" must be a positive integer");
        }

        IEnumerable <String> pyramidBlockArguments = e.Words[1..];
Ejemplo n.º 17
0
        public override void Invoke(Object sender, OnUserCommandReceivedArgs e)
        {
            var request = String.Join(' ', e.Words);

            var result = WolframAlpha.Query(request);

            if (result.Success)
            {
                var pod = result.Pods.FirstOrDefault(pod => pod.Title == "Result" || pod.Title == "Wikipedia summary");

                if (pod != null && pod.SubPods != null)
                {
                    StringBuilder messageBuilder = new();

                    messageBuilder.Append(e.ChatMessage.DisplayName);
                    messageBuilder.Append(' ');

                    if (pod.Title == "Result")
                    {
                        foreach (var subpod in pod.SubPods)
                        {
                            messageBuilder.Append(subpod.Plaintext);
                        }
                    }
                    else
                    {
                        StringBuilder wikipediaEntryBuilder = new();
                        foreach (var subpod in pod.SubPods)
                        {
                            wikipediaEntryBuilder.Append(subpod.Plaintext);
                            wikipediaEntryBuilder.Append(' ');
                        }

                        var match = FirstSentenceRegex.Match(wikipediaEntryBuilder.ToString());

                        if (match.Success)
                        {
                            messageBuilder.Append(match.Value);
                        }
                    }

                    TwitchClientManager.SpoolMessage(messageBuilder.ToString());
                }
            }
            else
            {
                TwitchClientManager.SpoolMessage(e.ChatMessage.DisplayName + " Could not query WolframAlpha successfully.");
            }
        }
Ejemplo n.º 18
0
        public override void Execute(IEnumerable <String> arguments)
        {
            if (!arguments.Any())
            {
                Console.WriteLine(GetHelp());
                return;
            }

            var permutations = arguments.First().GetPermutations();

            foreach (var permutation in permutations)
            {
                TwitchClientManager.SpoolMessage(permutation);
            }
        }
Ejemplo n.º 19
0
        protected UsingTwitchClientManager()
        {
            TwitchUsername = Guid.NewGuid().ToString();
            TwitchOAuth    = Guid.NewGuid().ToString();

            PrimaryChannelName = Name.From("p");

            MockedBot = new();
            MockedApplicationContextFactory = new();
            MockedApplicationContext        = new();
            MockedTwitchClientFactory       = new();
            MockedTwitchClient       = new();
            MockedCredentialsManager = new();
            MockedSpinWait           = new();
            MockedThreadService      = new();
            MockedDateTimeService    = new();
            ApplicationCredentials   = new();
            ConnectionCredentials    = new(TwitchUsername, TwitchOAuth, disableUsernameCheck : true);
            LoginCredentials         = new(ConnectionCredentials, true, PrimaryChannelName);
            MockedWriter             = new();

            Sut = new TwitchClientManager(
                MockedApplicationContextFactory.Object,
                MockedTwitchClientFactory.Object,
                MockedCredentialsManager.Object,
                MockedSpinWait.Object,
                MockedThreadService.Object,
                MockedDateTimeService.Object,
                MockedWriter.Object);

            MockedTwitchClientFactory
            .Setup(x => x.CreateClient(It.IsAny <IClientOptions>()))
            .Returns(MockedTwitchClient.Object);

            var credentials = LoginCredentials;

            MockedCredentialsManager
            .Setup(x => x.TryUpdateLoginCredentials(It.IsAny <LoginCredentials>(), out credentials))
            .Returns(true);

            MockedCredentialsManager
            .Setup(x => x.ApplicationCredentials)
            .Returns(ApplicationCredentials);

            MockedApplicationContextFactory
            .Setup(x => x.GetContext())
            .Returns(MockedApplicationContext.Object);
        }
Ejemplo n.º 20
0
        public LoginCredentials Initialize(LoginCredentials credentials)
        {
            credentials = TwitchClientManager.TryInitializeTwitchClient(this, credentials: credentials);

            if (credentials == null)
            {
                return(null);
            }

            if (!TwitchClientManager.TryJoinInitialChannels())
            {
                return(null);
            }

            return(credentials);
        }
Ejemplo n.º 21
0
        public LoginCredentials Start(
            IClientOptions clientOptions = null,
            LoginCredentials credentials = null)
        {
            IReadOnlyList <JoinedChannel> previouslyJoinedChannels = TwitchClientManager.Client?.JoinedChannels;

            LoginCredentials = TwitchClientManager.TryInitializeTwitchClient(this, clientOptions, credentials);
            if (LoginCredentials is not null && TwitchClientManager.TryJoinInitialChannels(previouslyJoinedChannels))
            {
                Commands.Configure(LoginCredentials);

                return(LoginCredentials);
            }

            return(null);
        }
Ejemplo n.º 22
0
        public override void Execute(IEnumerable <String> arguments)
        {
            if (!arguments.Any())
            {
                return;
            }

            if (!TwitchClientManager.Client.IsConnected)
            {
                TwitchClientManager.Client.Connect();
            }

            String channelName = arguments.FirstOrDefault();

            // If the user inputs any second argument, it will join that channel and not leave the existing channel.

            TwitchClientManager.EnsureJoinedToChannel(channelName);
        }
Ejemplo n.º 23
0
        private void TwitchClient_OnMessageReceived(Object sender, OnMessageReceivedArgs e)
        {
            if (UsersToReplyTo.Any() && !UsersToReplyTo.Contains(e.ChatMessage.Username))
            {
                return;
            }

            if (!Comparator.Matches(e.ChatMessage.Message, TriggerMessage))
            {
                return;
            }

            String replyMessage = String.IsNullOrWhiteSpace(ReplyMessage) ? TriggerMessage : ReplyMessage;

            String replyMessageWithUserName = replyMessage.Replace("@", $"@{e.ChatMessage.DisplayName}");

            TwitchClientManager.SpoolMessage(replyMessageWithUserName);
        }
Ejemplo n.º 24
0
        private void TwitchClient_OnMessageReceived(Object sender, OnMessageReceivedArgs e)
        {
            if (!e.ChatMessage.Username.Equals(UserToMirror, StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            String replacedUsernameMessage =
                // Modify message to mentions of bot username become the username
                // of the one copied.
                e.ChatMessage.Username.Equals("streamelements", StringComparison.OrdinalIgnoreCase)
                ? e.ChatMessage.Message
                : e.ChatMessage.Message.Replace(e.ChatMessage.BotUsername, e.ChatMessage.Username, StringComparison.OrdinalIgnoreCase);

            String modeModifiedMessage = String.Empty;

            switch (Mode)
            {
            case CopyMode.Default:
                modeModifiedMessage = replacedUsernameMessage;
                break;

            case CopyMode.Mock:
                modeModifiedMessage = "" + replacedUsernameMessage.ToRandomCase();
                break;

            case CopyMode.Reverse:
                modeModifiedMessage = String.Join(String.Empty, replacedUsernameMessage.Reverse());
                break;
            }

            String prefixAddedMessage = (String.IsNullOrWhiteSpace(MessagePrefix)
                ? String.Empty
                : MessagePrefix + " ")
                                        + modeModifiedMessage;

            // Shorten message to abide by message length limit (for non-VIPs).
            const Int32 messageCharacterLimit = 300;
            String      truncatedMessage      = prefixAddedMessage.Substring(0, Math.Min(prefixAddedMessage.Length, messageCharacterLimit));

            TwitchClientManager.SpoolMessage(truncatedMessage);
        }
Ejemplo n.º 25
0
 private void SpoolRepeatMessages()
 {
     Responded = false;
     while (!Responded)
     {
         TwitchClientManager.SpoolMessage(Channel, "!cookie");
         SpinWait.SpinUntil(() => Responded, TimeSpan.FromSeconds(5));
     }
     Responded = false;
     while (!Responded)
     {
         TwitchClientManager.SpoolMessage(Channel, "!cdr");
         SpinWait.SpinUntil(() => Responded, TimeSpan.FromSeconds(5));
     }
     Responded = false;
     while (!Responded)
     {
         TwitchClientManager.SpoolMessage(Channel, "!cookie");
         SpinWait.SpinUntil(() => Responded, TimeSpan.FromSeconds(5));
     }
     LastCookieTime = DateTime.Now;
 }
Ejemplo n.º 26
0
        public override void Execute(IEnumerable <String> arguments)
        {
            if (!arguments.Any())
            {
                return;
            }

            if (!TwitchClientManager.Client.IsConnected)
            {
                TwitchClientManager.Client.Connect();
            }

            String channelName = arguments.First();

            var joinedChannels = TwitchClientManager.Client.JoinedChannels;

            foreach (var channel in joinedChannels)
            {
                TwitchClientManager.Client.LeaveChannel(channel);
            }

            TwitchClientManager.EnsureJoinedToChannel(channelName);
        }
Ejemplo n.º 27
0
        public override void Invoke(Object sender, OnUserCommandReceivedArgs e)
        {
            if (!e.Words.TryGetFirst(out var keyword, out var next))
            {
                return;
            }

            // TODO add channel admins
            if (!e.ChatMessage.Username.Equals("chubbehmouse", StringComparison.OrdinalIgnoreCase) &&
                !e.ChatMessage.Username.Equals(e.ChatMessage.Channel, StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            switch (keyword.ToLower())
            {
            case "a":
            case "add":
            {
                if (next.TryGetFirst(out var categoryString, out var next2) &&
                    categoryString.TryParseEnum(out EmoteCategory category))
                {
                    // Filter out single character words, such as chatterino message duplicate characters.
                    var emotes  = next2.Where(x => x.Length >= 2);
                    var results = EmoteManager.AddAll(emotes, category, e.ChatMessage.Channel);

                    StringBuilder builder = new StringBuilder()
                                            .Append(e.ChatMessage.DisplayName)
                                            .Append(',');

                    if (results.Succeeded.Any())
                    {
                        builder
                        .Append(" Added ")
                        .Append(category)
                        .Append(" emotes: ")
                        .Append(String.Join(' ', results.Succeeded));
                    }

                    if (results.Failed.Any())
                    {
                        builder
                        .Append(" Failed to add ")
                        .Append(category)
                        .Append(" emotes: ")
                        .Append(String.Join(' ', results.Failed));
                    }

                    TwitchClientManager.SpoolMessage(e.ChatMessage.Channel, builder.ToString());
                }
            }
            break;

            case "d":
            case "delete":
            case "remove":
            {
                if (next.TryGetFirst(out var categoryString, out var next2) &&
                    categoryString.TryParseEnum(out EmoteCategory category))
                {
                    var emotes = next2.Where(x => x.Length > 1);

                    var results = EmoteManager.RemoveAll(emotes, category, e.ChatMessage.Channel);

                    StringBuilder builder = new StringBuilder()
                                            .Append(e.ChatMessage.DisplayName)
                                            .Append(',');

                    if (results.Succeeded.Any())
                    {
                        builder
                        .Append(" Removed ")
                        .Append(category)
                        .Append(" emotes: ")
                        .Append(String.Join(' ', results.Succeeded));
                    }

                    if (results.Failed.Any())
                    {
                        builder
                        .Append(" Failed to remove ")
                        .Append(category)
                        .Append(" emotes: ")
                        .Append(String.Join(' ', results.Failed));
                    }

                    TwitchClientManager.SpoolMessage(e.ChatMessage.Channel, builder.ToString());
                }
            }
            break;

            default:
            {
                if (keyword.TryParseEnum(out EmoteCategory category) && category != EmoteCategory.Invalid)
                {
                    var emotes = EmoteManager.Get(e.ChatMessage.Channel, category);

                    StringBuilder builder = new StringBuilder()
                                            .Append(e.ChatMessage.DisplayName)
                                            .Append(", ")
                                            .Append(category)
                                            .Append(" emotes: ")
                                            .Append(String.Join(' ', emotes));

                    TwitchClientManager.SpoolMessage(e.ChatMessage.Channel, builder.ToString());
                }
            }
            break;
            }
        }
Ejemplo n.º 28
0
        private void ChangeColor()
        {
            CurrentColor = CurrentSelector.GetNextColor();

            TwitchClientManager.SpoolMessage($".color {CurrentColor}");
        }
Ejemplo n.º 29
0
 public void TwitchClient_OnUserTimedout(Object sender, OnUserTimedoutArgs e)
 {
     TwitchClientManager.SpoolMessage($"WideHardo FREE MY MAN {e.UserTimeout.Username.ToUpper()}");
 }
Ejemplo n.º 30
0
 private void SpoolCount()
 {
     TwitchClientManager.SpoolMessage($"{Prefix} {CurrentCount++} {Suffix}");
 }