A discord bot for teal.fm
discord tealfm music
at main 1.2 kB view raw
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();