diff --git a/src/players/player.py b/src/players/player.py index 8c15b74486..9935a6c6fe 100644 --- a/src/players/player.py +++ b/src/players/player.py @@ -383,6 +383,16 @@ class Player(TypeClass): reason = reason and "(%s)" % reason or "" self._send_to_connect_channel("{R%s disconnected %s{n" % (self.key, reason)) + def at_post_disconnect(self): + """ + This is called after disconnection is complete. No messages + can be relayed to the player from here. After this call, the + player should not be accessed any more, making this a good + spot for deleting it (in the case of a guest player account, + for example). + """ + pass + def at_message_receive(self, message, from_obj=None): """ Called when any text is emitted to this diff --git a/src/server/serversession.py b/src/server/serversession.py index 4cdd2375a5..531add1fe9 100644 --- a/src/server/serversession.py +++ b/src/server/serversession.py @@ -123,6 +123,8 @@ class ServerSession(Session): if not self.sessionhandler.sessions_from_player(player): # no more sessions connected to this player player.is_connected = False + # this may be used to e.g. delete player after disconnection etc + _GA(player.typeclass, "at_post_disconnect")() def get_player(self): """