private void _Event_JOIN(IrcMessageData ircdata)
{
string who = ircdata.Nick;
string channelname = ircdata.Channel;
if (IsMe(who)) {
_JoinedChannels.Add(channelname);
}
if (ActiveChannelSyncing) {
Channel channel;
if (IsMe(who)) {
// we joined the channel
#if LOG4NET
Logger.ChannelSyncing.Debug("joining channel: "+channelname);
#endif
if (SupportNonRfc) {
channel = new NonRfcChannel(channelname);
} else {
channel = new Channel(channelname);
}
_Channels.Add(channelname, channel);
// request channel mode
RfcMode(channelname);
// request wholist
RfcWho(channelname);
// request banlist
Ban(channelname);
} else {
// someone else joined the channel
// request the who data
RfcWho(who);
}
#if LOG4NET
Logger.ChannelSyncing.Debug(who+" joins channel: "+channelname);
#endif
channel = GetChannel(channelname);
IrcUser ircuser = GetIrcUser(who);
if (ircuser == null) {
ircuser = new IrcUser(who, this);
ircuser.Ident = ircdata.Ident;
ircuser.Host = ircdata.Host;
_IrcUsers.Add(who, ircuser);
}
ChannelUser channeluser;
if (SupportNonRfc) {
channeluser = new NonRfcChannelUser(channelname, ircuser);
} else {
channeluser = new ChannelUser(channelname, ircuser);
}
channel.UnsafeUsers.Add(who, channeluser);
}
if (OnJoin != null) {
OnJoin(this, new JoinEventArgs(ircdata, channelname, who));
}
}