from paircd.client import Client
|
|
from paircd.command_handler import CommandHandler
|
|
from paircd.message import Message
|
|
from paircd.server import Server
|
|
|
|
|
|
class NickHandler(CommandHandler):
|
|
def __init__(self) -> None:
|
|
super().__init__("NICK", 1)
|
|
|
|
async def handle(self, server: Server, client: Client, msg: Message) -> None:
|
|
nickname = msg.args[0]
|
|
|
|
# Remove stale references if they exist
|
|
if client.nickname:
|
|
server.remove_client_by_name(client.nickname)
|
|
for channel_name in client.channels:
|
|
channel = server.get_channel_by_name(channel_name)
|
|
channel.remove_client_by_nick(client.nickname)
|
|
|
|
client.nickname = nickname
|
|
|
|
# Add references for client
|
|
server.add_client(client)
|
|
for channel_name in client.channels:
|
|
channel = server.get_channel_by_name(channel_name)
|
|
channel.remove_client_by_nick(client.nickname)
|
|
|
|
client.register()
|