Party Line: whoami command

This commit is contained in:
Michał Rudowicz 2025-10-15 18:32:18 +02:00
parent 1d365359ee
commit 1a5b3c7cc2
1 changed files with 25 additions and 9 deletions

View File

@ -83,10 +83,22 @@ def handle_logout(msg, r, from_known_sender, known_senders: Iterable):
return
def handle_help(msg):
def handle_whoami(msg, _, from_known_sender, known_senders: Iterable):
if not from_known_sender:
msg.reply("You not logged in.")
return
for s in known_senders:
if s['hash'] == msg.sender:
msg.reply(f"Logged in as {s['nick']}.")
return
assert False
def handle_help(msg, _, __, ___):
msg.reply("""Supported commands:
/login [NICK] [PASSWORD] - Logs user in. Partyline messages will be sent.
/logout - Logs user out. Partyline messages will stop.
/whoami - Tells you your nic if you're logged in.
/help - Displays this message.""")
@ -95,6 +107,15 @@ def send_to(text: str, receiver_hashes: Iterable[str]):
bot.send(receiver, text)
COMMANDS = {
"/login": handle_login,
"/logout": handle_logout,
"/whoami": handle_whoami,
"/help": handle_help,
"/": handle_help
}
@bot.received
def handle_msg(msg):
r = Redis(host='localhost', port=6379, db=0)
@ -107,14 +128,9 @@ def handle_msg(msg):
known_senders, None)
from_known_sender = sender_info is not None
assert isinstance(msg.content, str)
if msg.content.startswith("/login"):
return handle_login(msg, r, from_known_sender, known_senders)
if msg.content.startswith("/logout"):
return handle_logout(msg, r, from_known_sender, known_senders)
if msg.content.startswith("/help"):
return handle_help(msg)
if msg.content.startswith("/"):
return handle_help(msg)
for cmd in COMMANDS:
if msg.content.startswith(cmd):
return COMMANDS[cmd](msg, r, from_known_sender, known_senders)
if not from_known_sender:
msg.reply("Please identify with `/login [NICK] [PASSWORD]`")