Option’s Reference¶
This class represents the Options for both Guilds and the AntiSpamHandler itself. It is important to become familiar with this dataclass.
- Options can be set in two ways:
Set when creating a new object
Options(no_punish=True)
Set using an existing object
Options.no_punish = True
For how to include variables, please see the Message Templating
docs.
- class antispam.dataclasses.options.Options(*, warn_threshold: int = 3, kick_threshold: int = 2, ban_threshold: int = 2, message_interval: int = 30000, message_duplicate_count: int = 5, message_duplicate_accuracy: int = 90, guild_log_warn_message: Union[str, dict] = '$MEMBERNAME was warned for spamming/sending duplicate messages.', guild_log_kick_message: Union[str, dict] = '$MEMBERNAME was kicked for spamming/sending duplicate messages.', guild_log_ban_message: Union[str, dict] = '$MEMBERNAME was banned for spamming/sending duplicate messages.', member_warn_message: Union[str, dict] = 'Hey $MENTIONMEMBER, please stop spamming/sending duplicate messages.', member_kick_message: Union[str, dict] = 'Hey $MENTIONMEMBER, you are being kicked from $GUILDNAME for spamming/sending duplicate messages.', member_ban_message: Union[str, dict] = 'Hey $MENTIONMEMBER, you are being banned from $GUILDNAME for spamming/sending duplicate messages.', member_failed_kick_message: Union[str, dict] = "I failed to punish you because I lack permissions, but still you shouldn't spam.", member_failed_ban_message: Union[str, dict] = "I failed to punish you because I lack permissions, but still you shouldn't spam.", use_timeouts: bool = True, member_timeout_message: Union[str, dict] = 'Hey $MENTIONMEMBER, you are being timed out from $GUILDNAME for spamming/sending duplicate messages.', member_failed_timeout_message: Union[str, dict] = "I failed to punish you because I lack permissions, but still you shouldn't spam.", guild_log_timeout_message: Union[str, dict] = '$MEMBERNAME was timed out for spamming/sending duplicate messages.', guild_log_timeout_message_delete_after: Optional[int] = None, member_timeout_message_delete_after: Optional[int] = None, guild_log_ban_message_delete_after: Optional[int] = None, guild_log_kick_message_delete_after: Optional[int] = None, member_ban_message_delete_after: Optional[int] = None, guild_log_warn_message_delete_after: Optional[int] = None, member_kick_message_delete_after: Optional[int] = None, member_warn_message_delete_after: Optional[int] = None, ignored_members=_Nothing.NOTHING, ignored_channels=_Nothing.NOTHING, ignored_roles=_Nothing.NOTHING, ignored_guilds=_Nothing.NOTHING, delete_spam: bool = False, ignore_bots: bool = True, warn_only: bool = False, no_punish: bool = False, mention_on_embed: bool = True, delete_zero_width_chars: bool = True, per_channel_spam: bool = False, is_per_channel_per_guild: bool = False, addons: Dict[str, Any] = _Nothing.NOTHING)¶
Options for the AntiSpamHandler, see
antispam.AntiSpamHandler
for usage.
- Parameters
use_timeouts (bool) –
Default:
None
If
True
, use timeouts as the punishment scheme. IfFalse
, then the default punishment scheme of warn, kick, ban is used.This will be set to default to
True
in version 1.3.0warn_threshold (int) –
Default:
3
This is the amount of duplicates within
message_interval
that will result in a warning.kick_threshold (int) –
Default:
2
This is the amount of warns required before a kick is the next punishment. I.e. After 2 warns, you will get kicked.
ban_threshold (int) –
Default:
2
This is the amount of kicks required before a ban is the next punishment. I.e. After 2 kicks, you will get banned.
message_interval (int) –
Default:
30000ms (30 seconds)
Amount of time a message is kept before being discarded. Essentially the amount of time (In milliseconds) a message can count towards spam.
message_duplicate_count (int) –
Default:
5
The amount of duplicate messages needed within message_interval to trigger a punishment. I.e. Once you’ve sent 5 ‘spam’ messages you’ll get punished.
message_duplicate_accuracy (int) –
Default:
90
How ‘close’ messages need to be to be registered as duplicates (Out of 100) You can test this with the code:
from fuzzywuzzy import fuzz fuzz.token_sort_ratio("message one", "message two")guild_log_warn_message (Union[str, dict]) –
Default:
$MEMBERNAME was warned for spamming/sending duplicate messages.
The message to be sent in the guild when someone is warned. Please see the note at the bottom.
guild_log_kick_message (Union[str, dict]) –
Default:
$MEMBERNAME was kicked for spamming/sending duplicate messages.
The message to be sent in the guild when someone is kicked. Please see the note at the bottom.
guild_log_ban_message (Union[str, dict]) –
Default:
$MEMBERNAME was banned for spamming/sending duplicate messages.
The message to be sent in the guild when someone is banned. Please see the note at the bottom.
guild_log_timeout_message (Union[str, dict]) –
Default:
$MEMBERNAME was timed out for spamming/sending duplicate messages.
The message to be sent in the guild when someone is timed out. Please see the note at the bottom.
member_warn_message (Union[str, dict]) –
Default:
Hey $MENTIONMEMBER, please stop spamming/sending duplicate messages.
The message to be sent in the guild when a member is warned.
member_kick_message (Union[str, dict]) –
Default:
Hey $MENTIONMEMBER, you are being kicked from $GUILDNAME for spamming/sending duplicate messages.
The message to be sent to the member who is being kicked.
member_ban_message (Union[str, dict]) –
Default:
Hey $MENTIONMEMBER, you are being banned from $GUILDNAME for spamming/sending duplicate messages.
The message to be sent to the member who is being banned.
member_timeout_message (Union[str, dict]) –
Default:
Hey $MENTIONMEMBER, you are being timed out from $GUILDNAME for spamming/sending duplicate messages.
The message to be sent to the member who is being timed out.
member_failed_kick_message (Union[str, dict]) –
Default:
I failed to punish you because I lack permissions, but still you shouldn't spam.
The message to be sent if kicking the member fails.
member_failed_ban_message (Union[str, dict]) –
Default:
I failed to punish you because I lack permissions, but still you shouldn't spam.
The message to be sent if banning the member fails.
member_failed_timeout_message (Union[str, dict]) –
Default:
I failed to punish you because I lack permissions, but still you shouldn't spam.
The message to be sent if kicking the member fails.
guild_log_warn_message_delete_after (int) –
Default:
None
How many seconds after sending the guild warn message to delete it.
guild_log_kick_message_delete_after (int) –
Default:
None
How many seconds after sending the guild kick message to delete it.
guild_log_ban_message_delete_after (int) –
Default:
None
How many seconds after sending the guild ban message to delete it.
guild_log_timeout_message_delete_after (int) –
Default:
None
How many seconds after sending the guild timeout message to delete it.
member_warn_message_delete_after (int) –
Default:
None
How many seconds after sending the member warn message to delete it.
member_kick_message_delete_after (int) –
Default:
None
How many seconds after sending the member kick message to delete it.
member_ban_message_delete_after (int) –
Default:
None
How many seconds after sending the member ban message to delete it.
member_timeout_message_delete_after (int) –
Default:
None
How many seconds after sending the member timeout message to delete it.
ignored_members (Set[int]) –
Default:
Empty Set
A Set of members to ignore messages from. Set this with
antispam.AntiSpamHandler.add_ignored_item()
Remove members withantispam.AntiSpamHandler.remove_ignored_item()
Note
These can also be set per guild rather then globally.
ignored_channels (Set[int]) –
Default:
Empty Set
A Set of channels to ignore messages in. Set this with
antispam.AntiSpamHandler.add_ignored_item()
Remove channels withantispam.AntiSpamHandler.remove_ignored_item()
ignored_roles (Set[int]) –
Default:
Empty Set
A Set of roles to ignore messages from. Set this with
antispam.AntiSpamHandler.add_ignored_item()
Remove roles withantispam.AntiSpamHandler.remove_ignored_item()
ignored_guilds (Set[int]) –
Default:
Empty Set
A Set of guilds to ignore messages in. Set this with
antispam.AntiSpamHandler.add_ignored_item()
Remove guilds withantispam.AntiSpamHandler.remove_ignored_item()
delete_spam (bool) –
Default:
False
Whether or not to delete messages marked as spam
Won’t delete messages if
no_punish
isTrue
Note, this method is expensive. It will delete all messages marked as spam, and this means an api call per message.
ignore_bots (bool) –
Default:
True
Should bots bypass anti-spam?
Note
This can also be set per guild rather then globally.
warn_only (bool) –
Default:
False
Whether or not to only warn users, this means it will not kick or ban them.
no_punish (bool) –
Default:
False
Don’t punish anyone, simply return whether or not they should be punished within
propagate
. This essentially lets the end user handle punishments themselves.To check if someone should be punished, use the returned value from the propagate method. If should_be_punished_this_message is True then this package believes they should be punished. Otherwise just ignore that message since it shouldn’t be punished.
Use
antispam.plugins.AntiSpamTracker
with this mode for best affect.mention_on_embed (bool) –
Default:
True
If the message your trying to send is an embed, also send some content to mention the person being punished.
delete_zero_width_chars (bool) –
Default:
test
Should zero width characters be removed from messages. Useful as otherwise it helps people bypass antispam measures.
per_channel_spam (bool) –
Default:
False
Track spam as per channel, rather then per guild. I.e. False implies spam is tracked as
Per Member Per Guild
True impliesPer Member Per Channel
addons (Dict) –
Default:
Empty Dict
Use-able storage for plugins to store Options
Notes
Guild log messages will only send if
antispam.dataclasses.guild.Guild.log_channel_id
is set. You can set it withantispam.AntiSpamHandler.add_guild_log_channel()
- __init__(*, warn_threshold: int = 3, kick_threshold: int = 2, ban_threshold: int = 2, message_interval: int = 30000, message_duplicate_count: int = 5, message_duplicate_accuracy: int = 90, guild_log_warn_message: Union[str, dict] = '$MEMBERNAME was warned for spamming/sending duplicate messages.', guild_log_kick_message: Union[str, dict] = '$MEMBERNAME was kicked for spamming/sending duplicate messages.', guild_log_ban_message: Union[str, dict] = '$MEMBERNAME was banned for spamming/sending duplicate messages.', member_warn_message: Union[str, dict] = 'Hey $MENTIONMEMBER, please stop spamming/sending duplicate messages.', member_kick_message: Union[str, dict] = 'Hey $MENTIONMEMBER, you are being kicked from $GUILDNAME for spamming/sending duplicate messages.', member_ban_message: Union[str, dict] = 'Hey $MENTIONMEMBER, you are being banned from $GUILDNAME for spamming/sending duplicate messages.', member_failed_kick_message: Union[str, dict] = "I failed to punish you because I lack permissions, but still you shouldn't spam.", member_failed_ban_message: Union[str, dict] = "I failed to punish you because I lack permissions, but still you shouldn't spam.", use_timeouts: bool = True, member_timeout_message: Union[str, dict] = 'Hey $MENTIONMEMBER, you are being timed out from $GUILDNAME for spamming/sending duplicate messages.', member_failed_timeout_message: Union[str, dict] = "I failed to punish you because I lack permissions, but still you shouldn't spam.", guild_log_timeout_message: Union[str, dict] = '$MEMBERNAME was timed out for spamming/sending duplicate messages.', guild_log_timeout_message_delete_after: Optional[int] = None, member_timeout_message_delete_after: Optional[int] = None, guild_log_ban_message_delete_after: Optional[int] = None, guild_log_kick_message_delete_after: Optional[int] = None, member_ban_message_delete_after: Optional[int] = None, guild_log_warn_message_delete_after: Optional[int] = None, member_kick_message_delete_after: Optional[int] = None, member_warn_message_delete_after: Optional[int] = None, ignored_members=_Nothing.NOTHING, ignored_channels=_Nothing.NOTHING, ignored_roles=_Nothing.NOTHING, ignored_guilds=_Nothing.NOTHING, delete_spam: bool = False, ignore_bots: bool = True, warn_only: bool = False, no_punish: bool = False, mention_on_embed: bool = True, delete_zero_width_chars: bool = True, per_channel_spam: bool = False, is_per_channel_per_guild: bool = False, addons: Dict[str, Any] = _Nothing.NOTHING) None ¶
Method generated by attrs for class Options.
- addons¶
- ban_threshold¶
- delete_spam¶
- delete_zero_width_chars¶
- guild_log_ban_message¶
- guild_log_ban_message_delete_after¶
- guild_log_kick_message¶
- guild_log_kick_message_delete_after¶
- guild_log_timeout_message¶
- guild_log_timeout_message_delete_after¶
- guild_log_warn_message¶
- guild_log_warn_message_delete_after¶
- ignore_bots¶
- ignored_channels¶
- ignored_guilds¶
- ignored_members¶
- ignored_roles¶
- is_per_channel_per_guild¶
- kick_threshold¶
- member_ban_message¶
- member_ban_message_delete_after¶
- member_failed_ban_message¶
- member_failed_kick_message¶
- member_failed_timeout_message¶
- member_kick_message¶
- member_kick_message_delete_after¶
- member_timeout_message¶
- member_timeout_message_delete_after¶
- member_warn_message¶
- member_warn_message_delete_after¶
- mention_on_embed¶
- message_duplicate_accuracy¶
- message_duplicate_count¶
- message_interval¶
- no_punish¶
- per_channel_spam¶
- use_timeouts¶
- warn_only¶
- warn_threshold¶