34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
# crowdcontrol.py by craisins in 2014
|
|
# Bot must have some sort of op or admin privileges to be useful
|
|
|
|
import re
|
|
import time
|
|
from util import hook
|
|
|
|
# Use "crowdcontrol" array in config
|
|
# syntax
|
|
# rule:
|
|
# re: RegEx. regular expression to match
|
|
# msg: String. message to display either with kick or as a warning
|
|
# kick: Integer. 1 for True, 0 for False on if to kick user
|
|
# ban_length: Integer. (optional) Length of time (seconds) to ban user. (-1 to never unban, 0 to not ban, > 1 for time)
|
|
|
|
|
|
@hook.regex(r'.*')
|
|
def crowdcontrol(inp, kick=None, ban=None, unban=None, reply=None, bot=None):
|
|
inp = inp.group(0)
|
|
for rule in bot.config.get('crowdcontrol', []):
|
|
if re.search(rule['re'], inp) is not None:
|
|
should_kick = rule.get('kick', 0)
|
|
ban_length = rule.get('ban_length', 0)
|
|
reason = rule.get('msg')
|
|
if ban_length != 0:
|
|
ban()
|
|
if should_kick:
|
|
kick(reason=reason)
|
|
elif 'msg' in rule:
|
|
reply(reason)
|
|
if ban_length > 0:
|
|
time.sleep(ban_length)
|
|
unban()
|