2011-11-20 10:23:31 +01:00
# Shitty plugin made by iloveportalz0r
# Broken by The Noodle
2012-02-20 04:29:46 +01:00
# Improved by Lukeroge
2012-02-28 01:39:15 +01:00
# Mute added by neersighted
2011-11-20 10:23:31 +01:00
from util import hook
2012-02-26 07:47:13 +01:00
import sys
2012-02-28 01:39:15 +01:00
import usertracking
import time
2011-11-20 10:23:31 +01:00
2012-02-20 04:29:46 +01:00
# Added to make the move to a new auth system a lot easier
2012-02-19 19:10:57 +01:00
def isadmin ( input ) :
if input . nick in input . bot . config [ " admins " ] :
return True
else :
return False
2012-02-26 07:47:13 +01:00
@hook.command
def quit ( inp , input = None , db = None , notice = None ) :
" .quit [reason] -- kills the bot "
if not isadmin ( input ) :
notice ( " Only bot admins can use this command! " )
return
if inp :
2012-02-26 07:51:54 +01:00
input . conn . send ( " QUIT :Kill switch activated by " + input . nick + " ( " + inp + " ) " )
2012-02-26 07:47:13 +01:00
else :
input . conn . send ( " QUIT :Kill switch activated by " + input . nick + " (no reason) " )
time . sleep ( 3 )
sys . exit ( )
2012-02-20 04:29:46 +01:00
2011-11-20 10:23:31 +01:00
@hook.command
def join ( inp , input = None , db = None , notice = None ) :
" .join <channel> -- joins a channel "
2012-02-19 19:10:57 +01:00
if not isadmin ( input ) :
2011-11-20 10:23:31 +01:00
notice ( " Only bot admins can use this command! " )
return
2011-11-20 15:06:44 +01:00
notice ( " Attempting to join " + inp + " ... " )
2011-11-20 10:23:31 +01:00
input . conn . send ( " JOIN " + inp )
2012-02-26 07:47:13 +01:00
2011-11-20 10:23:31 +01:00
@hook.command
def cycle ( inp , input = None , db = None , notice = None ) :
" .cycle <channel> -- cycles a channel "
2012-02-19 19:10:57 +01:00
if not isadmin ( input ) :
2011-11-20 10:23:31 +01:00
notice ( " Only bot admins can use this command! " )
return
2011-11-20 15:06:44 +01:00
notice ( " Attempting to cycle " + inp + " ... " )
2011-11-20 10:23:31 +01:00
input . conn . send ( " PART " + inp )
input . conn . send ( " JOIN " + inp )
@hook.command
def part ( inp , input = None , notice = None ) :
" .part <channel> -- leaves a channel "
2012-02-19 19:10:57 +01:00
if not isadmin ( input ) :
2011-11-20 10:23:31 +01:00
notice ( " Only bot admins can use this command! " )
return
2011-11-20 15:06:44 +01:00
notice ( " Attempting to part from " + inp + " ... " )
2011-11-20 10:23:31 +01:00
input . conn . send ( " PART " + inp )
@hook.command
2012-02-19 03:26:19 +01:00
def nick ( inp , input = None , notice = None ) :
" .nick <nick> -- change the bots nickname to <nick> "
2012-02-19 19:10:57 +01:00
if not isadmin ( input ) :
2011-11-20 10:23:31 +01:00
notice ( " Only bot admins can use this command! " )
return
notice ( " Changing nick to " + inp + " . " )
input . conn . send ( " NICK " + inp )
@hook.command
def raw ( inp , input = None , notice = None ) :
" .raw <command> - Send a RAW IRC command! "
2012-02-19 19:10:57 +01:00
if not isadmin ( input ) :
2011-11-20 10:23:31 +01:00
notice ( " Only bot admins can use this command! " )
return
notice ( " Raw command sent. " )
input . conn . send ( inp )
@hook.command
def kick ( inp , input = None , notice = None ) :
" .kick [channel] <user> [reason] -- kick a user! "
2012-02-19 19:10:57 +01:00
if not isadmin ( input ) :
2011-11-20 10:23:31 +01:00
notice ( " Only bot admins can use this command! " )
return
2012-02-19 19:10:57 +01:00
split = inp . split ( " " )
if split [ 0 ] [ 0 ] == " # " :
chan = split [ 0 ]
user = split [ 1 ]
out = " KICK %s %s " % ( chan , user )
if len ( split ) > 2 :
2011-11-20 10:23:31 +01:00
reason = " "
2012-02-19 19:10:57 +01:00
for x in split [ 2 : ] :
2011-11-20 10:23:31 +01:00
reason = reason + x + " "
reason = reason [ : - 1 ]
out = out + " : " + reason
else :
2012-02-19 19:10:57 +01:00
chan = input . chan
user = split [ 0 ]
out = " KICK %s %s " % ( input . chan , split [ 0 ] )
if len ( split ) > 1 :
2011-11-20 10:23:31 +01:00
reason = " "
2012-02-19 19:10:57 +01:00
for x in split [ 1 : ] :
2011-11-20 10:23:31 +01:00
reason = reason + x + " "
reason = reason [ : - 1 ]
out = out + " : " + reason
2012-02-19 19:10:57 +01:00
notice ( " Attempting to kick %s from %s ... " % ( user , chan ) )
2011-11-20 10:23:31 +01:00
input . conn . send ( out )
@hook.command
def say ( inp , input = None , notice = None ) :
" .say [channel] <message> -- makes the bot say <message> in [channel]. if [channel] is blank the bot will say the <message> in the channel the command was used in. "
2012-02-19 19:10:57 +01:00
if not isadmin ( input ) :
2011-11-20 10:23:31 +01:00
notice ( " Only bot admins can use this command! " )
return
2012-02-19 19:10:57 +01:00
split = inp . split ( " " )
if split [ 0 ] [ 0 ] == " # " :
2011-11-20 10:23:31 +01:00
message = " "
2012-02-19 19:10:57 +01:00
for x in split [ 1 : ] :
2011-11-20 10:23:31 +01:00
message = message + x + " "
message = message [ : - 1 ]
2012-02-19 19:10:57 +01:00
out = " PRIVMSG %s : %s " % ( split [ 0 ] , message )
2011-11-20 10:23:31 +01:00
else :
message = " "
2012-02-19 19:10:57 +01:00
for x in split [ 0 : ] :
2011-11-20 10:23:31 +01:00
message = message + x + " "
message = message [ : - 1 ]
2012-02-19 19:10:57 +01:00
out = " PRIVMSG %s : %s " % ( input . chan , message )
2011-11-20 10:23:31 +01:00
input . conn . send ( out )
2012-02-20 04:29:46 +01:00
@hook.command ( " me " )
2012-02-19 03:20:25 +01:00
@hook.command
def act ( inp , input = None , notice = None ) :
" .act [channel] <action> -- makes the bot act <action> in [channel]. if [channel] is blank the bot will act the <action> in the channel the command was used in. "
2012-02-19 19:10:57 +01:00
if not isadmin ( input ) :
2012-02-19 03:20:25 +01:00
notice ( " Only bot admins can use this command! " )
return
2012-02-19 19:10:57 +01:00
split = inp . split ( " " )
if split [ 0 ] [ 0 ] == " # " :
2012-02-19 03:20:25 +01:00
message = " "
2012-02-19 19:10:57 +01:00
for x in split [ 1 : ] :
2012-02-19 03:20:25 +01:00
message = message + x + " "
message = message [ : - 1 ]
2012-02-19 19:10:57 +01:00
out = " PRIVMSG %s : \x01 ACTION %s \x01 " % ( split [ 0 ] , message )
2012-02-19 03:20:25 +01:00
else :
message = " "
2012-02-19 19:10:57 +01:00
for x in split [ 0 : ] :
2012-02-19 03:20:25 +01:00
message = message + x + " "
message = message [ : - 1 ]
2012-02-19 19:10:57 +01:00
out = " PRIVMSG %s : \x01 ACTION %s \x01 " % ( input . chan , message )
2012-02-19 03:20:25 +01:00
input . conn . send ( out )
2011-11-20 10:23:31 +01:00
@hook.command
def topic ( inp , input = None , notice = None ) :
" .topic [channel] <topic> -- change the topic of a channel "
2012-02-19 19:10:57 +01:00
if not isadmin ( input ) :
2011-11-20 10:23:31 +01:00
notice ( " Only bot admins can use this command! " )
return
2012-02-19 19:10:57 +01:00
split = inp . split ( " " )
if split [ 0 ] [ 0 ] == " # " :
out = " PRIVMSG %s : %s " % ( split [ 0 ] , message )
2011-11-20 10:23:31 +01:00
else :
2012-02-19 19:10:57 +01:00
out = " TOPIC %s : %s " % ( input . chan , message )
2011-11-20 10:23:31 +01:00
input . conn . send ( out )
2012-02-28 01:39:15 +01:00
@hook.sieve
def mutesieve ( bot , input , func , kind , args ) :
if kind == " event " :
return input
if " chan " in input . keys ( ) and input . chan in input . conn . users . channels and hasattr ( input . conn . users [ input . chan ] , " mute " ) :
if input . command == " PRIVMSG " and input . lastparam [ 1 : ] == " unmute " :
return input
else :
return None
return input
@hook.command
def mute ( inp , input = None , db = None , bot = None , users = None ) :
if inp and inp in input . conn . users . channels . keys ( ) :
input . chan = inp
" .mute <channel> -- Mutes the bot "
if usertracking . query ( db , bot . config , input . nick , input . chan , " mute " ) or " o " in users [ input . chan ] . usermodes [ input . nick ] :
users [ input . chan ] . mute = " %s %d " % ( input . nick , time . time ( ) )
input . notice ( " Muted " )
else :
input . notice ( " Only bot admins can use this command! " )
@hook.command
def unmute ( inp , input = None , db = None , bot = None , users = None ) :
if inp and inp in users . channels . keys ( ) :
input . chan = inp
" .unmute <channel> -- Unmutes the bot "
if usertracking . query ( db , bot . config , input . nick , input . chan , " mute " ) or " o " in users [ input . chan ] . usermodes [ input . nick ] :
if hasattr ( users [ input . chan ] , " mute " ) :
input . notice ( " Unmuted " )
del users [ input . chan ] . mute
else :
input . notice ( " Not Muted " )
else :
input . notice ( " Only bot admins can use this command! " )