Exemple #1
0
		public virtual bool CanMessage(PlayerMobile user, string text, bool message = true)
		{
			if (!Available)
			{
				if (message)
				{
					InternalMessage(user, "The channel '{0}' is currently unavailable.", Name);
				}

				return false;
			}

			if (!IsUser(user) && user.AccessLevel < AccessLevel.Counselor)
			{
				if (message)
				{
					InternalMessage(user, "You are not in the channel '{0}'", Name);
				}

				return false;
			}

			if (user.AccessLevel < Access)
			{
				if (message)
				{
					InternalMessage(user, "You do not have sufficient access to speak in the channel '{0}'", Name);
				}

				return false;
			}

			if (IsUser(user) && user.AccessLevel < AccessLevel.Counselor && Users[user] > DateTime.Now)
			{
				if (message)
				{
					InternalMessage(user, "Spam detected, message blocked.");
				}

				return false;
			}

			if (
				!NameVerification.Validate(
					text,
					0,
					Int32.MaxValue,
					true,
					true,
					false,
					Int32.MaxValue,
					ProfanityProtection.Exceptions,
					ProfanityProtection.Disallowed,
					ProfanityProtection.StartDisallowed))
			{
				switch (ProfanityAction)
				{
					case ProfanityAction.None:
						return true;
					case ProfanityAction.Criminal:
						user.Criminal = true;
						return true;
					case ProfanityAction.CriminalAction:
						user.CriminalAction(true);
						return true;
					case ProfanityAction.Disallow:
						return false;
					case ProfanityAction.Disconnect:
						Kick(user, false, message);
						return false;
					case ProfanityAction.Other:
						return OnProfanityDetected(user, text, message);
				}
			}

			return true;
		}