def add_field_monitor(self, obj, session, field_name, oobfuncname, *args, **kwargs):
        """
        Add a monitor tracking a database field

        Args:
            obj (Object): The object who'se field is to be monitored.
            session (Session): Session monitoring.
            field_name (str): Name of database field to monitor. The db_* can optionally
                be skipped (it will be automatically appended if missing).
            oobfuncname (str): OOB function to call when field changes.

        Notes:
            When the field updates the given oobfunction will be called as

                `oobfuncname(session, fieldname, obj, *args, **kwargs)`

            where `fieldname` is the name of the monitored field and
            `obj` is the object on which the field sits. From this you
            can also easily get the new field value if you want.

        """
        sessid = session.sessid
        # all database field names starts with db_*
        field_name = field_name if field_name.startswith("db_") else "db_%s" % field_name
        self._add_monitor(obj, sessid, field_name, oobfuncname, *args, **kwargs)
dataset/ETHPy150Open evennia/evennia/evennia/server/oobhandler.py/OOBHandler.add_field_monitor/original