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.AntiSpamHandlerfor usage.
- Parameters
use_timeouts (bool) –
Default:
NoneIf
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
Truein version 1.3.0warn_threshold (int) –
Default:
3This is the amount of duplicates within
message_intervalthat will result in a warning.kick_threshold (int) –
Default:
2This 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:
2This 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:
5The 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:
90How ‘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:
NoneHow many seconds after sending the guild warn message to delete it.
guild_log_kick_message_delete_after (int) –
Default:
NoneHow many seconds after sending the guild kick message to delete it.
guild_log_ban_message_delete_after (int) –
Default:
NoneHow many seconds after sending the guild ban message to delete it.
guild_log_timeout_message_delete_after (int) –
Default:
NoneHow many seconds after sending the guild timeout message to delete it.
member_warn_message_delete_after (int) –
Default:
NoneHow many seconds after sending the member warn message to delete it.
member_kick_message_delete_after (int) –
Default:
NoneHow many seconds after sending the member kick message to delete it.
member_ban_message_delete_after (int) –
Default:
NoneHow many seconds after sending the member ban message to delete it.
member_timeout_message_delete_after (int) –
Default:
NoneHow many seconds after sending the member timeout message to delete it.
ignored_members (Set[int]) –
Default:
Empty SetA 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 SetA 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 SetA 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 SetA 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:
FalseWhether or not to delete messages marked as spam
Won’t delete messages if
no_punishisTrueNote, this method is expensive. It will delete all messages marked as spam, and this means an api call per message.
ignore_bots (bool) –
Default:
TrueShould bots bypass anti-spam?
Note
This can also be set per guild rather then globally.
warn_only (bool) –
Default:
FalseWhether or not to only warn users, this means it will not kick or ban them.
no_punish (bool) –
Default:
FalseDon’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.AntiSpamTrackerwith this mode for best affect.mention_on_embed (bool) –
Default:
TrueIf 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:
testShould zero width characters be removed from messages. Useful as otherwise it helps people bypass antispam measures.
per_channel_spam (bool) –
Default:
FalseTrack spam as per channel, rather then per guild. I.e. False implies spam is tracked as
Per Member Per GuildTrue impliesPer Member Per Channeladdons (Dict) –
Default:
Empty DictUse-able storage for plugins to store Options
Notes
Guild log messages will only send if
antispam.dataclasses.guild.Guild.log_channel_idis 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¶