diff --git a/src/subscription.ts b/src/subscription.ts index a8c7f09..f9b8b4a 100644 --- a/src/subscription.ts +++ b/src/subscription.ts @@ -11,27 +11,21 @@ export class FirehoseSubscription extends FirehoseSubscriptionBase { const ops = await getOpsByType(evt) - // Test only - // for (const post of ops.posts.creates) { - // console.log('DEBUG: New Post') - // console.log('DEBUG: Author', post.author) - // console.log('DEBUG: Text', post.record.text) - // console.log('DEBUG: Tags', post.record.tags) - // } - const postsToDelete = ops.posts.deletes.map((del) => del.uri) const postsToCreate = ops.posts.creates .filter((create) => { const text = create.record.text.toLowerCase() - const tags = create.record.tags?.map(tag => tag.toLowerCase()) || [] const author = create.author || '' + const wordBoundaryRegex = (word: string) => new RegExp(`\\b${word}\\b`, 'i') + return ( - keywords.some(keyword => text.includes(keyword)) || + keywords.some(keyword => wordBoundaryRegex(keyword).test(text)) || + keywords.some(keyword => text.includes('#' + keyword)) || users.includes(author) || - bandMembers.some(member => text.includes(member)) || - albums.some(album => text.includes(album)) || - songs.some(song => text.includes(song)) + bandMembers.some(member => wordBoundaryRegex(member).test(text)) || + albums.some(album => wordBoundaryRegex(album).test(text)) || + songs.some(song => wordBoundaryRegex(song).test(text)) ) }) .map((create) => {