+logging.basicConfig(filename='matrix-goal-bot.log', encoding='utf-8', level=logging.DEBUG)
+logging.getLogger('nio').setLevel(logging.WARNING)
+logging.getLogger('asyncio').setLevel(logging.WARNING)
+
+logger = logging.getLogger(__name__)
+logger.info("Starting goal bot...")
+
+kwargs = {}
+# How to connect to Matrix
+kwargs['matrix_server'] = os.environ.get('MATRIX_SERVER')
+kwargs['bot_name'] = os.environ.get('MATRIX_BOT')
+kwargs['bot_pwd'] = os.environ.get('MATRIX_BOT_PWD')
+
+# Prefix to listen for
+kwargs['bot_prefix'] = os.environ.get('MATRIX_BOT_PREFIX', '!chore')
+
+logger.info(f'Goal bot will connect to {kwargs["matrix_server"]} as {kwargs["bot_name"]}')
+
+# Where to store data
+DATA_DIR = os.environ.get('MATRIX_DATA_DIR', '')
+DB_FILE = os.environ.get('MATRIX_DB_FILE', 'goal.db')
+kwargs['db_file'] = os.path.join(DATA_DIR, DB_FILE)
+
+logger.info(f'Goal bot will store data at {kwargs["db_file"]}')
+
+
+goal_bot = GoalBot(**kwargs)
+
+@goal_bot.bot.listener.on_message_event