{"id":19590979,"url":"https://github.com/anewusername/mxpp","last_synced_at":"2025-10-25T01:21:02.863Z","repository":{"id":230630607,"uuid":"72064777","full_name":"anewusername/mxpp","owner":"anewusername","description":"Bot for bridging Matrix and XMPP","archived":false,"fork":false,"pushed_at":"2019-10-26T22:00:28.000Z","size":56,"stargazers_count":29,"open_issues_count":3,"forks_count":4,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-05T00:41:16.250Z","etag":null,"topics":["bot","bridges-matrix","chat","matrix","xmpp"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anewusername.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2016-10-27T02:49:39.000Z","updated_at":"2025-01-23T00:17:40.000Z","dependencies_parsed_at":"2024-03-31T01:01:47.640Z","dependency_job_id":null,"html_url":"https://github.com/anewusername/mxpp","commit_stats":null,"previous_names":["anewusername/mxpp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anewusername%2Fmxpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anewusername%2Fmxpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anewusername%2Fmxpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anewusername%2Fmxpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anewusername","download_url":"https://codeload.github.com/anewusername/mxpp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251145532,"owners_count":21543060,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bot","bridges-matrix","chat","matrix","xmpp"],"created_at":"2024-11-11T08:27:07.760Z","updated_at":"2025-10-08T18:18:13.115Z","avatar_url":"https://github.com/anewusername.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mxpp\n\n**mxpp** is a bot which bridges Matrix and one-to-one XMPP chat.\n\nI wrote this bot to finally get persistent chat history for my\ngchat/hangouts/google talk conversations, and to evaluate Matrix\nfor future use, so it should probably work for those use cases.\n\n\n**Functionality**\n\n* The bot creates one Matrix room for each user on your contact list,\nthen invites a list of Matrix users (of your choosing) to all the rooms.\n    - Enabled with ```send_messages_to_jid_rooms``` option in ```config.yaml```\n      and can be controlled with per-user granularity\n    - Room name is set to the contact's name.\n    - Room topic is set to the contact's JID.\n    - Any text sent to the room is sent to the contact's JID.\n    - Any text received from the contact's JID is sent as a notice\n      to the room.\n* A room named \"XMPP Control Room\" is created\n    - Presence info (\"available\" or \"unavailable\") is sent to this room,\n      controllable per-user with the ```send_presences_to_control``` option\n      in ```config.yaml```\n    - Text command ```purge``` makes the bot leave from any rooms which do\n      not correspond to a roster entry (excluding the two special rooms),\n      and also from any unoccupied rooms (eg. if the user left).\n    - Text command ```refresh``` probes the presence of all XMPP contacts\n      and requests a roster update from the server.\n    - Text commands ```joinmuc room_jid@roomserver.com``` and ```leavemuc room_jid@roomserver.com```\n      allow you to join and leave multi-user chats.\n* A room named \"XMPP All Chat\" is created\n    - All inbound and outbound chat messages are logged here.\n    - Enabled with per-user granularity using the ```send_messages_to_all_chat```\n      option in ```config.yaml```\n    - You can send a message directly to a jid without creating a room using\n      the ```/m jid@example.com your message here``` syntax in this room.\n* If the bot is restarted, it recreates its room-JID map based on the\n  room topics, and continues as before.\n* Currently, the bot automatically accepts anytime anyone asks to add\n  you on XMPP, and also automatically adds them to your contact roster.\n* Multi-user chats (MUCs) are handled by creating additional rooms\n    - Room topic is set to \"\u003cgroupchat\u003eroom_jid@roomserver.com\"\n    - To join a MUC, send a message saying ```joinmuc room_jid@roomserver.com```\n      to the \"XMPP Control Room\"\n    - To leave a MUC, send a message saying ```leavemuc room_jid@roomserver.com```\n      to the \"XMPP Control Room\". Alternatively, leave the MUC room and send the message\n      ```purge``` instead.\n\n\n## Installation\nInstall the dependencies:\n```bash\npip3 install -r requirements.txt\n```\n\nEdit config.yaml to set your usernames, passwords, and servers.\n\nIf you're using your own homeserver and you have more than a handful of\n XMPP contacts, you'll probably want to loosen the rate limits on your\n homeserver (see ```homeserver.yaml``` for synapse), or you'll have to\n wait multiple minutes while the bot creates a bunch of new rooms.\n\nYou should probably also set your Matrix client to auto-accept new room\n invitations for the first run of the bot, so you don't have to\n manually accept each invitation.\n\nFrom the same directory as ```config.yaml```, run\n```bash\npython3 -m mxpp.main\n```\n\n**Dependencies:**\n\n* python \u003e=3.5 (written and tested with 3.5)\n* [sleekXMPP](https://pypi.python.org/pypi/sleekxmpp/1.3.1)\n* [matrix_client](https://github.com/matrix-org/matrix-python-sdk)\n  (currently requires git version)\n* [pyyaml](https://pypi.python.org/pypi/PyYAML/3.12)\n* and their dependencies (dnspython, requests, others?)\n\n\n## TODO\n\n* Set bot's presence for each room individually\n (impossible with current Matrix m.presence API)\n* Require higher-than-default power-level to speak in All-chat (i.e.,\nonly let the bot talk in all-chat)\n (waiting on matrix_client pull request)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanewusername%2Fmxpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanewusername%2Fmxpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanewusername%2Fmxpp/lists"}