using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using TwitchLogger.IRC.Messages; namespace TwitchLogger.IRC { //public class IrcMessageEventArgs(ReceivedMessage message) : EventArgs //{ // public ReceivedMessage Message = message; //} public delegate void MessageCallback(IrcConnection origin, ReceivedMessage message); /// /// Callback to be run for received messages of specific types. /// /// /// set to null to run for all message types public readonly record struct MessageCallbackItem( MessageCallback Callback, IReadOnlyList? CallbackTypes) { public bool TryCall(IrcConnection origin, ReceivedMessage message) { if (CallbackTypes?.Contains(message.MessageType) ?? true) { Callback(origin, message); return true; } return false; } } public class UserChangeEventArgs(IList joined, IList left) : EventArgs { public readonly IList Joined = joined; public IList Left = left; } }