Пример #1
0
        private void ChannelModeChangeHandler(object sender, ChannelModeChangeInfo e, string name)
        {
            string msg = string.Format(" * {0} sets mode {1} on {2}.", e.Nick.Nickname, e.Modes.ModesToString(), e.Channel);

            AddToBuffer(name, e.Channel, string.Format("[{0}] {1}", e.TimeStamp.ToString("HH:mm:ss"), msg));
        }
Пример #2
0
        /// <summary>
        /// Update a channel's mode.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void HandleChannelModeChange(object sender, ChannelModeChangeInfo e)
        {
            ChannelRWLock.EnterWriteLock();
            Channel channel = Channels.Find(chan => chan.Name == e.Channel);

            if (channel != null)
            {
                foreach (ChannelModeInfo mode in e.Modes)
                {
                    switch (mode.Mode)
                    {
                    case ChannelMode.v:
                    case ChannelMode.h:
                    case ChannelMode.o:
                    case ChannelMode.a:
                    case ChannelMode.q:
                        Nick changedNick = channel.GetNick(mode.Parameter);
                        if (changedNick != null)
                        {
                            PrivilegeMode priv;
                            Enum.TryParse(mode.Mode.ToString(), out priv);
                            if (mode.Set)
                            {
                                changedNick.AddPrivilege(priv);
                            }
                            else
                            {
                                changedNick.RemovePrivilege(priv);
                            }
                        }
                        break;

                    case ChannelMode.b:
                        if (mode.Set)
                        {
                            channel.AddBan(mode.Parameter);
                        }
                        else
                        {
                            channel.RemoveBan(mode.Parameter);
                        }
                        break;

                    case ChannelMode.k:
                        if (mode.Set)
                        {
                            channel.AddMode(mode.Mode);
                            channel.Key = mode.Parameter;
                        }
                        else
                        {
                            channel.RemoveMode(mode.Mode);
                            channel.Key = string.Empty;
                        }
                        break;

                    default:
                        if (mode.Set)
                        {
                            channel.AddMode(mode.Mode);
                        }
                        else
                        {
                            channel.RemoveMode(mode.Mode);
                        }
                        break;
                    }
                }
                Command.SendWho(channel.Name);
            }
            ChannelRWLock.ExitWriteLock();
        }
Пример #3
0
        private void RelayChannelMode(object sender, ChannelModeChangeInfo e)
        {
            string msg = string.Format("[{0}] * {1} sets mode {2} on {3}.", e.Channel, e.Nick.Nickname, e.Modes.ModesToString(), e.Channel);

            ProcessRelay(e.Channel, RelayType.Mode, msg, null, e.Modes);
        }