private bool CheckMode(UserBase user, ChannelModeAttribute attr, string argument)
{
if (user == null)
{
return true;
}
switch (attr.Level)
{
case Authorizations.Unregistered:
if (user.Level < Authorizations.Unregistered)
{
user.SendNumeric(Numerics.ERR_NOTREGISTERED, "MODE", ":You aren't fully connected at present.");
return false;
}
break;
case Authorizations.Registered:
if (user.Level < Authorizations.Registered)
{
user.SendNumeric(Numerics.ERR_NOLOGIN, "MODE", ":You must be identified with services to do that.");
return false;
}
break;
case Authorizations.NetworkOperator:
if (user.Level < Authorizations.NetworkOperator)
{
user.SendNumeric(Numerics.ERR_UNIQOPRIVSNEEDED, "MODE", ":You must be a network operator to do that.");
return false;
}
break;
case Authorizations.Service:
if (user.Level < Authorizations.Service)
{
user.SendNumeric(Numerics.ERR_UNIQOPRIVSNEEDED, "MODE", ":That is for use only.");
return false;
}
break;
default:
return false;
}
if (user.Level >= Authorizations.Service)
{
return true;
}
if (!CheckRank(user, attr))
{
user.SendNumeric(Numerics.ERR_CHANOPPRIVSNEEDED, "MODE", ":You need to be a higher rank in the channel to set that mode.");
return false;
}
else
{
return true;
}
}