Browse Source

make !frehash more powerful

master
jcao219 13 years ago
parent
commit
02171c2875
  1. 42
      modules/common.py
  2. 40
      modules/wolfgame.py

42
modules/common.py

@ -7,6 +7,7 @@ import tools.moduleloader as ld
import traceback import traceback
from settings import common as var from settings import common as var
from base64 import b64encode from base64 import b64encode
import imp
def on_privmsg(cli, rawnick, chan, msg, notice = False): def on_privmsg(cli, rawnick, chan, msg, notice = False):
currmod = ld.MODULES[ld.CURRENT_MODULE] currmod = ld.MODULES[ld.CURRENT_MODULE]
@ -102,7 +103,10 @@ def connect_callback(cli):
cli.cap("REQ", "extended-join") cli.cap("REQ", "extended-join")
cli.cap("REQ", "account-notify") cli.cap("REQ", "account-notify")
ld.MODULES[ld.CURRENT_MODULE].connect_callback(cli) try:
ld.MODULES[ld.CURRENT_MODULE].connect_callback(cli)
except AttributeError:
pass # no connect_callback for this one
cli.nick(botconfig.NICK) # very important (for regain/release) cli.nick(botconfig.NICK) # very important (for regain/release)
@ -159,6 +163,42 @@ def connect_callback(cli):
def on_ping(cli, prefix, server): def on_ping(cli, prefix, server):
cli.send('PONG', server) cli.send('PONG', server)
@cmd("frehash", admin_only = True)
def reload_modules(cli, nick, chan, rest):
error = False
try:
imp.reload(var)
imp.reload(botconfig)
imp.reload(decorators.botconfig)
except SyntaxError as e:
logging.error(traceback.format_exc())
cli.msg(chan, "Syntax error.")
error = True
for nam, mod in ld.MODULES.items():
if nam == ld.CURRENT_MODULE:
try:
mod.quit_callback(cli)
except AttributeError:
pass # no quit_callback
print("Reloading module {0}....".format(nam))
try:
imp.reload(mod)
imp.reload(mod.var)
imp.reload(mod.botconfig)
imp.reload(mod.decorators.botconfig)
except AttributeError:
pass
except SyntaxError as e:
logging.error(traceback.format_exc())
cli.msg(chan, "Syntax error in module {0}".format(nam))
error = True
if not error:
cli.msg(chan, "Operation successful.")
if botconfig.DEBUG_MODE: if botconfig.DEBUG_MODE:
@cmd("module", admin_only = True) @cmd("module", admin_only = True)

40
modules/wolfgame.py

@ -117,6 +117,12 @@ def connect_callback(cli):
cli.who(botconfig.CHANNEL, "%nuhaf") cli.who(botconfig.CHANNEL, "%nuhaf")
def quit_callback(cli):
# clean up
if var.PHASE in ("day", "night"):
stop_game(cli)
else:
reset(cli)
@ -217,24 +223,24 @@ def restart_program(cli, nick, *rest):
@cmd("frehash", admin_only=True) # @cmd("frehash", admin_only=True)
def frehash(cli, nick, chan, rest): # def frehash(cli, nick, chan, rest):
if var.PHASE in ("day", "night"): # if var.PHASE in ("day", "night"):
stop_game(cli) # stop_game(cli)
else: # else:
reset(cli) # reset(cli)
imp.reload(botconfig) # imp.reload(botconfig)
imp.reload(var) # imp.reload(var)
imp.reload(decorators.botconfig) # imp.reload(decorators.botconfig)
if botconfig.DEBUG_MODE: # if botconfig.DEBUG_MODE:
var.NIGHT_TIME_LIMIT = 0 # 90 # var.NIGHT_TIME_LIMIT = 0 # 90
var.DAY_TIME_LIMIT_WARN = 0 # var.DAY_TIME_LIMIT_WARN = 0
var.DAY_TIME_LIMIT_CHANGE = 0 # var.DAY_TIME_LIMIT_CHANGE = 0
var.KILL_IDLE_TIME = 0 #300 # var.KILL_IDLE_TIME = 0 #300
var.WARN_IDLE_TIME = 0 #180 # var.WARN_IDLE_TIME = 0 #180
cli.msg(chan, "Operation successful.") # cli.msg(chan, "Operation successful.")
@ -787,8 +793,6 @@ def stop_game(cli, winner = ""):
return True return True
def chk_win(cli): def chk_win(cli):
""" Returns True if someone won """ """ Returns True if someone won """

Loading…
Cancel
Save