Update !fleave

This commit is contained in:
Vgr E. Barry 2017-04-16 23:47:28 -04:00
parent 4ce8888274
commit 08eaa34130
2 changed files with 43 additions and 42 deletions

View File

@ -152,9 +152,9 @@
"not_allowed": "No, that won't be allowed.", "not_allowed": "No, that won't be allowed.",
"fjoin_success": "\u0002{0}\u0002 used fjoin and raised the number of players to \u0002{1}\u0002.", "fjoin_success": "\u0002{0}\u0002 used fjoin and raised the number of players to \u0002{1}\u0002.",
"fquit_success": "\u0002{0}\u0002 is forcing \u0002{1}\u0002 to leave.", "fquit_success": "\u0002{0}\u0002 is forcing \u0002{1}\u0002 to leave.",
"fquit_goodbye": " Say goodbye to the \u0002{0}\u0002.", "fquit_goodbye": "Say goodbye to the \u0002{0}\u0002.",
"no_players_remaining": " No more players remaining.", "no_players_remaining":" No more players remaining.",
"new_player_count": " New player count: \u0002{0}\u0002", "new_player_count": "New player count: \u0002{0}\u0002",
"fstart_success": "\u0002{0}\u0002 has forced the game to start.", "fstart_success": "\u0002{0}\u0002 has forced the game to start.",
"account_reidentify": "Please reidentify to the account \u0002{0}\u0002", "account_reidentify": "Please reidentify to the account \u0002{0}\u0002",
"account_midgame_change": "Please do not change accounts midgame", "account_midgame_change": "Please do not change accounts midgame",

View File

@ -49,6 +49,7 @@ import src.settings as var
from src.utilities import * from src.utilities import *
from src import db, events, dispatcher, channels, users, hooks, logger, proxy, debuglog, errlog, plog from src import db, events, dispatcher, channels, users, hooks, logger, proxy, debuglog, errlog, plog
from src.decorators import command, cmd, hook, handle_error, event_listener, COMMANDS from src.decorators import command, cmd, hook, handle_error, event_listener, COMMANDS
from src.functions import get_players
from src.messages import messages from src.messages import messages
from src.warnings import * from src.warnings import *
from src.context import IRCContext from src.context import IRCContext
@ -1050,61 +1051,61 @@ def fjoin(var, wrapper, message):
fake = True fake = True
if maybe_user is not users.Bot: if maybe_user is not users.Bot:
if maybe_user is None: if maybe_user is None and users.predicate(tojoin) and botconfig.DEBUG_MODE:
maybe_user = users.FakeUser.from_nick(tojoin) maybe_user = users._add(wrapper.client, nick=tojoin) # FIXME
evt.data["join_player"](var, type(wrapper)(maybe_user, wrapper.target), forced=True, who=wrapper.source) evt.data["join_player"](var, type(wrapper)(maybe_user, wrapper.target), forced=True, who=wrapper.source)
else: else:
wrapper.pm(messages["not_allowed"]) wrapper.pm(messages["not_allowed"])
if fake: if fake:
wrapper.send(messages["fjoin_success"].format(wrapper.source, len(list_players()))) wrapper.send(messages["fjoin_success"].format(wrapper.source, len(list_players())))
@cmd("fleave", "fquit", flag="A", pm=True, phases=("join", "day", "night")) @command("fleave", "fquit", flag="A", pm=True, phases=("join", "day", "night"))
def fleave(cli, nick, chan, rest): def fleave(var, wrapper, message):
"""Forces someone to leave the game.""" """Force someone to leave the game."""
for a in re.split(" +",rest): for person in re.split(" +", message):
a = a.strip() person = person.strip()
if not a: if not person:
continue continue
pl = list_players()
pll = [x.lower() for x in pl] target, _ = users.complete_match(person, get_players())
dcl = [user.nick for user in var.DEADCHAT_PLAYERS] if var.PHASE != "join" else [] dead_target = None
dcll = [x.lower() for x in dcl] if var.PHASE in var.GAME_PHASES:
if a.lower() in pll: dead_target, _ = users.complete_match(person, var.DEADCHAT_PLAYERS)
if chan != botconfig.CHANNEL: if target is not None:
reply(cli, nick, chan, messages["fquit_fail"], private=True) if wrapper.target is not channels.Main:
wrapper.pm(messages["fquit_fail"])
return return
a = pl[pll.index(a.lower())]
message = messages["fquit_success"].format(nick, a) msg = [messages["fquit_success"].format(wrapper.source, target)]
if get_role(a) != "person" and var.ROLE_REVEAL in ("on", "team"): if get_role(target.nick) != "person" and var.ROLE_REVEAL in ("on", "team"):
message += messages["fquit_goodbye"].format(get_reveal_role(a)) msg.append(messages["fquit_goodbye"].format(get_reveal_role(target.nick)))
if var.PHASE == "join": if var.PHASE == "join":
lpl = len(list_players()) - 1 player_count = len(list_players()) - 1
if lpl == 0: to_say = "new_player_count"
message += messages["no_players_remaining"] if not player_count:
else: to_say = "no_players_remaining"
message += messages["new_player_count"].format(lpl) msg.append(messages[to_say].format(player_count))
cli.msg(chan, message)
wrapper.send(*msg)
if var.PHASE != "join": if var.PHASE != "join":
for r, rset in var.ORIGINAL_ROLES.items(): for roleset in var.ORIGINAL_ROLES.values():
if a in rset: if target.nick in roleset:
var.ORIGINAL_ROLES[r].remove(a) roleset.remove(target.nick)
var.ORIGINAL_ROLES[r].add("(dced)"+a) roleset.add("(dced)" + target.nick)
if a in var.PLAYERS: if target.nick in var.PLAYERS:
var.DCED_PLAYERS[a] = var.PLAYERS.pop(a) var.DCED_PLAYERS[target.nick] = var.PLAYERS.pop(target.nick)
del_player(cli, a, death_triggers=False) del_player(wrapper.client, target.nick, death_triggers=False) # FIXME: Need to fix once del_player is updated
elif a.lower() in dcll: elif dead_target is not None:
a = dcl[dcll.index(a.lower())] leave_deadchat(var, dead_target, force=wrapper.source)
if wrapper.source not in var.DEADCHAT_PLAYERS:
leave_deadchat(var, users._get(a), force=nick) # FIXME wrapper.pm(messages["admin_fleave_deadchat"].format(dead_target))
if nick.lower() not in dcll:
reply(cli, nick, chan, messages["admin_fleave_deadchat"].format(a), private=True)
else: else:
cli.msg(chan, messages["not_playing"].format(a)) wrapper.send(messages["not_playing"].format(person))
return return
@cmd("fstart", flag="A", phases=("join",)) @cmd("fstart", flag="A", phases=("join",))