aboutsummaryrefslogtreecommitdiffstats

osterman

Channel moderation bot. Manages bans, kicks, mutes, auto-modes, content filters, and idle tracking.

Dependencies

No external libraries required.

Plugins

File Role
protect.py Setup, passive protection: flood, caps, repeat, badword, clone, join flood
commands.py All user-facing moderation and config commands
tracking.py SQLite event log, greeting, !seen, !info, !log
idle.py Idle detection tick, !afk, !idle
help.py Three-level help system

Message routing

Output type Delivery
!seen, !idle <nick> results Channel message
!info, !log results PM to nick
!ban list, !config, !filter list, !badword list PM to nick
All other command feedback (errors, confirmations) IRC NOTICE to nick
Greetings, idle warns, bad word warn IRC NOTICE to nick

Help system

!help                       list topics
!help <topic>               list commands for a topic
!help <topic> <cmd>         description and usage for a command
!help <cmd>                 description and usage (topic not required)

Topics: mod, config, track, idle, admin

Commands

Moderation (owner / ACL / op)

Command Short Description
!kick <nick> [reason] !k Kick
!ban <nick\|mask> [reason] !b Ban + kick
!ban list !b list View channel ban list (PM)
!bankick <nick\|mask> [reason] !bk Ban + kick (explicit)
!unban <nick\|mask> !ub Remove ban
!tempban <nick\|mask> <min> [reason] !tb Timed ban (auto-lifts)
!mute <nick\|mask> !mu Quiet (+q)
!unmute <nick\|mask> !umu Unquiet (-q)
!voice <nick> !v Give voice (+v)
!devoice <nick> !dv Remove voice
!op <nick> !o Give op (+o)
!deop <nick> !do Remove op
!halfop <nick> !hop Give halfop (+h)
!dehalfop <nick> !dhop Remove halfop
!lock [m\|i] !lk Lock channel (+mi, +m, or +i)
!unlock [m\|i] !ulk Unlock channel

Auto-modes (owner / ACL / op, per channel)

Command Short Description
!autoop <add\|del\|list> [nick\|mask] !ao Auto +o on join
!autovoice <add\|del\|list> [nick\|mask] !av Auto +v on join
!autohalfop <add\|del\|list> [nick\|mask] !ahop Auto +h on join

Config / lists (owner / ACL)

Command Short Description
!blacklist <add\|del\|list> [mask] !bl Global ban list (all channels)
!whitelist <add\|del\|list> [mask] !wl Global bypass list
!except <add\|del\|list> [mask] !ex Per-channel bypass list
!acl <add\|del\|list> [nick] (none) Trusted nicks (can use mod commands)
!filter <add\|del\|list> [pattern] !f Per-channel regex content filter
!badword <add\|del\|list> [word] !bw Per-channel word block list
!set <key> <value> !s Set a config value (in channel: per-channel; in PM: global)
!config [#channel] !cfg Show channel config (PM)
!idle <on\|off> !id Toggle idle detection

Tracking

Command Auth Description
!seen <nick> anyone Last time nick was seen in this channel. Responds in channel. Owner/ACL may call from PM for cross-channel lookup.
!info <nick> anyone Nick summary scoped to this channel (PM). Owner/ACL may call from PM for global lookup.
!idle <nick> anyone How long nick has been idle in this channel. Responds in channel.
!log <nick> [n] owner / ACL Full event log for nick (PM)
!afk anyone Reset your idle timer

Admin (owner)

Command Short Description
!join <#channel> !j Join a channel
!part [#channel] !p Leave a channel
!chans !c List channels

Configurable settings (!set <key> <value>)

Key Default Description
flood_threshold 5 Messages before flood action
flood_window_sec 10 Flood detection window (seconds)
caps_filter 1 Enable caps filter (0/1)
caps_percent 70 Caps percentage threshold
caps_min_len 10 Minimum message length to check
repeat_filter 1 Enable repeat filter (0/1)
repeat_threshold 3 Repeated messages before action
repeat_window_sec 30 Repeat detection window (seconds)
clone_limit 2 Max connections from same host
join_flood_filter 1 Enable join flood filter (0/1)
join_flood_count 5 Joins before action
join_flood_window 10 Join flood window (seconds)
nick_flood_filter 1 Enable nick flood filter (0/1)
nick_flood_count 3 Nick changes before action
nick_flood_window 60 Nick flood window (seconds)
badword_action kick Action on badword: kick or warn
tempban_max_min 60 Max duration for !tempban (minutes)
idle_warn_min 45 Minutes idle before warning
idle_kick_min 60 Minutes idle before kick
log_limit 6 Default number of events shown by !log
greet 1 Send join greeting (0/1)

Config keys

Key Description
[osterman] db_path Path to JSON database file