> For the complete documentation index, see [llms.txt](https://quickfire-corp.gitbook.io/ncpf/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://quickfire-corp.gitbook.io/ncpf/guides/getting-started/configuration/checks/chat/text.md).

# Text

Config path: `checks.chat.text`\
Permission (bypass): `nocheatplus.checks.chat.text`\
Exemption: `CHAT_TEXT`

Advanced check designed to prevent chat spam and floodding.

| Option       | Description |
| ------------ | ----------- |
| allowvlreset | TODO:       |

### Frequency

This check is split in two in order to cover both faster and slower types of chat spamming.

#### Normal

First module of the Text.frequency check: the "text.frequency.normal" check keeps track of the server chat activity for about 30 seconds. Meant to prevent slower types (more annoying) of chat spam.

| Option  | Description                                                                                                               |
| ------- | ------------------------------------------------------------------------------------------------------------------------- |
| minimum | Each message sent by the player will at least count in with this weight. (0.0 means not every message will have a weight) |
| factor  | How strong old chat messages should count in, 1.0 would let the check count in fully.                                     |
| weight  | Multiplier to balance out things, the calculated score will just be multiplied with this.                                 |
| level   | Accumulated score for which to generate a violation for.                                                                  |

#### Shortterm

Second module of the Text.frequency check: the "text.frequency.shortterm" check covers 5 seconds of chat activity, roughly. Meant to protect the server from obvious spam-bots and/or players intentionally flodding the chat

| Option  | Description                                                                                                               |
| ------- | ------------------------------------------------------------------------------------------------------------------------- |
| minimum | Each message sent by the player will at least count in with this weight. (0.0 means not every message will have a weight) |
| factor  | How strong old chat messages should count in, 1.0 would let the check count in fully.                                     |
| weight  | Multiplier to balance out things, the calculated score will just be multiplied with this.                                 |
| level   | Accumulated score for which to generate a violation for.                                                                  |

### Message

This section allows you to alter the weights of specific messages

| Option            | Description                                                                                                                            |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| lettercount       | Counting the letters versus the word length. Unbalanced counts would be more expensive.                                                |
| partition         | TODO:                                                                                                                                  |
| uppercase         | A message with many caps letter will cost more                                                                                         |
| afterjoin         | Chatting immediately after join will cost more                                                                                         |
| nomoving          | Chatting and not having moved *recently* is also more expensive.                                                                       |
| repeatviolation   | Repeating a message which has been previously deleted and/or flagged by the Text check will cost more                                  |
| repeatglobal      | Repeating a message that is getting repeated a lot in chat by other players is expensive                                               |
| repeatself        | A player repeating the same message they just sent will cost more.                                                                     |
| words *lengthav*  | Word length vs. average word length weight, really long words will count in more                                                       |
| words *lengthmsg* | Word length vs. message length weight                                                                                                  |
| words *noletter*  | Weight for words that don't contain any letter, only special characters. Will make countdowns harder to get by. Set to 0.0 to disable. |

### Global

Text.Global: uses more extended and advanced methods that are fed by all players messages.

| Option              | Description                                                                                                                                                                                                              |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| weight              | Multiplier to allow balancing the score result of this check. 1.0 = no change                                                                                                                                            |
| words               | Keeps track of recently spoken words as a whole.                                                                                                                                                                         |
| prefixes *active*   | Keeps track of recently spoken words, but arranges them to also count in if prefixes of a word are repeated/detected, such as "hello" and "helloccc". Words that just have been used are more "expensive" than old ones. |
| similarity *active* | Checks words for similarities with the Levenshtein algorithm applied within a metric tree. (most heavy operation, performance-wise)                                                                                      |

### Player

Text.Player: uses more extended and advanced methods that keep track of each player individually.

| Option              | Description                                                                                                                                                                                                              |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| words *active*      | Keeps track of recently spoken words as a whole.                                                                                                                                                                         |
| prefixes *active*   | Keeps track of recently spoken words, but arranges them to also count in if prefixes of a word are repeated/detected, such as "hello" and "helloccc". Words that just have been used are more "expensive" than old ones. |
| similarity *active* | Keeps track of recently spoken words and assigns a higher score with recently spoken words being repeated similarly.                                                                                                     |

**Related**

* [Active](/ncpf/guides/getting-started/configuration/checks/general/active.md)
* [Actions](/ncpf/guides/getting-started/configuration/checks/general/actions.md)
