Add option for Vgr's reverse (opt-in) ping mode
This commit is contained in:
parent
9fc3d081ac
commit
92a0c62f95
@ -247,9 +247,16 @@ def pinger(cli, nick, chan, rest):
|
||||
if not var.PINGING: return
|
||||
if user in (botconfig.NICK, nick): return # Don't ping self.
|
||||
|
||||
if (var.PINGING and 'G' not in status and
|
||||
'+' not in status and cloak not in var.AWAY):
|
||||
if (all((not var.OPT_IN_PING,
|
||||
'G' not in status, # not /away
|
||||
'+' not in status, # not already joined (voiced)
|
||||
cloak not in var.AWAY)) or
|
||||
all((var.OPT_IN_PING, '+' not in status,
|
||||
cloak in var.PING_IN))):
|
||||
|
||||
TO_PING.append(user)
|
||||
else:
|
||||
print(var.OPT_IN_PING, var.PINGING, status, cloak)
|
||||
|
||||
|
||||
|
||||
@ -271,37 +278,6 @@ def pinger(cli, nick, chan, rest):
|
||||
cli.who(botconfig.CHANNEL)
|
||||
|
||||
|
||||
@cmd("away", raw_nick=True)
|
||||
@pmcmd("away", raw_nick=True)
|
||||
def away(cli, nick, *rest):
|
||||
"""Use this to activate your away status (so you aren't pinged)."""
|
||||
cloak = parse_nick(nick)[3]
|
||||
nick = parse_nick(nick)[0]
|
||||
if cloak in var.AWAY:
|
||||
var.AWAY.remove(cloak)
|
||||
var.remove_away(cloak)
|
||||
|
||||
cli.notice(nick, "You are no longer marked as away.")
|
||||
return
|
||||
var.AWAY.append(cloak)
|
||||
var.add_away(cloak)
|
||||
|
||||
cli.notice(nick, "You are now marked as away.")
|
||||
|
||||
@cmd("back", raw_nick=True)
|
||||
@pmcmd("back", raw_nick=True)
|
||||
def back_from_away(cli, nick, *rest):
|
||||
"""Unmarks away status"""
|
||||
cloak = parse_nick(nick)[3]
|
||||
nick = parse_nick(nick)[0]
|
||||
if cloak not in var.AWAY:
|
||||
cli.notice(nick, "You are not marked as away.")
|
||||
return
|
||||
var.AWAY.remove(cloak)
|
||||
var.remove_away(cloak)
|
||||
|
||||
cli.notice(nick, "You are no longer marked as away.")
|
||||
|
||||
@cmd("simple", raw_nick = True)
|
||||
@pmcmd("simple", raw_nick = True)
|
||||
def mark_simple_notify(cli, nick, *rest):
|
||||
@ -321,6 +297,67 @@ def mark_simple_notify(cli, nick, *rest):
|
||||
|
||||
cli.notice(nick, "You now receive simple role instructions.")
|
||||
|
||||
if not var.OPT_IN_PING:
|
||||
@cmd("away", raw_nick=True)
|
||||
@pmcmd("away", raw_nick=True)
|
||||
def away(cli, nick, *rest):
|
||||
"""Use this to activate your away status (so you aren't pinged)."""
|
||||
cloak = parse_nick(nick)[3]
|
||||
nick = parse_nick(nick)[0]
|
||||
if cloak in var.AWAY:
|
||||
var.AWAY.remove(cloak)
|
||||
var.remove_away(cloak)
|
||||
|
||||
cli.notice(nick, "You are no longer marked as away.")
|
||||
return
|
||||
var.AWAY.append(cloak)
|
||||
var.add_away(cloak)
|
||||
|
||||
cli.notice(nick, "You are now marked as away.")
|
||||
|
||||
@cmd("back", raw_nick=True)
|
||||
@pmcmd("back", raw_nick=True)
|
||||
def back_from_away(cli, nick, *rest):
|
||||
"""Unmarks away status"""
|
||||
cloak = parse_nick(nick)[3]
|
||||
nick = parse_nick(nick)[0]
|
||||
if cloak not in var.AWAY:
|
||||
cli.notice(nick, "You are not marked as away.")
|
||||
return
|
||||
var.AWAY.remove(cloak)
|
||||
var.remove_away(cloak)
|
||||
|
||||
cli.notice(nick, "You are no longer marked as away.")
|
||||
|
||||
|
||||
else: # if OPT_IN_PING setting is on
|
||||
@cmd("in", raw_nick=True)
|
||||
@pmcmd("in", raw_nick=True)
|
||||
def get_in(cli, nick, *rest):
|
||||
"""Get yourself in the ping list"""
|
||||
nick, _, _, cloak = parse_nick(nick)
|
||||
if cloak in var.PING_IN:
|
||||
cli.notice(nick, "You are already on the list")
|
||||
return
|
||||
var.PING_IN.append(cloak)
|
||||
var.add_ping(cloak)
|
||||
|
||||
cli.notice(nick, "You are now on the list.")
|
||||
|
||||
@cmd("out", raw_nick=True)
|
||||
@pmcmd("out", raw_nick=True)
|
||||
def get_out(cli, nick, *rest):
|
||||
"""Removes yourself from the ping list"""
|
||||
nick, _, _, cloak = parse_nick(nick)
|
||||
if cloak in var.PING_IN:
|
||||
var.PING_IN.remove(cloak)
|
||||
var.remove_ping(cloak)
|
||||
|
||||
cli.notice(nick, "You are no longer in the list.")
|
||||
return
|
||||
cli.notice(nick, "You are not in the list.")
|
||||
|
||||
|
||||
@cmd("fping", admin_only=True)
|
||||
def fpinger(cli, nick, chan, rest):
|
||||
var.LAST_PING = None
|
||||
@ -2903,4 +2940,4 @@ if botconfig.ALLOWED_NORMAL_MODE_COMMANDS and not botconfig.DEBUG_MODE:
|
||||
for pmcomd in list(PM_COMMANDS.keys()):
|
||||
if (pmcomd not in before_debug_mode_pmcommands and
|
||||
pmcomd not in botconfig.ALLOWED_NORMAL_MODE_COMMANDS):
|
||||
del PM_COMMANDS[pmcomd]
|
||||
del PM_COMMANDS[pmcomd]
|
||||
|
@ -13,8 +13,6 @@ NIGHT_TIME_LIMIT = 120
|
||||
NIGHT_TIME_WARN = 0 # should be less than NIGHT_TIME_LIMIT
|
||||
DAY_TIME_LIMIT_WARN = 780
|
||||
DAY_TIME_LIMIT_CHANGE = 120 # seconds after DAY_TIME_LIMIT_WARN has passed
|
||||
START_WITH_DAY = False
|
||||
WOLF_STEALS_GUN = False
|
||||
KILL_IDLE_TIME = 300
|
||||
WARN_IDLE_TIME = 180
|
||||
PART_GRACE_TIME = 7
|
||||
@ -80,6 +78,13 @@ RULES = ("#wolfgame channel rules: 1) Be nice to others. 2) Do not share informa
|
||||
"family-friendly. 7) Do not paste PM's from the bot during the game. "+
|
||||
"8) Use common sense. 9) Waiting for timeouts is discouraged.")
|
||||
|
||||
# Other settings:
|
||||
START_WITH_DAY = False
|
||||
WOLF_STEALS_GUN = False # at night, the wolf can steal steal the victim's bullets
|
||||
|
||||
OPT_IN_PING = False # instead of !away/!back, users can opt-in to be pinged
|
||||
PING_IN = [] # cloaks of users who have opted in for ping
|
||||
|
||||
is_role = lambda plyr, rol: rol in ROLES and plyr in ROLES[rol]
|
||||
|
||||
def plural(role):
|
||||
@ -172,7 +177,7 @@ conn = sqlite3.connect("data.sqlite3", check_same_thread = False)
|
||||
|
||||
with conn:
|
||||
c = conn.cursor()
|
||||
c.execute('CREATE TABLE IF NOT EXISTS away (nick TEXT)')
|
||||
c.execute('CREATE TABLE IF NOT EXISTS away (nick TEXT)') # whoops, i mean cloak, not nick
|
||||
|
||||
c.execute('CREATE TABLE IF NOT EXISTS simple_role_notify (cloak TEXT)') # people who understand each role
|
||||
|
||||
@ -196,10 +201,12 @@ with conn:
|
||||
'teamwins SMALLINT, individualwins SMALLINT, totalgames SMALLINT, '+
|
||||
'UNIQUE(player, role))'))
|
||||
|
||||
|
||||
|
||||
|
||||
if OPT_IN_PING:
|
||||
c.execute('CREATE TABLE IF NOT EXISTS ping (cloak text)')
|
||||
|
||||
c.execute('SELECT * FROM ping')
|
||||
for row in c:
|
||||
PING_IN.append(row[0])
|
||||
|
||||
|
||||
def remove_away(clk):
|
||||
@ -218,7 +225,13 @@ def add_simple_rolemsg(clk):
|
||||
with conn:
|
||||
c.execute('INSERT into simple_role_notify VALUES (?)', (clk,))
|
||||
|
||||
|
||||
def remove_ping(clk):
|
||||
with conn:
|
||||
c.execute('DELETE from ping where cloak=?', (clk,))
|
||||
def add_ping(clk):
|
||||
with conn:
|
||||
c.execute('INSERT into ping VALUES (?)', (clk,))
|
||||
|
||||
|
||||
def update_role_stats(acc, role, won, iwon):
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user