A discord bot for teal.fm
discord
tealfm
music
1import { SimpleIndexer, Tap } from "@atproto/tap";
2import { env } from "@tealfmbot/common/constants";
3import { db } from "@tealfmbot/database/db";
4
5import { isTealRecord } from "./utils";
6
7const tap = new Tap("https://tap.xero.systems", {
8 adminPassword: env.TAP_ADMIN_PASSWORD,
9});
10
11const indexer = new SimpleIndexer();
12
13indexer.record(async (evt, opts) => {
14 const uri = `at://${evt.did}/${evt.collection}/${evt.rkey}`;
15 if (evt.action === "create") {
16 if (isTealRecord(evt.record)) {
17 await db
18 .insertInto("plays")
19 .values({
20 cid: evt?.cid,
21 rkey: evt?.rkey,
22 uri,
23 release_name: evt?.record?.releaseName,
24 played_time: evt?.record?.playedTime,
25 track_name: evt?.record?.trackName,
26 indexed_at: new Date().toJSON(),
27 live: evt.live,
28 user_id: 1,
29 })
30 .execute();
31 }
32 console.log(evt.record);
33 } else {
34 console.log(`deleted: ${uri}`);
35 }
36
37 if (process.env.NODE_ENV === "development") {
38 // we don't want to ack in development
39 // @ts-ignore
40 opts.ack = () => console.log('"acknowledged"');
41 }
42});
43
44indexer.error((err) => console.error(err));
45
46const channel = tap.channel(indexer);
47channel.start();