mirror of
https://github.com/reactos/reactos.git
synced 2024-08-21 10:53:15 +00:00
133 lines
2.6 KiB
C#
133 lines
2.6 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|