A Matrix wrapper for miniirc.
Project description
miniirc_matrix
A wrapper for miniirc (GitHub, GitLab) to allow bots or clients made in miniirc to join Matrix rooms with minimal code changes. Requires Python 3.8 or later.
How to use
To use miniirc_matrix, you already need to know how to use miniirc (GitHub,
GitLab). Instead of creating a miniirc.IRC
object, however, you need to
use miniirc_matrix.Matrix
.
ip
is the address of the Matrix homeserver.port
is optional and will default to 443 if not specified and ifip
doesn't have a port.- There is a
token
keyword argument that must contain the Matrix token.
Example: irc = miniirc_matrix.Matrix('matrix.org:443', token='my_token')
Channel names are currently room IDs and start with !
. You may use a Matrix
room alias (for example #matrix:matrix.org
) in place of a room ID, however.
Hopefully one day alias support will be added so that channel names can
correspond to alias names.
Formatting is translated to and from Matrix's custom HTML format. Note that colours are not supported in incoming messages, although they mostly work in outgoing messages.
Obtaining a token
You must obtain a token to use miniirc_matrix. You can do this with
miniirc_matrix.login(homeserver_address, username, password)
.
There is also miniirc_matrix.logout(homeserver_address, token)
and
miniirc_matrix.logout_all(homeserver_address, username, password)
if you wish
to invalidate your token.
Supported commands
The PRIVMSG
(including CTCP ACTION
/irc.me
), NOTICE
, TAGMSG
, JOIN
,
and PART
commands should work as expected.
Note that events sent before the client connects to Matrix are ignored. Your system must have an accurate clock for this to work properly.
Downloading media
Matrix has recently started to require authentication for media endpoints. By default, miniirc_matrix now translates media files into MXC URLs. It does, however, have a built-in HTTP proxy (disabled by default, see below).
Proxying requests (experimental)
Warning: I don't know how secure this is, it uses Python's http.server
If you want to convert media to a normal URL, for example for use with relay
bots or code that expects normal links, you can provide a media_proxy_port
argument to miniirc_matrix.Matrix.
miniirc_matrix.Matrix('example.com', token='my_token',
media_proxy_port=8080)
This will start a HTTP server on http://127.0.0.1:8080
to listen for ports.
The server only listens on localhost.
To expose this to the public, you must use a reverse proxy, and should set up
caching and some kind of rate limiting to prevent abuse. You can set the
media_proxy_url
keyword argument to the public proxy URL.
A HMAC is created based on a random key and URL to prevent using the proxy to
fetch arbitrary attachment URLs. To make this value consistent across restarts,
pass a bytes value to the media_proxy_key
keyword argument.
Installation
You can install miniirc_matrix
with pip install miniirc_matrix
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file miniirc_matrix-0.0.13.tar.gz
.
File metadata
- Download URL: miniirc_matrix-0.0.13.tar.gz
- Upload date:
- Size: 12.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 32ba0ccd2153a10816e9615c9170698b65d6ec6b60e89e025bdf20e29b47c6cc |
|
MD5 | 1e47197ee36c2d377df8d419c265101a |
|
BLAKE2b-256 | 1b50f15f50b2a0770856000f70fc498828f021ac258ad865649b010b04d528e4 |
File details
Details for the file miniirc_matrix-0.0.13-py3-none-any.whl
.
File metadata
- Download URL: miniirc_matrix-0.0.13-py3-none-any.whl
- Upload date:
- Size: 12.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 84ea7a5e98b31e38aee51cb9a7911ae331136ffa1a90138b55aceb648ce6102b |
|
MD5 | e307422897fd170c685a156ae111d420 |
|
BLAKE2b-256 | 3ef8bbd63d206b324695249e0a459fa378ed6996483fa11f16b06f2444abd930 |