private void ChannelMembersChanged(IChannel target, ChannelMemberChangeEventArgs args) { foreach (var addition in args.NewMembers) { Send(addition.Subject.IrcFullId, "JOIN", target.IrcName); if (addition.IsOperator) { SendFromServer("MODE", target.IrcName, "+o", addition.Subject.IrcNick); } if (addition.NewPosition <= PositionCategory.Talk) { SendFromServer("MODE", target.IrcName, "+v", addition.Subject.IrcNick); } } foreach (var change in args.ChangedMembers) { if (change.IsOperator && !change.WasOperator) { SendFromServer("MODE", target.IrcName, "+o", change.Subject.IrcNick); } else if (!change.IsOperator && change.WasOperator) { SendFromServer("MODE", target.IrcName, "-o", change.Subject.IrcNick); } if (change.NewPosition <= PositionCategory.Talk && change.OldPosition > PositionCategory.Talk) { SendFromServer("MODE", target.IrcName, "+v", change.Subject.IrcNick); } else if (change.NewPosition > PositionCategory.Talk && change.OldPosition <= PositionCategory.Talk) { SendFromServer("MODE", target.IrcName, "-v", change.Subject.IrcNick); } } foreach (var deletion in args.RemovedMembers) { Send(deletion.Subject.IrcFullId, "PART", target.IrcName); } }
private void ChannelMembersChanged(IChannel target, ChannelMemberChangeEventArgs args) { foreach(var addition in args.NewMembers) { Send(addition.Subject.IrcFullId, "JOIN", target.IrcName); if(addition.IsOperator) { SendFromServer("MODE", target.IrcName, "+o", addition.Subject.IrcNick); } if(addition.NewPosition <= PositionCategory.Talk) { SendFromServer("MODE", target.IrcName, "+v", addition.Subject.IrcNick); } } foreach(var change in args.ChangedMembers) { if(change.IsOperator && !change.WasOperator) { SendFromServer("MODE", target.IrcName, "+o", change.Subject.IrcNick); } else if (!change.IsOperator && change.WasOperator) { SendFromServer("MODE", target.IrcName, "-o", change.Subject.IrcNick); } if(change.NewPosition <= PositionCategory.Talk && change.OldPosition > PositionCategory.Talk) { SendFromServer("MODE", target.IrcName, "+v", change.Subject.IrcNick); } else if (change.NewPosition > PositionCategory.Talk && change.OldPosition <= PositionCategory.Talk) { SendFromServer("MODE", target.IrcName, "-v", change.Subject.IrcNick); } } foreach(var deletion in args.RemovedMembers) { Send(deletion.Subject.IrcFullId, "PART", target.IrcName); } }