preparing for m2d
This commit is contained in:
parent
d592a3c82e
commit
6e55e6d1b3
6 changed files with 80 additions and 1 deletions
|
@ -10,7 +10,7 @@ const registerWebhook = sync.require("./register-webhook")
|
|||
|
||||
/**
|
||||
* @param {string} channelID
|
||||
* @param {DiscordTypes.RESTPostAPIWebhookWithTokenJSONBody & {name: string, file: Buffer}[]} data
|
||||
* @param {DiscordTypes.RESTPostAPIWebhookWithTokenJSONBody & {files?: {name: string, file: Buffer}[]}[]} data
|
||||
*/
|
||||
// param {DiscordTypes.RESTPostAPIWebhookWithTokenQuery & {wait: true, disableEveryone?: boolean}} options
|
||||
async function sendMessage(channelID, data) {
|
||||
|
|
30
m2d/converters/event-to-message.js
Normal file
30
m2d/converters/event-to-message.js
Normal file
|
@ -0,0 +1,30 @@
|
|||
// @ts-check
|
||||
|
||||
const assert = require("assert").strict
|
||||
const DiscordTypes = require("discord-api-types/v10")
|
||||
const markdown = require("discord-markdown")
|
||||
|
||||
const passthrough = require("../../passthrough")
|
||||
const { sync, db, discord } = passthrough
|
||||
/** @type {import("../../matrix/file")} */
|
||||
const file = sync.require("../../matrix/file")
|
||||
|
||||
/**
|
||||
* @param {import("../../types").Event.Outer<import("../../types").Event.M_Room_Message>} event
|
||||
*/
|
||||
function eventToMessage(event) {
|
||||
/** @type {(DiscordTypes.RESTPostAPIWebhookWithTokenJSONBody & {files?: {name: string, file: Buffer}[]})[]} */
|
||||
const messages = []
|
||||
|
||||
if (event.content.msgtype === "m.text") {
|
||||
messages.push({
|
||||
content: event.content.body,
|
||||
username: event.sender.replace(/^@/, ""),
|
||||
avatar_url: undefined, // TODO: provide the URL to the avatar from the homeserver's content repo
|
||||
})
|
||||
}
|
||||
|
||||
return messages
|
||||
}
|
||||
|
||||
module.exports.eventToMessage = eventToMessage
|
32
m2d/converters/event-to-message.test.js
Normal file
32
m2d/converters/event-to-message.test.js
Normal file
|
@ -0,0 +1,32 @@
|
|||
// @ts-check
|
||||
|
||||
const {test} = require("supertape")
|
||||
const assert = require("assert")
|
||||
const {eventToMessage} = require("./event-to-message")
|
||||
const data = require("../../test/data")
|
||||
|
||||
test("event2message: janky test", t => {
|
||||
t.deepEqual(
|
||||
eventToMessage({
|
||||
age: 405299,
|
||||
content: {
|
||||
body: "test",
|
||||
msgtype: "m.text"
|
||||
},
|
||||
event_id: "$g07oYSZFWBkxohNEfywldwgcWj1hbhDzQ1sBAKvqOOU",
|
||||
origin_server_ts: 1688301929913,
|
||||
room_id: "!kLRqKKUQXcibIMtOpl:cadence.moe",
|
||||
sender: "@cadence:cadence.moe",
|
||||
type: "m.room.message",
|
||||
unsigned: {
|
||||
age: 405299
|
||||
},
|
||||
user_id: "@cadence:cadence.moe"
|
||||
}),
|
||||
[{
|
||||
username: "cadence:cadence.moe",
|
||||
content: "test",
|
||||
avatar_url: undefined
|
||||
}]
|
||||
)
|
||||
})
|
|
@ -1,3 +1,5 @@
|
|||
// @ts-check
|
||||
|
||||
const assert = require("assert").strict
|
||||
const {sync, as} = require("../passthrough")
|
||||
|
||||
|
@ -5,4 +7,6 @@ const {sync, as} = require("../passthrough")
|
|||
|
||||
sync.addTemporaryListener(as, "type:m.room.message", event => {
|
||||
console.log(event)
|
||||
// TODO: filter out events that were bridged discord messages (i.e. sent by OOYE)
|
||||
// TODO: call sendMessage
|
||||
})
|
||||
|
|
|
@ -18,3 +18,4 @@ require("../d2m/converters/message-to-event.test")
|
|||
require("../d2m/actions/create-room.test")
|
||||
require("../d2m/converters/user-to-mxid.test")
|
||||
require("../d2m/actions/register-user.test")
|
||||
require("../m2d/converters/event-to-message.test")
|
||||
|
|
12
types.d.ts
vendored
12
types.d.ts
vendored
|
@ -15,6 +15,18 @@ export type WebhookCreds = {
|
|||
}
|
||||
|
||||
namespace Event {
|
||||
export type Outer<T> = {
|
||||
type: string
|
||||
room_id: string
|
||||
sender: string
|
||||
content: T
|
||||
origin_server_ts: number
|
||||
unsigned: any
|
||||
event_id: string
|
||||
user_id: string
|
||||
age: number
|
||||
}
|
||||
|
||||
export type BaseStateEvent = {
|
||||
type: string
|
||||
room_id: string
|
||||
|
|
Loading…
Reference in a new issue