wholeword instead of include

This commit is contained in:
CDN18 2024-11-28 16:35:26 +08:00
parent df406d2a52
commit d6d83eea4a
Signed by: CDN
GPG key ID: 0C656827F9F80080

View file

@ -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) => {