internal Task<IIrcChannel> JoinChannel(string name, string password) { if (!IsChannel(name)) { name = '#' + name; } IrcChannel channel; lock (_channels) { if (GetChannel(name) != null) { throw new InvalidOperationException("Channel already joined"); } channel = new IrcChannel(this, name); _channels.Add(name, channel); } if (password != null) SendCommand("JOIN", name, password); else SendCommand("JOIN", name); return channel._loaded.Task; }
async Task HandleJoin(string prefix, string command, string[] args) { var client = ParseClient(prefix); if (client._nick == _nick) // we just joined a channel. Wait for names (do nothing). { lock (_channels) { IrcChannel channel; if (_channels.TryGetValue(args[0], out channel)) { if (channel._state == IrcChannel.State.WaitingForJoin) { channel._state = IrcChannel.State.WaitingForNames; return; } } else { channel = new IrcChannel(this, args[0]); _channels.Add(args[0], channel); channel._state = IrcChannel.State.WaitingForNames; return; } } } else { lock (_channels) { IrcChannel channel; if (_channels.TryGetValue(args[0], out channel)) { channel.AddName(client._nick); _channelList.OnUserJoined(channel, channel._userList[client._nick]); } else { throw new InvalidOperationException(); } } } }
private void OnJoin(IrcChannel channel) { if (Join != null) Join(this, new ChannelEventArgs(channel)); }
/// <summary> /// Initializes a new instance of the <see cref="ChannelInstance"/> class. /// </summary> /// <param name="runner">The runner.</param> /// <param name="channel">The channel.</param> public ChannelInstance(ScriptRunner runner, IrcChannel channel) : base(runner.Engine) { this.runner = runner; this.channel = channel; }
/// <summary> /// Initializes a new instance of the <see cref="IrcChannelEventArgs"/> class. /// </summary> /// <param name="channel">The channel.</param> public IrcChannelEventArgs(IrcChannel channel) { this.channel = channel; }
/// <summary> /// Called when a channel is joined. /// </summary> /// <param name="channel">The channel.</param> protected virtual void OnChannelJoin(IrcChannel channel) { if (ChannelJoin != null) ChannelJoin(this, new IrcChannelEventArgs(channel)); }
public IrcChannelUser(Guid guid, IrcChannel channel) : base(channel._connection, guid) { // TODO: Complete member initialization _channel = channel; }
public ChannelUserList(IrcChannel channel) { _channel = channel; }