|
@@ -1,5 +1,5 @@
|
|
import { GuildMember } from "discord.js";
|
|
import { GuildMember } from "discord.js";
|
|
-import { getRepository } from "typeorm";
|
|
|
|
|
|
+import { getRepository, In } from "typeorm";
|
|
import { KnownUser } from "@db/entity/KnownUser";
|
|
import { KnownUser } from "@db/entity/KnownUser";
|
|
|
|
|
|
const VALID_EXTENSIONS = new Set([
|
|
const VALID_EXTENSIONS = new Set([
|
|
@@ -15,44 +15,46 @@ export function isDevelopment() {
|
|
|
|
|
|
export function isValidImage(fileName: string) {
|
|
export function isValidImage(fileName: string) {
|
|
let extPosition = fileName.lastIndexOf(".");
|
|
let extPosition = fileName.lastIndexOf(".");
|
|
- if(extPosition < 0)
|
|
|
|
|
|
+ if (extPosition < 0)
|
|
return false;
|
|
return false;
|
|
let ext = fileName.substring(extPosition + 1).toLowerCase();
|
|
let ext = fileName.substring(extPosition + 1).toLowerCase();
|
|
return VALID_EXTENSIONS.has(ext);
|
|
return VALID_EXTENSIONS.has(ext);
|
|
}
|
|
}
|
|
|
|
|
|
-export async function isAuthorisedAsync(member : GuildMember) {
|
|
|
|
- if(!member)
|
|
|
|
|
|
+export async function isAuthorisedAsync(member: GuildMember) {
|
|
|
|
+ if (!member)
|
|
return false;
|
|
return false;
|
|
-
|
|
|
|
|
|
+
|
|
let repo = getRepository(KnownUser);
|
|
let repo = getRepository(KnownUser);
|
|
|
|
|
|
let user = await repo.findOne({
|
|
let user = await repo.findOne({
|
|
where: { userID: member.id },
|
|
where: { userID: member.id },
|
|
- select: [ "canModerate" ]
|
|
|
|
|
|
+ select: ["canModerate"]
|
|
});
|
|
});
|
|
|
|
|
|
if (user && user.canModerate)
|
|
if (user && user.canModerate)
|
|
return true;
|
|
return true;
|
|
|
|
|
|
- let role = await repo.createQueryBuilder()
|
|
|
|
- .select(["userId"])
|
|
|
|
- .where("userId in (:...ids)", {ids: member.roles.keyArray()})
|
|
|
|
- .andWhere("canModerate = 1")
|
|
|
|
- .getOne();
|
|
|
|
|
|
+ let role = await repo.findOne({
|
|
|
|
+ select: ["userID"],
|
|
|
|
+ where: {
|
|
|
|
+ userID: In(member.roles.keyArray()),
|
|
|
|
+ canModerate: true
|
|
|
|
+ }
|
|
|
|
+ });
|
|
if (role)
|
|
if (role)
|
|
return true;
|
|
return true;
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
-export function compareNumbers<T>(prop : (o : T) => number) {
|
|
|
|
|
|
+export function compareNumbers<T>(prop: (o: T) => number) {
|
|
return (a: T, b: T) => {
|
|
return (a: T, b: T) => {
|
|
let ap = prop(a);
|
|
let ap = prop(a);
|
|
let bp = prop(b);
|
|
let bp = prop(b);
|
|
|
|
|
|
- if(ap < bp)
|
|
|
|
|
|
+ if (ap < bp)
|
|
return 1;
|
|
return 1;
|
|
- else if(ap > bp)
|
|
|
|
|
|
+ else if (ap > bp)
|
|
return -1;
|
|
return -1;
|
|
return 0;
|
|
return 0;
|
|
};
|
|
};
|
|
@@ -63,13 +65,13 @@ export type Dict<TVal> = { [key: string]: TVal };
|
|
export class NeighBuilder {
|
|
export class NeighBuilder {
|
|
private data: any[];
|
|
private data: any[];
|
|
|
|
|
|
- constructor() {}
|
|
|
|
|
|
+ constructor() { }
|
|
|
|
|
|
append(...data: any[]) {
|
|
append(...data: any[]) {
|
|
this.data.concat(data);
|
|
this.data.concat(data);
|
|
}
|
|
}
|
|
|
|
|
|
- appendLine(...data: any[]){
|
|
|
|
|
|
+ appendLine(...data: any[]) {
|
|
this.append(data);
|
|
this.append(data);
|
|
this.data.push("\n");
|
|
this.data.push("\n");
|
|
}
|
|
}
|
|
@@ -79,6 +81,6 @@ export class NeighBuilder {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-export function getNumberEnums(e: any) : number[] {
|
|
|
|
|
|
+export function getNumberEnums(e: any): number[] {
|
|
return Object.keys(e).filter(k => typeof e[k as any] === "number").map(k => e[k as any]);
|
|
return Object.keys(e).filter(k => typeof e[k as any] === "number").map(k => e[k as any]);
|
|
}
|
|
}
|