All Projects → anewusername → mxpp

anewusername / mxpp

Licence: other
Bot for bridging Matrix and XMPP

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to mxpp

Matterbridge
bridge between mattermost, IRC, gitter, xmpp, slack, discord, telegram, rocketchat, twitch, ssh-chat, zulip, whatsapp, keybase, matrix, microsoft teams, nextcloud, mumble, vk and more with REST API (mattermost not required!)
Stars: ✭ 4,452 (+19256.52%)
Mutual labels:  matrix, xmpp
ejabberd mod apns
An ejabberd module to send PUSH messages to iOS devices through APNS
Stars: ✭ 31 (+34.78%)
Mutual labels:  xmpp
telematrix
Bridge between Telegram and Matrix
Stars: ✭ 95 (+313.04%)
Mutual labels:  matrix
addon-matrix
Matrix - Home Assistant Community Add-ons
Stars: ✭ 39 (+69.57%)
Mutual labels:  matrix
TP Arduino DigitalRain Anim
A library that represents Digital Rain Animation on color displays that support TFT_eSPI
Stars: ✭ 80 (+247.83%)
Mutual labels:  matrix
first-neural-network
Simple neural network implemented from scratch in C++.
Stars: ✭ 17 (-26.09%)
Mutual labels:  matrix
oxygenjs
This a JavaScript Library for the Numerical Javascript and Machine Learning
Stars: ✭ 13 (-43.48%)
Mutual labels:  matrix
Scylla
An Elm-based front-end for Matrix.
Stars: ✭ 24 (+4.35%)
Mutual labels:  matrix
astlinux
AstLinux is a "Network Appliance for Communications" x86_64 Linux distribution
Stars: ✭ 23 (+0%)
Mutual labels:  xmpp
matrix-tag-manager
A web interface for supporting power users and their Matrix room tags.
Stars: ✭ 22 (-4.35%)
Mutual labels:  matrix
zombi-addons
No description or website provided.
Stars: ✭ 15 (-34.78%)
Mutual labels:  matrix
botdarr
Slack/Discord/Telegram/Matrix bot for accessing radarr, sonarr, and lidarr
Stars: ✭ 76 (+230.43%)
Mutual labels:  matrix
mtxclient
Client API library for Matrix, built on top of Boost.Asio
Stars: ✭ 21 (-8.7%)
Mutual labels:  matrix
go
A Golang Matrix framework.
Stars: ✭ 192 (+734.78%)
Mutual labels:  matrix
EventBus
💢 Nepxion EventBus is a generic event dispatching component based on Google Guava with Spring framework AOP, support synchronous and asynchronous mode 基于Google Guava通用事件派发机制的事件总线组件,注解式发布订阅
Stars: ✭ 65 (+182.61%)
Mutual labels:  matrix
geeks-for-geeks-solutions
✅ My own Amazon, Microsoft and Google SDE Coding challenge Solutions (offered by GeeksForGeeks).
Stars: ✭ 246 (+969.57%)
Mutual labels:  matrix
mod push appserver
Simple and extendable appserver for XMPP pushes (aka. XEP-0357)
Stars: ✭ 24 (+4.35%)
Mutual labels:  xmpp
lita-hipchat
A HipChat adapter for Lita.
Stars: ✭ 37 (+60.87%)
Mutual labels:  xmpp
psimedia
Audio/video RTP abstraction library
Stars: ✭ 19 (-17.39%)
Mutual labels:  xmpp
xmpp-web
Lightweight web chat client for XMPP server
Stars: ✭ 52 (+126.09%)
Mutual labels:  xmpp

mxpp

mxpp is a bot which bridges Matrix and one-to-one XMPP chat.

I wrote this bot to finally get persistent chat history for my gchat/hangouts/google talk conversations, and to evaluate Matrix for future use, so it should probably work for those use cases.

Functionality

  • The bot creates one Matrix room for each user on your contact list, then invites a list of Matrix users (of your choosing) to all the rooms.
    • Enabled with send_messages_to_jid_rooms option in config.yaml and can be controlled with per-user granularity
    • Room name is set to the contact's name.
    • Room topic is set to the contact's JID.
    • Any text sent to the room is sent to the contact's JID.
    • Any text received from the contact's JID is sent as a notice to the room.
  • A room named "XMPP Control Room" is created
    • Presence info ("available" or "unavailable") is sent to this room, controllable per-user with the send_presences_to_control option in config.yaml
    • Text command purge makes the bot leave from any rooms which do not correspond to a roster entry (excluding the two special rooms), and also from any unoccupied rooms (eg. if the user left).
    • Text command refresh probes the presence of all XMPP contacts and requests a roster update from the server.
    • Text commands joinmuc [email protected] and leavemuc [email protected] allow you to join and leave multi-user chats.
  • A room named "XMPP All Chat" is created
    • All inbound and outbound chat messages are logged here.
    • Enabled with per-user granularity using the send_messages_to_all_chat option in config.yaml
    • You can send a message directly to a jid without creating a room using the /m [email protected] your message here syntax in this room.
  • If the bot is restarted, it recreates its room-JID map based on the room topics, and continues as before.
  • Currently, the bot automatically accepts anytime anyone asks to add you on XMPP, and also automatically adds them to your contact roster.
  • Multi-user chats (MUCs) are handled by creating additional rooms
    • Room topic is set to "[email protected]"
    • To join a MUC, send a message saying joinmuc [email protected] to the "XMPP Control Room"
    • To leave a MUC, send a message saying leavemuc [email protected] to the "XMPP Control Room". Alternatively, leave the MUC room and send the message purge instead.

Installation

Install the dependencies:

pip3 install -r requirements.txt

Edit config.yaml to set your usernames, passwords, and servers.

If you're using your own homeserver and you have more than a handful of XMPP contacts, you'll probably want to loosen the rate limits on your homeserver (see homeserver.yaml for synapse), or you'll have to wait multiple minutes while the bot creates a bunch of new rooms.

You should probably also set your Matrix client to auto-accept new room invitations for the first run of the bot, so you don't have to manually accept each invitation.

From the same directory as config.yaml, run

python3 -m mxpp.main

Dependencies:

  • python >=3.5 (written and tested with 3.5)
  • sleekXMPP
  • matrix_client (currently requires git version)
  • pyyaml
  • and their dependencies (dnspython, requests, others?)

TODO

  • Set bot's presence for each room individually (impossible with current Matrix m.presence API)
  • Require higher-than-default power-level to speak in All-chat (i.e., only let the bot talk in all-chat) (waiting on matrix_client pull request)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].