""" This example implements Matrix bot that echoes all text messages it receives. It uses environment variables to specify authorization data. Use Ctrl+C to stop the bot. """ import asyncio import os import logging from mab import * from _environment import check_environment async def on_text_message(ctx: EventContext) -> None: """This callback is called when a text message arrives.""" await ctx.bot.send.text(ctx.room, ctx[CTX_BODY]) async def main() -> None: """Application entry point""" logging.basicConfig(level=logging.INFO) logging.getLogger("nio").setLevel(logging.CRITICAL+1) check_environment() config = MatrixBotConfig( matrix_homeserver_url=os.environ["MATRIX_HOMESERVER"], matrix_username_localpart=os.environ["MATRIX_USERNAME"], storage_directory="session_storage" ) bot = MatrixBot(config) bot.add_callback( ~SenderIsBotFilter() & BodyExistsFilter() & MessageTypeFilter(MessageType.TEXT), on_text_message) # run until Ctrl+C try: await bot.run() except asyncio.CancelledError: pass if __name__ == "__main__": asyncio.run(main())