Skip to main content

A Matrix wrapper for miniirc.

Project description

miniirc_matrix

Available on PyPI.

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 if ip 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 the API token and URL to prevent using the proxy to fetch arbitrary attachment URLs.

Installation

You can install miniirc_matrix with pip install miniirc_matrix.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

miniirc_matrix-0.0.12.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

miniirc_matrix-0.0.12-py3-none-any.whl (12.8 kB view details)

Uploaded Python 3

File details

Details for the file miniirc_matrix-0.0.12.tar.gz.

File metadata

  • Download URL: miniirc_matrix-0.0.12.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for miniirc_matrix-0.0.12.tar.gz
Algorithm Hash digest
SHA256 f43721e858be373a547b8c0c67afc6df161c56e749db77a6fcf2344cd425b014
MD5 9b446c4bbcf1f31b3c8f9d95f37abda6
BLAKE2b-256 3b8e7109e7669549adff6ebe57b9441f666f25d389a016479794b8e52cef51c5

See more details on using hashes here.

File details

Details for the file miniirc_matrix-0.0.12-py3-none-any.whl.

File metadata

File hashes

Hashes for miniirc_matrix-0.0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 4b6730e6f712abfdb00810c69c61dfac847b0a5f17965d0d5702d9b7abe373be
MD5 9a116ab1db4f1a8c00d79d98215d2588
BLAKE2b-256 5e96742fb817d8de8e6c6c47863b5fa1ed71ecf9d2232db254442cf3cd64425e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page