classes/structures/member/member.js

  1. const User = require("../user/user.js");
  2. class Member {
  3. /**
  4. * Member constructor
  5. * @param {Object} memberData The member data
  6. * @param {User} memberData.user The user
  7. * @param {Array<number>} memberData.roleIds The role ids
  8. * @param {String | undefined} memberData.nickname The nickname of the user
  9. * @param {Date} memberData.joinedAt The date the user joined the server
  10. * @param {boolean | undefined} memberData.isOwner Whether the user is the owner of the server
  11. * @param {Client} client The client instance
  12. * @returns {Member<User, Array<number>, String | undefined, Date, boolean>} The user, the role ids, the nickname of the user, the date the user joined the server, whether the user is the owner of the server
  13. */
  14. constructor(memberData, client) {
  15. /**
  16. * The user ID
  17. * @type {string}
  18. * @readonly
  19. */
  20. this.userId = memberData.userId;
  21. /**
  22. * The Client instance
  23. * @type {Client}
  24. * @readonly
  25. */
  26. this.client = client;
  27. /**
  28. * The server ID
  29. * @type {string}
  30. * @readonly
  31. */
  32. this.serverId = memberData.serverId ?? null;
  33. /**
  34. * The user
  35. * @type {User}
  36. * @readonly
  37. */
  38. this.user = new User(memberData.user, client);
  39. /**
  40. * The role IDs
  41. * @type {Array<number>}
  42. * @readonly
  43. */
  44. this.roles = memberData.roleIds ?? [];
  45. /**
  46. * The nickname of the user
  47. * @type {string}
  48. * @readonly
  49. */
  50. this.nickname = memberData.nickname ?? null;
  51. /**
  52. * The date the user joined the server
  53. * @type {Date}
  54. * @readonly
  55. */
  56. this.joinedAt = new Date(memberData.joinedAt);
  57. /**
  58. * Whether the user is the owner of the server
  59. * @type {boolean}
  60. * @readonly
  61. */
  62. this.isOwner = Boolean(memberData.isOwner);
  63. /**
  64. * The raw member data
  65. * @type {Object}
  66. * @readonly
  67. */
  68. this.raw = memberData;
  69. }
  70. }
  71. module.exports = Member;