53 lines
1.7 KiB
TypeScript
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)
|
|
} |