Files
2024-11-22 22:45:46 -05:00

65 lines
1.8 KiB
JavaScript

import { ChatBskyConvoDefs } from "@atproto/api";
import { convoHeader, getDID, initSession } from "./main.js";
export async function getDMs(cursor = undefined, limit = undefined) {
try {
const agent = await initSession(),
convos = await agent.chat.bsky.convo.listConvos({ cursor, limit });
return convos.data;
}
catch (err) {
console.error(err);
return null;
}
}
export async function sendPost(e, posturi, utag, dmid = undefined) {
try {
const agent = await initSession(),
[, did, collection, rkey] = posturi.match(/^at:\/\/([^\/]+)\/([^\/]+)\/(.+)$/),
post = await agent.getPost({ repo: did, rkey, collection }),
/** @type {ChatBskyConvoDefs.MessageInput} */
msg = {
embed: {
$type: 'app.bsky.embed.record',
record: {
cid: post.cid,
uri: post.uri
}
},
text: ''
}
return await sendMessage(utag, msg, dmid);
}
catch (err) {
console.error(err);
return null;
}
}
export async function sendMessage(utag, message, convoIdInp = undefined) {
try {
const agent = await initSession();
let convoId;
if (convoIdInp) convoId = convoIdInp;
else {
const did = await getDID(utag);
if (!did) return null;
const convos = (await getDMs()).convos;
convoId = await agent.chat.bsky.convo.getConvo({ convoId: convos.find(o => o.members.find(o => o.did === did)) });
}
return (await agent.chat.bsky.convo.sendMessage({ convoId, message }, { headers: convoHeader })).data;
}
catch (err) {
console.error(err);
return null;
}
}