matrix-revolt-parser
TypeScript icon, indicating that this package has built-in type declarations

1.0.7 • Public • Published

matrix-revolt-parser

This package is a message parser for sending messages between Matrix and Revolt. For that, it has two parsers: RevoltMessageParser and MatrixMessageParser.

This is a fork of @deurstann/matrix-discord-parser, itself a fork of matrix-discord-parser.

RevoltMessageParser

Example code:

import { RevoltMessageParser, IRevoltMessageParserOpts } from "matrix-revolt-parser";

const parser = new RevoltMessageParser();

const opts = {
    callbacks: {
        getUser: async (id: string) => null,
        getChannel: async (id: string) => null,
        getEmoji: async (id: string) => null;
    },
} as IRevoltMessageParserOpts;
const message = msg; // Type Message from revolt.js
const result = await parser.FormatMessage(opts, msg);
console.log(result.body); // the body of the matrix message
console.log(result.formattedBody); // the formatted body of the matrix message
console.log(result.msgtype); // the msgtype of the matrix message

All options of IRevoltMessageParserOpts:

  • callbacks: IRevoltMessageParserCallbacks, the callbacks to handle
    • getUser: async (id: string) => Promise<IRevoltMessageParserEntity | null>, resolves to either the information on the specified Revolt user or to null
    • getChannel: async (id: string) => Promise<IRevoltMessageParserEntity | null>, resolves to either the information of the specified Revolt channel or to null
    • getEmoji: async (id: string) => Promise<IRevoltEmojiEntity | null>, resolves to either the mxc uri of the specified Revolt emoji or to null

All properties of IRevoltMessageParserEntity:

  • name: string, the name of the entity
  • mxid: string, the resulting matrix ID of the entity

All properties of IRevoltEmojiEntity:

  • name: string, the name of the emoji
  • mxc: string, the MXC URI for the emoji

All properties of IRevoltMessageParserResult:

  • body: string, the body of the result
  • formattedBody: string, the formatted (html) body of the result
  • msgtype: string, the matrix msgtype of the result

MatrixMessageParser

Example code:

import { MatrixMessageParser, IMatrixMessageParserOpts } from "matrix-revolt-parser";

const parser = new MatrixMessageParser();

const opts = {
    callbacks: {
        getUserId: async (mxid: string) => null,
        getChannelId: async (mxid: string) => null,
        getEmoji: async (mxc: string, name: string) => null,
        mxcUrlToHttp: async (mxc: string) => "http://example.com",
    },
    displayname: "Alice",
    determineCodeLanguage: true,
} as IMatrixMessageParserOpts;

const msg = { // raw matrix event content
    msgtype: "m.text",
    body: "**blah**",
    format: "org.matrix.custom.html",
    formatted_body: "<strong>blah</strong>",
};

const parsed = await parser.FormatMessage(opts, msg);
msg.send(parsed); // send this message to discord

All options of IMatrixMessageParserOpts:

  • callbacks: IMatrixMessageParserCallbacks, the callbacks to handle
    • getUserId: async (mxid: string) => Promise<string | null>, return the discord user ID given an mxid, or null
    • getChannelId: async (mxid: string) => Promise<string | null>, return the discord channel ID given an mxid, or null
    • getEmoji: async (mxc: string, name: string) => Promise<string | null>, return a Revolt emoji ID given an mxc uri and a name, or null
    • mxcUrlToHttp: async (mxc: string) => Promise<string>, resolve an mxc uri to a publicly available http url.
  • displayname: string, the display name of the sender of the message (used for m.emote parsing)
  • determineCodeLanguage: Boolean (default false), whether the language of code-blocks should be auto-determined, if not specified

Returned is a Revolt-formatted string, ready to be sent.

Readme

Keywords

none

Package Sidebar

Install

npm i matrix-revolt-parser

Weekly Downloads

11

Version

1.0.7

License

Apache-2.0

Unpacked Size

220 kB

Total Files

37

Last publish

Collaborators

  • austinhuang