matrix-org / matrix-org/matrix-spec

Appserviceless/homeserverless ghosts/puppets (IRCv3 RELAYMSG)

Open
#840 7 comments 9 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
HTML
Stars
330
Forks
150
Avg merge
2h 21m
Merged PRs (30d)
3

Description

Suggestion

Ergo IRCd (previously known as Oragono) has implemented IRCv3 draft RELAYMSG (https://github.com/ircv3/ircv3-specifications/pull/417) which allows relaybots (think of bridges without 1:1 PM ability) to send messages from other protocols like they were native to IRC. In Matrix this is possible with appservices/bridges, but that requires running a homeserver which may be too much of treshold from running a simple bot (that doesn't even require a domain).

I would like Matrix to offer something similar and I hope that in the future matrix-appservice-irc could recognise it, other bridges without PM ability would use it too and thus send relaymsg'd Matrix messages to IRC as relaymsg's thus causing less load and not taking connection slots benefiting both bridge operators and IRC networks that don't want users of other networks into theirs.


Example of RELAYMSG on IRC

2021-148 18:28:05 EEST <M1kaela/T> /ping
2021-148 18:28:05 EEST <@R-66Y> pong

Here M1kaela is a Telegram user, / is the separator that the IRC network uses for RELAYMSG (and forbids from real nicknames to combat abuse), R-66Y is a IRC bot (with no idea what is Telegram) and T4 would be the relaybot (matterbridge), but as it's using RELAYMSG it's not visible (to plain sight). The other combat towards abuse is that to use RELAYMSG, the sending bot must have op status on the channel (or be configured as oper in IRCd config).

This is stateless so M1kaela does not appear in IRC user/names list and the nickname cannot be autocompeted, but it's still pretter and prettier than having to see <T4> <M1kaela/Telegram> /ping which practically no bot would recognise on IRC side.

Ergo IRCd integrated documentation on the command

2021-148 18:33:41 EEST -- RELAYMSG :RELAYMSG <channel> <spoofed nick> :<message>
2021-148 18:33:41 EEST -- RELAYMSG :
2021-148 18:33:41 EEST -- RELAYMSG :This command lets channel operators relay messages to their
2021-148 18:33:41 EEST -- RELAYMSG :channel from other messaging systems using relay bots. The
2021-148 18:33:41 EEST -- RELAYMSG :spoofed nickname MUST contain a forwardslash.
2021-148 18:33:41 EEST -- RELAYMSG :
2021-148 18:33:41 EEST -- RELAYMSG :For example:
2021-148 18:33:41 EEST -- RELAYMSG :    RELAYMSG #ircv3 Mallory/D :Welp, we linked Discord...
2021-148 18:33:41 EEST -- RELAYMSG :End of /HELPOP

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the linked IRCv3 RELAYMSG draft and Ergo IRCd's command documentation, then review how matrix-appservice-irc currently handles bridged messages. The issue does not name Matrix specification files or tests; done would require an agreed protocol design and clearly specified compatibility behavior for relaybots and bridges.

Written by the indexing model from the issue text.

Assessment

Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.