Properly set the channel topic
This commit is contained in:
parent
c0e33b0b42
commit
281f86774a
|
@ -39,6 +39,7 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="ChannelCollection.cs" />
|
<Compile Include="ChannelCollection.cs" />
|
||||||
<Compile Include="ClientSettings.cs" />
|
<Compile Include="ClientSettings.cs" />
|
||||||
|
<Compile Include="Events\ChannelTopicEventArgs.cs" />
|
||||||
<Compile Include="Events\ChannelEventArgs.cs" />
|
<Compile Include="Events\ChannelEventArgs.cs" />
|
||||||
<Compile Include="Events\ChannelUserEventArgs.cs" />
|
<Compile Include="Events\ChannelUserEventArgs.cs" />
|
||||||
<Compile Include="Events\IrcNoticeEventArgs.cs" />
|
<Compile Include="Events\IrcNoticeEventArgs.cs" />
|
||||||
|
|
16
ChatSharp/Events/ChannelTopicEventArgs.cs
Normal file
16
ChatSharp/Events/ChannelTopicEventArgs.cs
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace ChatSharp.Events
|
||||||
|
{
|
||||||
|
public class ChannelTopicEventArgs : EventArgs
|
||||||
|
{
|
||||||
|
public IrcChannel Channel { get; set; }
|
||||||
|
public string Topic { get; set; }
|
||||||
|
|
||||||
|
public ChannelTopicEventArgs(IrcChannel channel, string topic)
|
||||||
|
{
|
||||||
|
Channel = channel;
|
||||||
|
Topic = topic;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -25,6 +25,31 @@ namespace ChatSharp.Handlers
|
||||||
}
|
}
|
||||||
if (channel != null)
|
if (channel != null)
|
||||||
client.OnUserJoinedChannel(new ChannelUserEventArgs(channel, new IrcUser(message.Prefix)));
|
client.OnUserJoinedChannel(new ChannelUserEventArgs(channel, new IrcUser(message.Prefix)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void HandleGetTopic(IrcClient client, IrcMessage message)
|
||||||
|
{
|
||||||
|
IrcChannel channel = null;
|
||||||
|
string topic;
|
||||||
|
if (client.Channels.Contains(message.Parameters[1]))
|
||||||
|
{
|
||||||
|
channel = client.Channels[message.Parameters[1]];
|
||||||
|
topic = message.Parameters[2];
|
||||||
|
channel.Topic = topic;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
channel = new IrcChannel(client, message.Parameters[1]);
|
||||||
|
topic = message.Parameters[2];
|
||||||
|
}
|
||||||
|
client.OnChannelTopicReceived(new ChannelTopicEventArgs(channel, topic));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void HandleGetEmptyTopic(IrcClient client, IrcMessage message)
|
||||||
|
{
|
||||||
|
var channel = client.Channels[message.Parameters[1]];
|
||||||
|
var topic = message.Parameters[2];
|
||||||
|
client.OnChannelTopicReceived(new ChannelTopicEventArgs(channel, topic));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void HandlePart(IrcClient client, IrcMessage message)
|
public static void HandlePart(IrcClient client, IrcMessage message)
|
||||||
|
|
|
@ -27,7 +27,9 @@ namespace ChatSharp.Handlers
|
||||||
|
|
||||||
// Channel handlers
|
// Channel handlers
|
||||||
client.SetHandler("JOIN", ChannelHandlers.HandleJoin);
|
client.SetHandler("JOIN", ChannelHandlers.HandleJoin);
|
||||||
client.SetHandler("PART", ChannelHandlers.HandlePart);
|
client.SetHandler("PART", ChannelHandlers.HandlePart);
|
||||||
|
client.SetHandler("332", ChannelHandlers.HandleGetTopic);
|
||||||
|
client.SetHandler("331", ChannelHandlers.HandleGetEmptyTopic);
|
||||||
client.SetHandler("353", ChannelHandlers.HandleUserListPart);
|
client.SetHandler("353", ChannelHandlers.HandleUserListPart);
|
||||||
client.SetHandler("366", ChannelHandlers.HandleUserListEnd);
|
client.SetHandler("366", ChannelHandlers.HandleUserListEnd);
|
||||||
client.SetHandler("KICK", ChannelHandlers.HandleKick);
|
client.SetHandler("KICK", ChannelHandlers.HandleKick);
|
||||||
|
|
|
@ -15,7 +15,6 @@ namespace ChatSharp
|
||||||
}
|
}
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
Client.SetTopic(Name, value);
|
|
||||||
_Topic = value;
|
_Topic = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,5 +66,11 @@ namespace ChatSharp
|
||||||
{
|
{
|
||||||
Client.ChangeMode(Name, change);
|
Client.ChangeMode(Name, change);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetTopic(string topic)
|
||||||
|
{
|
||||||
|
Client.SetTopic(Name, topic);
|
||||||
|
Topic = topic;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,6 +59,11 @@ namespace ChatSharp
|
||||||
SendRawMessage("TOPIC {0} :{1}", channel, topic);
|
SendRawMessage("TOPIC {0} :{1}", channel, topic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void GetTopic(string channel)
|
||||||
|
{
|
||||||
|
SendRawMessage("TOPIC {0}", channel);
|
||||||
|
}
|
||||||
|
|
||||||
public void KickUser(string channel, string user)
|
public void KickUser(string channel, string user)
|
||||||
{
|
{
|
||||||
SendRawMessage("KICK {0} {1} :{1}", channel, user);
|
SendRawMessage("KICK {0} {1} :{1}", channel, user);
|
||||||
|
|
|
@ -349,6 +349,11 @@ namespace ChatSharp
|
||||||
protected internal virtual void OnChannelListRecieved(ChannelEventArgs e)
|
protected internal virtual void OnChannelListRecieved(ChannelEventArgs e)
|
||||||
{
|
{
|
||||||
if (ChannelListRecieved != null) ChannelListRecieved(this, e);
|
if (ChannelListRecieved != null) ChannelListRecieved(this, e);
|
||||||
|
}
|
||||||
|
public event EventHandler<ChannelTopicEventArgs> ChannelTopicReceived;
|
||||||
|
protected internal virtual void OnChannelTopicReceived(ChannelTopicEventArgs e)
|
||||||
|
{
|
||||||
|
if (ChannelTopicReceived != null) ChannelTopicReceived(this, e);
|
||||||
}
|
}
|
||||||
public event EventHandler<EventArgs> ConnectionComplete;
|
public event EventHandler<EventArgs> ConnectionComplete;
|
||||||
protected internal virtual void OnConnectionComplete(EventArgs e)
|
protected internal virtual void OnConnectionComplete(EventArgs e)
|
||||||
|
|
|
@ -31,10 +31,29 @@ namespace TestChatSharp
|
||||||
var parts = e.PrivateMessage.Message.Split(' ');
|
var parts = e.PrivateMessage.Message.Split(' ');
|
||||||
client.ChangeMode(parts[1], parts[2]);
|
client.ChangeMode(parts[1], parts[2]);
|
||||||
}
|
}
|
||||||
|
else if (e.PrivateMessage.Message.StartsWith(".topic "))
|
||||||
|
{
|
||||||
|
string messageArgs = e.PrivateMessage.Message.Substring(7);
|
||||||
|
if (messageArgs.Contains(" "))
|
||||||
|
{
|
||||||
|
string channel = messageArgs.Substring(0, messageArgs.IndexOf(" "));
|
||||||
|
string topic = messageArgs.Substring(messageArgs.IndexOf(" ") + 1);
|
||||||
|
client.Channels[channel].SetTopic(topic);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string channel = messageArgs.Substring(messageArgs.IndexOf("#"));
|
||||||
|
client.GetTopic(channel);
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
client.ChannelMessageRecieved += (s, e) =>
|
client.ChannelMessageRecieved += (s, e) =>
|
||||||
{
|
{
|
||||||
Console.WriteLine("<{0}> {1}", e.PrivateMessage.User.Nick, e.PrivateMessage.Message);
|
Console.WriteLine("<{0}> {1}", e.PrivateMessage.User.Nick, e.PrivateMessage.Message);
|
||||||
|
};
|
||||||
|
client.ChannelTopicReceived += (s, e) =>
|
||||||
|
{
|
||||||
|
Console.WriteLine("Received topic for channel {0}: {1}", e.Channel.Name, e.Topic);
|
||||||
};
|
};
|
||||||
client.ConnectAsync();
|
client.ConnectAsync();
|
||||||
while (true) ;
|
while (true) ;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user