wait: Add per-user rate limit

This commit is contained in:
nyuszika7h 2015-01-14 13:50:14 +01:00
parent 54fe9b347b
commit 431ebe86d3
2 changed files with 8 additions and 0 deletions

View File

@ -61,6 +61,7 @@ var.LAST_GSTATS = None
var.LAST_PSTATS = None var.LAST_PSTATS = None
var.LAST_TIME = None var.LAST_TIME = None
var.LAST_START = {} var.LAST_START = {}
var.LAST_WAIT = {}
var.USERS = {} var.USERS = {}
@ -5879,11 +5880,17 @@ def wait(cli, nick, chan, rest):
if chan != botconfig.CHANNEL: if chan != botconfig.CHANNEL:
return return
if (var.LAST_WAIT and nick in var.LAST_WAIT and var.LAST_WAIT[nick] +
timedelta(seconds=var.WAIT_RATE_LIMIT) > datetime.now()):
cli.notice(nick, ("This command is rate-limited. Please wait a while "
"before using it again."))
return
if var.WAITED >= var.MAXIMUM_WAITED: if var.WAITED >= var.MAXIMUM_WAITED:
cli.msg(chan, "Limit has already been reached for extending the wait time.") cli.msg(chan, "Limit has already been reached for extending the wait time.")
return return
now = datetime.now() now = datetime.now()
var.LAST_WAIT[nick] = now
if now > var.CAN_START_TIME: if now > var.CAN_START_TIME:
var.CAN_START_TIME = now + timedelta(seconds=var.EXTRA_WAIT) var.CAN_START_TIME = now + timedelta(seconds=var.EXTRA_WAIT)
else: else:

View File

@ -14,6 +14,7 @@ GSTATS_RATE_LIMIT = 0
PSTATS_RATE_LIMIT = 0 PSTATS_RATE_LIMIT = 0
TIME_RATE_LIMIT = 10 TIME_RATE_LIMIT = 10
START_RATE_LIMIT = 10 # (per-user) START_RATE_LIMIT = 10 # (per-user)
WAIT_RATE_LIMIT = 10 # (per-user)
SHOTS_MULTIPLIER = .12 # ceil(shots_multiplier * len_players) = bullets given SHOTS_MULTIPLIER = .12 # ceil(shots_multiplier * len_players) = bullets given
SHARPSHOOTER_MULTIPLIER = 0.06 SHARPSHOOTER_MULTIPLIER = 0.06
MIN_PLAYERS = 4 MIN_PLAYERS = 4