2014-01-13 23:18:39 -08:00
from util import hook
# Default value.
# If True, all channels without a setting will have regex enabled
# If False, all channels without a setting will have regex disabled
default_enabled = True
2014-02-14 19:43:36 +13:00
db_ready = False
2014-01-13 23:18:39 -08:00
def db_init ( db ) :
2014-02-14 19:43:36 +13:00
global db_ready
if not db_ready :
2014-01-13 23:18:39 -08:00
db . execute ( " CREATE TABLE IF NOT EXISTS regexchans(channel PRIMARY KEY, status) " )
db . commit ( )
2014-02-14 19:43:36 +13:00
db_ready = True
2014-01-13 23:18:39 -08:00
def get_status ( db , channel ) :
row = db . execute ( " SELECT status FROM regexchans WHERE channel = ? " , [ channel ] ) . fetchone ( )
if row :
return row [ 0 ]
else :
return None
def set_status ( db , channel , status ) :
row = db . execute ( " REPLACE INTO regexchans (channel, status) VALUES(?, ?) " , [ channel , status ] )
db . commit ( )
def delete_status ( db , channel ) :
row = db . execute ( " DELETE FROM regexchans WHERE channel = ? " , [ channel ] )
db . commit ( )
def list_status ( db ) :
row = db . execute ( " SELECT * FROM regexchans " ) . fetchall ( )
result = None
for values in row :
if result :
result + = u " , {} : {} " . format ( values [ 0 ] , values [ 1 ] )
else :
result = u " {} : {} " . format ( values [ 0 ] , values [ 1 ] )
return result
@hook.sieve
def sieve_regex ( bot , inp , func , kind , args ) :
db = bot . get_db_connection ( inp . conn )
db_init ( db )
if kind == ' regex ' and inp . chan . startswith ( " # " ) and func . __name__ != ' factoid ' :
chanstatus = get_status ( db , inp . chan )
if chanstatus != " ENABLED " and ( chanstatus == " DISABLED " or not default_enabled ) :
print u " Denying input.raw= {} , kind= {} , args= {} from {} " . format ( inp . raw , kind , args , inp . chan )
return None
print u " Allowing input.raw= {} , kind= {} , args= {} from {} " . format ( inp . raw , kind , args , inp . chan )
return inp
@hook.command ( permissions = [ " botcontrol " ] )
def enableregex ( inp , db = None , message = None , notice = None , chan = None , nick = None ) :
db_init ( db )
inp = inp . strip ( ) . lower ( )
if not inp :
channel = chan
elif inp . startswith ( " # " ) :
channel = inp
else :
channel = u " # {} " . format ( inp )
message ( u " Enabling regex matching (youtube, etc) (issued by {} ) " . format ( nick ) , target = channel )
notice ( u " Enabling regex matching (youtube, etc) in channel {} " . format ( channel ) )
set_status ( db , channel , " ENABLED " )
@hook.command ( permissions = [ " botcontrol " ] )
def disableregex ( inp , db = None , message = None , notice = None , chan = None , nick = None ) :
db_init ( db )
inp = inp . strip ( ) . lower ( )
if not inp :
channel = chan
elif inp . startswith ( " # " ) :
channel = inp
else :
channel = u " # {} " . format ( inp )
message ( u " Disabling regex matching (youtube, etc) (issued by {} ) " . format ( nick ) , target = channel )
notice ( u " Disabling regex matching (youtube, etc) in channel {} " . format ( channel ) )
set_status ( db , channel , " DISABLED " )
@hook.command ( permissions = [ " botcontrol " ] )
def resetregex ( inp , db = None , message = None , notice = None , chan = None , nick = None ) :
db_init ( db )
inp = inp . strip ( ) . lower ( )
if not inp :
channel = chan
elif inp . startswith ( " # " ) :
channel = inp
else :
channel = u " # {} " . format ( inp )
message ( u " Resetting regex matching setting (youtube, etc) (issued by {} ) " . format ( nick ) , target = channel )
notice ( u " Resetting regex matching setting (youtube, etc) in channel {} " . format ( channel ) )
delete_status ( db , channel )
@hook.command ( permissions = [ " botcontrol " ] )
def regexstatus ( inp , db = None , chan = None ) :
db_init ( db )
inp = inp . strip ( ) . lower ( )
if not inp :
channel = chan
elif inp . startswith ( " # " ) :
channel = inp
else :
channel = u " # {} " . format ( inp )
return u " Regex status for {} : {} " . format ( channel , get_status ( db , channel ) )
@hook.command ( permissions = [ " botcontrol " ] )
def listregex ( inp , db = None ) :
db_init ( db )
return list_status ( db )