mirror of
https://github.com/ION606/bluesky-client.git
synced 2026-05-14 21:26:54 +00:00
65 lines
1.8 KiB
JavaScript
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;
|
|
}
|
|
} |