reactos/irc/TechBot/TechBot.IRCLibrary/IrcUser.cs

133 lines
2.6 KiB
C#
Raw Normal View History

using System;
namespace TechBot.IRCLibrary
{
/// <summary>
/// IRC user.
/// </summary>
public class IrcUser
{
#region Private fields
private IrcClient owner;
private string nickname;
private string decoratedNickname;
#endregion
#region Public properties
/// <summary>
/// Owner of this channel.
/// </summary>
public IrcClient Owner
{
get
{
return owner;
}
}
/// <summary>
/// Nickname of user.
/// </summary>
public string Nickname
{
get
{
return nickname;
}
}
/// <summary>
/// Decorated nickname of user.
/// </summary>
public string DecoratedNickname
{
get
{
return decoratedNickname;
}
}
/// <summary>
/// Wether user is channel operator.
/// </summary>
public bool Operator
{
get
{
return decoratedNickname.StartsWith("@");
}
}
/// <summary>
/// Wether user has voice.
/// </summary>
public bool Voice
{
get
{
return decoratedNickname.StartsWith("+");
}
}
#endregion
/// <summary>
/// Constructor.
/// </summary>
/// <param name="owner">Owner of this channel.</param>
/// <param name="nickname">Nickname (possibly decorated) of user.</param>
public IrcUser(IrcClient owner,
string nickname)
{
if (owner == null)
{
throw new ArgumentNullException("owner", "Owner cannot be null.");
}
this.owner = owner;
this.decoratedNickname = nickname.Trim();
this.nickname = StripDecoration(decoratedNickname);
}
/// <summary>
/// Talk to the user.
/// </summary>
/// <param name="text">Text to send to the user.</param>
public void Talk(string text)
{
if (text == null)
{
throw new ArgumentNullException("text", "Text cannot be null.");
}
owner.SendMessage(new IrcMessage(IRC.PRIVMSG,
String.Format("{0} :{1}",
nickname,
text)));
}
/// <summary>
/// Strip docoration of nickname.
/// </summary>
/// <param name="nickname">Possible decorated nickname.</param>
/// <returns>Undecorated nickname.</returns>
public static string StripDecoration(string decoratedNickname)
{
if (decoratedNickname.StartsWith("@"))
{
return decoratedNickname.Substring(1);
}
else if (decoratedNickname.StartsWith("+"))
{
return decoratedNickname.Substring(1);
}
else
{
return decoratedNickname;
}
}
}
}