Example #1
0
        public TwitchIrcMessage(ChannelNormalMessageArgs argument)
        {
            Channel = argument.Channel.Name;
            //Assign information we care about to fields.
            RawMessage = argument.Message;
            Tags       = (Dictionary <string, string>)argument.MessageTags;
            UserMask   = argument.User.Host;
            UserName   = argument.User.Nick;

            if (Tags.ContainsKey("display-name"))
            {
                userDisplayName = Tags["display-name"];
            }

            //Parse the Tags for emotes
            //I'm being lazy on int.parse security so i'm throwing in a
            //catchall Exception
            try
            {
                HasEmotes = ExtractEmotes();
            }
            catch (Exception)
            {
                HasEmotes = false;
            }

            BadgeList = BadgesinTags(Tags);
            HasBadges = !string.IsNullOrWhiteSpace(BadgeList);
        }
Example #2
0
        private void OnChannelNormalMessage(ChannelNormalMessageArgs argument)
        {
            //Check if this event was fired on twitch, if not this plugin should
            //never touch it so fires an early return.
            if (!IsTwitchServer(argument.Channel.Server))
            {
                return;
            }

            //Convert to a TwitchIrcMessage which handles parsing all the information
            var twitchMessage = new TwitchIrcMessage(argument);

            //Check if there are any emotes, if so iterate over them all and Register them.
            if (twitchMessage.HasEmotes)
            {
                foreach (var emote in twitchMessage.Emotes)
                {
                    RegisterEmote(emote);
                }
            }

            //Check if there are any bits, if so register them as emotes and show a notice
            if (_settings.ShowCheers && twitchMessage.Tags.ContainsKey("bits"))
            {
                if (RegisterBits(twitchMessage.Tags["bits"]))
                {
                    var emoteName   = "cheer" + twitchMessage.Tags["bits"];
                    var bitsMessage = twitchMessage.Tags["bits"] + " bits";

                    var notice = $":[email protected] NOTICE {argument.Channel.Name} :{twitchMessage.UserName} {emoteName} just cheered for {bitsMessage}! {emoteName}";
                    argument.Channel.Server.SendFakeRaw(notice);
                }
            }
        }
Example #3
0
        private void OnChannelNormalMessage(ChannelNormalMessageArgs argument)
        {
            if (argument.Message.Contains("!marco"))
            {
                var message = $"PRIVMSG {argument.Channel.Name} :Polo.";

                argument.Channel.Server.SendRaw(message);
            }
        }
Example #4
0
        private void OnChannelNormalMessage(ChannelNormalMessageArgs argument)
        {
            var nickName = argument.Channel.Server.Self.Nick;

            if (argument.Message.Contains(nickName))
            {
                _host.ActiveIWindow.ExecuteCommand("/beep 1");
            }
        }
Example #5
0
        private void OnChannelNormalMessage(ChannelNormalMessageArgs argument)
        {
            if (_joinTimes.ContainsKey(argument.User.Ident))
            {
                var timeSince = (DateTime.Now - _joinTimes[argument.User.Ident]).TotalMinutes;
                _joinTimes.Remove(argument.User.Ident);

                argument.Message += $" (Joined {timeSince} Minues Ago)";
            }
        }
Example #6
0
        private void OnChannelNormalMessage(ChannelNormalMessageArgs argument)
        {
            if (argument.Message.Contains("damn"))
            {
                var user = argument.User;

                var sender  = $"{user.Nick}!{user.Ident}@{user.Host}";
                var apology = $":{sender} PRIVMSG {argument.Channel.Name} :Sorry, my next message is going to be very rude.";

                argument.Channel.Server.SendFakeRaw(apology);
            }
        }
Example #7
0
        private void OnChannelNormalMessage(ChannelNormalMessageArgs argument)
        {
            if (djstatus == false)
            {
                return;
            }                                                                                           //Do nothing if off-air
            else if (djstatus == true)                                                                  //Process on-air requests.
            {
                if (argument.Message.StartsWith("!request") || argument.Message.StartsWith("!Request")) // Only parse if !request command is detected in a channel.
                {
                    if (this.con == null)
                    {
                        this.con = new DJCon(this); con.Show();
                    }

                    object d = DateTime.Now.ToShortDateString();
                    object t = DateTime.Now.ToShortTimeString();
                    rTS = d + " @ " + t;


                    rNick    = argument.User.Nick;
                    rIDHTS   = argument.User.Ident + "@" + argument.User.Host;
                    rRequest = argument.Message.Remove(0, 9);
                    rChannel = argument.Channel.Name;

                    // ⚠ EXPERIMENTAL CODE ⚠ //
                    for (int i = 0; i < 1; i++)
                    {
                        UserRequest nr = addreq(i);                                                                                                                       //Ref. newly created control.
                        con.RequestConsole.Controls.Add(nr);                                                                                                              // Add newly created control to flowlayoutpanel
                        con.SLog.AppendText("Song: " + rRequest + " Requested by: " + rNick + " (" + rIDHTS + ") in: " + rChannel + " at: " + rTS + Environment.NewLine); //Add to secret log for exporting.
                        con.Refresh();                                                                                                                                    // Vain attempt to get 2nd and additional controls to display
                        con.RequestConsole.Refresh();                                                                                                                     // same as above
                        nr.Refresh();                                                                                                                                     //same as above
                        Application.DoEvents();                                                                                                                           //same as above
                    }
                    if (Properties.Settings.Default.hcr == true)
                    {
                        Client.ActiveIWindow.OutputText("*** [DJ REQUESTS] " + rNick + " (" + rIDHTS + ") made this request: " + rRequest + " in: " + rChannel);
                        argument.EatData = EatData.EatAll;
                    }
                    if (Properties.Settings.Default.hcr == false)
                    {
                        argument.EatData = EatData.EatNone; return;
                    }
                }
            }
        }
Example #8
0
        //Append time to messages
        private void OnChannelNormalMessage(ChannelNormalMessageArgs argument)
        {
            //sometimes ( mostly twitch ) user ident or host is not yet known even though a message was received
            if (argument.User == null || argument.User.Ident == null || argument.User.Host == null)
            {
                return;
            }

            var userKey = argument.Channel.Server.Network + argument.Channel.Name + argument.User.Host;

            if (!_userDatabase.ContainsKey(userKey))
            {
                //If the user is new to us add it to the data
                //We did not see them join so they must have been in channel before us.
                //So'set AnnounceJoin to true so we don't announce them later.
                var newData = new UserData {
                    AnnouncedJoin = true, LastMessage = DateTime.Now
                };
                _userDatabase.Add(userKey, newData);
            }
            else
            {
                //if the user was in the database and has not been announced yet, do so.
                var userData = _userDatabase[userKey];

                if (!userData.AnnouncedJoin)
                {
                    argument.Message += $" {ColourCode}(logged in {userData.TimeSinceJoin()} ago)";

                    userData.AnnouncedJoin = true;
                }

                //Update last message property.
                userData.LastMessage = DateTime.Now;
            }
        }