Files
Breadbot/src/utilties/discord/regex_matching.ts

53 lines
1.7 KiB
TypeScript

import { Guild, Message, OmitPartialGroupDMChannel, PartialMessage } from "discord.js";
import { DBMessageRegex } from "../storage/entities/DBMessageRegex";
import { Repository } from "typeorm";
import { DBServer } from "../storage/entities/DBServer";
import { DBMessageRegexMatches } from "../storage/entities/DBMessageRegexMatches";
import { DBMessage } from "../storage/entities/DBMessage";
export async function getRegexesForGuild(db: Repository<DBServer>, guild: Guild): Promise<DBMessageRegex[] | null | undefined> {
return (await db.findOne({
select: {
regexes: true
},
relations: {
regexes: true
},
where: {
server_snowflake: guild.id
}
}))?.regexes
}
export async function checkMatchingRegexes(regexes: DBMessageRegex[], testString: string) : Promise<DBMessageRegex[] | null> {
let matchedRegexes: DBMessageRegex[] = []
regexes.forEach((regex) => {
const regexObj = new RegExp(regex.regex, 'gmi')
if(regexObj.test(testString)) {
matchedRegexes.push(regex)
}
})
if(matchedRegexes.length != 0) {
return matchedRegexes
} else {
return null
}
}
export async function insertAnyRegexMatches(regexes: DBMessageRegex[], db: Repository<DBMessageRegexMatches>, message: OmitPartialGroupDMChannel<Message<boolean>> | PartialMessage) {
let matches : DBMessageRegexMatches[] = []
regexes.forEach(async (regex) => {
matches.push(db.create({
message: {
message_snowflake: message.id
},
regex: regex
}))
})
await db.save(matches)
}