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); }
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); } } }
private void OnChannelNormalMessage(ChannelNormalMessageArgs argument) { if (argument.Message.Contains("!marco")) { var message = $"PRIVMSG {argument.Channel.Name} :Polo."; argument.Channel.Server.SendRaw(message); } }
private void OnChannelNormalMessage(ChannelNormalMessageArgs argument) { var nickName = argument.Channel.Server.Self.Nick; if (argument.Message.Contains(nickName)) { _host.ActiveIWindow.ExecuteCommand("/beep 1"); } }
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)"; } }
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); } }
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; } } } }
//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; } }