Handle more attachment types, closes #9
This commit is contained in:
parent
fd02432559
commit
14e259dcd8
56
src/vk.ts
56
src/vk.ts
|
@ -16,6 +16,7 @@ import { userInfo } from "os";
|
|||
import { runInThisContext } from "vm";
|
||||
import { lookup } from "dns";
|
||||
import { Converter } from "showdown";
|
||||
import { MessagesMessageAttachment } from "vk-io/lib/api/schemas/objects";
|
||||
|
||||
// here we create our log instance
|
||||
const log = new Log("VKPuppet:vk");
|
||||
|
@ -614,7 +615,25 @@ export class VkPuppet {
|
|||
await this.puppet.sendMessage(params, opts);
|
||||
}
|
||||
break;
|
||||
case AttachmentType.LINK:
|
||||
await this.puppet.sendMessage(params, {
|
||||
body: `Link was sent: ${f["url"]}`,
|
||||
});
|
||||
break;
|
||||
case AttachmentType.WALL:
|
||||
await this.puppet.sendMessage(params, {
|
||||
body: await this.renderWallPost(puppetId, f),
|
||||
});
|
||||
break;
|
||||
case AttachmentType.WALL_REPLY:
|
||||
await this.puppet.sendMessage(params, {
|
||||
body: await this.renderWallPost(puppetId, f),
|
||||
});
|
||||
break;
|
||||
default:
|
||||
await this.puppet.sendMessage(params, {
|
||||
body: `Unhandled attachment of type ${f.type}`,
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -698,7 +717,11 @@ export class VkPuppet {
|
|||
case AttachmentType.DOCUMENT:
|
||||
formatted += `> 📁 [File ${attachment["title"]}](${attachment["url"]})\n`;
|
||||
break;
|
||||
case AttachmentType.LINK:
|
||||
formatted += `> 🔗 [ ${attachment["title"] ? attachment["title"] : attachment["url"]} ](${attachment["url"]})\n`;
|
||||
break;
|
||||
default:
|
||||
formatted += `> ❓️ Unhandled attachment of type ${attachment.type}\n`;
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
@ -712,4 +735,37 @@ export class VkPuppet {
|
|||
}
|
||||
return formatted;
|
||||
}
|
||||
|
||||
public async renderWallPost(puppetId: number, post: MessagesMessageAttachment) {
|
||||
const user = await this.getRemoteUser(puppetId, Number(post.fromId));
|
||||
let formatted = `Forwarded post from [${user.name}](${user.externalUrl})\n`;
|
||||
post.text?.split("\n").forEach((element) => {
|
||||
formatted += `> ${element}\n`;
|
||||
});
|
||||
if (post.hasAttachments()) {
|
||||
post.attachments.forEach((attachment) => {
|
||||
switch (attachment.type) {
|
||||
case AttachmentType.PHOTO:
|
||||
formatted += `> 🖼️ [Photo](${attachment["largeSizeUrl"]})\n`;
|
||||
break;
|
||||
case AttachmentType.STICKER:
|
||||
formatted += `> 🖼️ [Sticker](${attachment["imagesWithBackground"][4]["url"]})\n`;
|
||||
break;
|
||||
case AttachmentType.AUDIO_MESSAGE:
|
||||
formatted += `> 🗣️ [Audio message](${attachment["oggUrl"]})\n`;
|
||||
break;
|
||||
case AttachmentType.DOCUMENT:
|
||||
formatted += `> 📁 [File ${attachment["title"]}](${attachment["url"]})\n`;
|
||||
break;
|
||||
case AttachmentType.LINK:
|
||||
formatted += `> 🔗 [ ${attachment["title"] ? attachment["title"] : attachment["url"]} ](${attachment["url"]})\n`;
|
||||
break;
|
||||
default:
|
||||
formatted += `> ❓️ Unhandled attachment of type ${attachment.type}\n`;
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
return formatted;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue