GitHub - Cadair/python-appservice-framework: A generic framework for writing matrix appservices (original) (raw)
The objective of this package is to provide a framework for writing bridging appservices for matrix. These bridges can be double puppet or single puppet or a combination of both.
The objective of this framework is that the framework handles maintaining state and the matrix operations and provides an easy to use API to developers to implement the service specific components.
Implementation
This framework is written using the asyncio module and the co-routine syntax which was introduced in Python 3.5. It uses aiohttp for making HTTP requests and for the web server component. It uses SQLAlchemy to have a database of users and rooms that the bridge is configured for.
Planning
UX Flow
Double Puppet bridge
- Auth with bot
- Ask for invite to room
Single Puppet bridge
Assume everything is public (like IRC bridge but unknown rooms on service side):
- Invite bot user to service room
- Link to matrix room posted in service room.
- Join matrix room.
Keeping rooms invite only on matrix side.
- Invite bot to matrix room
- Invite bot to service room
- Some token printed in the service room
- Issue command in the matrix room with the token.
Dual Mode - Double and Single Puppet
- Auth with bot
- Ask for invite to room
- Auth'ed user gets admin in room
- Non-authed matrix users are puppeted by service bot user.