util.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import { GuildMember } from "discord.js";
  2. import { DocumentationSet } from "./commands/command";
  3. import { getRepository } from "typeorm";
  4. import { KnownUser } from "@db/entity/KnownUser";
  5. const VALID_EXTENSIONS = new Set([
  6. "png",
  7. "jpg",
  8. "jpeg",
  9. "bmp",
  10. ]);
  11. export let documentation : DocumentationSet = {};
  12. export function isDevelopment() {
  13. return process.env.NODE_ENV == "dev";
  14. }
  15. export function isValidImage(fileName: string) {
  16. let extPosition = fileName.lastIndexOf(".");
  17. if(extPosition < 0)
  18. return false;
  19. let ext = fileName.substring(extPosition + 1).toLowerCase();
  20. return VALID_EXTENSIONS.has(ext);
  21. }
  22. export async function isAuthorisedAsync(member : GuildMember) {
  23. let repo = getRepository(KnownUser);
  24. let user = await repo.findOne({
  25. where: { userID: member.id },
  26. select: [ "canModerate" ]
  27. });
  28. if (user && user.canModerate)
  29. return true;
  30. let role = await repo.createQueryBuilder()
  31. .select(["userId"])
  32. .where("userId in (:...ids)", {ids: member.roles.keyArray()})
  33. .andWhere("canModerate = 1")
  34. .getOne();
  35. if (role)
  36. return true;
  37. return false;
  38. }
  39. export function compareNumbers<T>(prop : (o : T) => number) {
  40. return (a: T, b: T) => {
  41. let ap = prop(a);
  42. let bp = prop(b);
  43. if(ap < bp)
  44. return 1;
  45. else if(ap > bp)
  46. return -1;
  47. return 0;
  48. };
  49. }
  50. export type Dict<TVal> = { [key: string]: TVal };
  51. export class NeighBuilder {
  52. private data: any[];
  53. constructor() {}
  54. append(...data: any[]) {
  55. this.data.concat(data);
  56. }
  57. appendLine(...data: any[]){
  58. this.append(data);
  59. this.data.push("\n");
  60. }
  61. toString() {
  62. return this.data.reduce((prev, cur) => cur + `${prev}`, "");
  63. }
  64. }