'Evennia -> User
This is the main route for sending data back to the user from the
server.
Args:
text (str, optional): text data to send
from_obj (Object or Player, optional): Object sending. If given,
its at_msg_send() hook will be called.
session (Session or list, optional): Session object or a list of
Sessions to receive this send. If given, overrules the
default send behavior for the current
MULTISESSION_MODE.
options (list): Protocol-specific options. Passed on to the protocol.
Kwargs:
any (dict): All other keywords are passed on to the protocol.'

def msg(self, text=None, from_obj=None, session=None, options=None, **kwargs):

    if from_obj:
        try:
            from_obj.at_msg_send(text=text, to_obj=self, **kwargs)
        except Exception:
            pass
    try:
        if (not self.at_msg_receive(text=text, **kwargs)):
            return
    except Exception:
        pass
    kwargs['options'] = options
    sessions = (make_iter(session) if session else self.sessions.all())
    for session in sessions:
        session.data_out(text=text, **kwargs)
