from piqueserver.commands import (command, get_player, join_arguments,
player_only)
[docs]@command()
@player_only
def login(connection, password):
"""
Log in if you're staff or a trusted member of this server
/login <password>
You will be kicked if a wrong password is given 3 times in a row
"""
for user_type, passwords in connection.protocol.passwords.items():
if password in passwords:
if user_type in connection.user_types:
return "You're already logged in as %s" % user_type
return connection.on_user_login(user_type, True)
if connection.login_retries is None:
connection.login_retries = connection.protocol.login_retries - 1
else:
connection.login_retries -= 1
if not connection.login_retries:
connection.kick('Ran out of login attempts')
return
return 'Invalid password - you have %s tries left' % (
connection.login_retries)
[docs]@command()
def pm(connection, value, *arg):
"""
Send a private message to a given player
/pm <player> <message>
"""
player = get_player(connection.protocol, value)
message = join_arguments(arg)
if len(message) == 0:
return "Please specify your message"
player.send_chat('PM from %s: %s' % (connection.name, message))
return 'PM sent to %s' % player.name
[docs]@command('admin')
def to_admin(connection, *arg):
"""
Send a message to all admins currently online
/admin <message>
"""
protocol = connection.protocol
message = join_arguments(arg)
if not message:
return "Enter a message you want to send, like /admin I'm stuck"
prefix = '(TO ADMINS)'
irc_relay = protocol.irc_relay
if irc_relay:
if irc_relay.factory.bot and irc_relay.factory.bot.colors:
prefix = '\x0304' + prefix + '\x0f'
irc_relay.send(prefix + ' <%s> %s' % (connection.name, message))
for player in protocol.players.values():
if player.admin and player is not connection:
player.send_chat('To ADMINS from %s: %s' %
(connection.name, message))
return 'Message sent to all admins currently online'