chatsharp/TestChatSharp/Program.cs
2015-04-06 19:31:16 -03:00

63 lines
3.0 KiB
C#

using ChatSharp;
using System;
using System.Linq;
namespace TestChatSharp
{
class Program
{
static void Main(string[] args)
{
var client = new IrcClient("irc.freenode.net", new IrcUser("ChatSharp", "ChatSharp"));
client.NetworkError += (s, e) => Console.WriteLine("Error: " + e.SocketError);
client.RawMessageRecieved += (s, e) => Console.WriteLine("<< {0}", e.Message);
client.RawMessageSent += (s, e) => Console.WriteLine(">> {0}", e.Message);
client.UserMessageRecieved += (s, e) =>
{
if (e.PrivateMessage.Message.StartsWith(".join "))
client.Channels.Join(e.PrivateMessage.Message.Substring(6));
else if (e.PrivateMessage.Message.StartsWith(".list "))
{
var channel = client.Channels[e.PrivateMessage.Message.Substring(6)];
var list = channel.Users.Select(u => u.Nick).Aggregate((a, b) => a + "," + b);
client.SendMessage(list, e.PrivateMessage.User.Nick);
}
else if (e.PrivateMessage.Message.StartsWith(".whois "))
client.WhoIs(e.PrivateMessage.Message.Substring(7), null);
else if (e.PrivateMessage.Message.StartsWith(".raw "))
client.SendRawMessage(e.PrivateMessage.Message.Substring(5));
else if (e.PrivateMessage.Message.StartsWith(".mode "))
{
var parts = e.PrivateMessage.Message.Split(' ');
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) =>
{
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();
while (true) ;
}
}
}