fixed replies and added edit in matrix mesages
This commit is contained in:
parent
5986b173a3
commit
534b6c436d
2 changed files with 58 additions and 19 deletions
|
@ -11,6 +11,7 @@ datasource db {
|
||||||
}
|
}
|
||||||
|
|
||||||
model Post {
|
model Post {
|
||||||
|
id Int @unique @default(autoincrement())
|
||||||
postId String @id
|
postId String @id
|
||||||
matrixId String @unique
|
matrixId String @unique
|
||||||
}
|
}
|
||||||
|
|
76
src/index.ts
76
src/index.ts
|
@ -24,6 +24,26 @@ function parseAsyncRegexFile(file: Buffer): RegExp[] {
|
||||||
.map(regex => new RegExp(regex));
|
.map(regex => new RegExp(regex));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function editText(
|
||||||
|
client: MatrixClient,
|
||||||
|
roomId: string,
|
||||||
|
eventId: string,
|
||||||
|
text: string
|
||||||
|
): Promise<void> {
|
||||||
|
await client.sendEvent(roomId, 'm.room.message', {
|
||||||
|
body: text,
|
||||||
|
msgtype: 'm.text',
|
||||||
|
'm.new_content': {
|
||||||
|
body: text,
|
||||||
|
msgtype: 'm.text'
|
||||||
|
},
|
||||||
|
'm.relates_to': {
|
||||||
|
rel_type: 'm.replace',
|
||||||
|
event_id: eventId
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
const mastodon = await (
|
const mastodon = await (
|
||||||
await import('masto')
|
await import('masto')
|
||||||
|
@ -63,14 +83,23 @@ async function main() {
|
||||||
) {
|
) {
|
||||||
const matrixId = await matrix.sendText(
|
const matrixId = await matrix.sendText(
|
||||||
process.env.MATRIX_ROOM_ID,
|
process.env.MATRIX_ROOM_ID,
|
||||||
`Одобряємо?\n${notification.status.url}\nт - Так\nн - Ні`
|
`${notification.status.url}\nY/т - Так\nN/н - Ні`
|
||||||
);
|
);
|
||||||
await db.post.create({
|
const { id } = await db.post.create({
|
||||||
data: {
|
data: {
|
||||||
postId: notification.status.id,
|
postId: notification.status.id,
|
||||||
matrixId
|
matrixId
|
||||||
|
},
|
||||||
|
select: {
|
||||||
|
id: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
await editText(
|
||||||
|
matrix,
|
||||||
|
process.env.MATRIX_ROOM_ID,
|
||||||
|
matrixId,
|
||||||
|
`#${id} ${notification.status.url}\nY/т - Так\nN/н - Ні`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if (notification.type === 'follow') {
|
if (notification.type === 'follow') {
|
||||||
await mastodon.v1.statuses.create({
|
await mastodon.v1.statuses.create({
|
||||||
|
@ -79,7 +108,12 @@ async function main() {
|
||||||
});
|
});
|
||||||
console.log('follow message');
|
console.log('follow message');
|
||||||
}
|
}
|
||||||
if (notification.type === 'mention' && notification.status?.visibility === 'direct') {
|
if (
|
||||||
|
notification.type === 'mention' &&
|
||||||
|
notification.status?.visibility === 'direct' &&
|
||||||
|
!notification.status.inReplyToId &&
|
||||||
|
notification.status.content.includes('ping')
|
||||||
|
) {
|
||||||
await mastodon.v1.statuses.create({
|
await mastodon.v1.statuses.create({
|
||||||
inReplyToId: notification.status.id,
|
inReplyToId: notification.status.id,
|
||||||
visibility: 'direct',
|
visibility: 'direct',
|
||||||
|
@ -100,30 +134,34 @@ async function main() {
|
||||||
matrixId: event['content']['m.relates_to']['m.in_reply_to']['event_id']
|
matrixId: event['content']['m.relates_to']['m.in_reply_to']['event_id']
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (post && event['content']['body'].split('\n').at(-1) === 'т') {
|
if (
|
||||||
console.log('test');
|
post &&
|
||||||
|
['y', 'т'].includes((event['content']['body'].split('\n').at(-1) as string).toLowerCase())
|
||||||
|
) {
|
||||||
await mastodon.v1.statuses.reblog(post.postId);
|
await mastodon.v1.statuses.reblog(post.postId);
|
||||||
await matrix.replyText(
|
await matrix.replyText(process.env.MATRIX_ROOM_ID, event, 'Пост успішно опубліковано');
|
||||||
process.env.MATRIX_ROOM_ID,
|
await editText(
|
||||||
event['content']['m.relates_to']['m.in_reply_to']['event_id'],
|
matrix,
|
||||||
'Пост успішно опубліковано'
|
roomId,
|
||||||
|
event['event_id'],
|
||||||
|
event['content']['body'].split('\n').at(0) + ' ✅'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (post && event['content']['body'].split('\n').at(-1) === 'н') {
|
if (
|
||||||
await matrix.redactEvent(
|
post &&
|
||||||
process.env.MATRIX_ROOM_ID,
|
['n', 'н'].includes((event['content']['body'].split('\n').at(-1) as string).toLowerCase())
|
||||||
event['content']['m.relates_to']['event_id'],
|
) {
|
||||||
'Не одобрили :('
|
|
||||||
);
|
|
||||||
await db.post.delete({
|
await db.post.delete({
|
||||||
where: {
|
where: {
|
||||||
matrixId: event['content']['m.relates_to']['m.in_reply_to']['event_id']
|
matrixId: event['content']['m.relates_to']['m.in_reply_to']['event_id']
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
await matrix.replyText(
|
await matrix.replyText(process.env.MATRIX_ROOM_ID, event, 'Пост відхилено');
|
||||||
process.env.MATRIX_ROOM_ID,
|
await editText(
|
||||||
event['content']['m.relates_to']['m.in_reply_to']['event_id'],
|
matrix,
|
||||||
'Пост відхилено'
|
roomId,
|
||||||
|
event['event_id'],
|
||||||
|
event['content']['body'].split('\n').at(0) + ' ❌'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue