util.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { db } from "./db"
  2. import { CollectionChain } from "lodash";
  3. import { GuildMember } from "discord.js";
  4. import { DocumentationSet } from "./commands/command";
  5. import { getRepository } from "typeorm";
  6. import { KnownUser } from "./entity/KnownUser";
  7. const VALID_EXTENSIONS = new Set([
  8. "png",
  9. "jpg",
  10. "jpeg",
  11. "bmp",
  12. ]);
  13. export let documentation : DocumentationSet = {};
  14. export function isDevelopment() {
  15. return process.env.NODE_ENV == "dev";
  16. }
  17. export function shouldShowMaintenanceMessage(serverId : string) {
  18. if(process.env.NODE_ENV != "dev")
  19. return false;
  20. let devServers = db.get("devServers") as CollectionChain<string>;
  21. return !devServers.includes(serverId).value();
  22. }
  23. export function isValidImage(fileName: string) {
  24. let extPosition = fileName.lastIndexOf(".");
  25. if(extPosition < 0)
  26. return false;
  27. let ext = fileName.substring(extPosition + 1).toLowerCase();
  28. return VALID_EXTENSIONS.has(ext);
  29. }
  30. export function isAuthorised(member : GuildMember) {
  31. let users = db.get("editors.users") as CollectionChain<string>;
  32. let roles = db.get("editors.roles") as CollectionChain<string>;
  33. if (users.includes(member.id).value())
  34. return true;
  35. if (roles.intersectionWith(member.roles.keyArray()).isEmpty().value())
  36. return false;
  37. return true;
  38. }
  39. export async function isAuthorisedAsync(member : GuildMember) {
  40. let repo = getRepository(KnownUser);
  41. let user = await repo.findOne({
  42. where: { userID: member.id },
  43. select: [ "canModerate" ]
  44. });
  45. if (user && user.canModerate)
  46. return true;
  47. let role = await repo.createQueryBuilder()
  48. .select(["userId"])
  49. .where("userId in (:...ids)", {ids: member.roles.keyArray()})
  50. .andWhere("canModerate = 1")
  51. .getOne();
  52. if (role)
  53. return true;
  54. return false;
  55. }