Fixed a bug in HandleNick and another in HandleKick.

Added the NuGet package source to the repository.
This commit is contained in:
Umar Farooq Khawaja 2015-07-05 20:15:14 +01:00
parent fdd4274ed2
commit f447c6ff5b
3 changed files with 139 additions and 123 deletions

BIN
ChatSharp.nupkg Normal file

Binary file not shown.

View File

@ -130,7 +130,7 @@ namespace ChatSharp.Handlers
{
var channel = client.Channels[message.Parameters[0]];
var kicked = channel.Users[message.Parameters[1]];
if (message.Parameters[1] == client.User.Nick) // We've been kicked
if (string.Equals(message.Parameters[1], client.User.Nick, StringComparison.OrdinalIgnoreCase)) // We've been kicked
client.Channels.Remove(client.Channels[message.Parameters[0]]);
else
{

View File

@ -1,5 +1,6 @@
using ChatSharp.Events;
using System.Linq;
using System;
namespace ChatSharp.Handlers
{
@ -61,15 +62,30 @@ namespace ChatSharp.Handlers
public static void HandleNick(IrcClient client, IrcMessage message)
{
var u = new IrcUser(message.Prefix);
if (client.User.Nick == u.Nick)
var ircUser = new IrcUser(message.Prefix);
var oldNick = ircUser.Nick;
var users = client
.Channels
.SelectMany(c => c.Users.Where(u => u.Nick.Equals(ircUser.Nick, StringComparison.OrdinalIgnoreCase)));
foreach (var user in users)
{
if (user != null)
{
user.Nick = message.Parameters[0];
}
}
if (client.User.Nick.Equals(ircUser.Nick, System.StringComparison.OrdinalIgnoreCase))
{
client.User.Nick = message.Parameters[0];
}
client.OnNickChanged(new NickChangedEventArgs
{
User = u,
OldNick = u.Nick,
User = ircUser,
OldNick = oldNick,
NewNick = message.Parameters[0]
});
}