revbot.js 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -538,7 +538,7 @@ declare class User extends Base {
538
538
  /**
539
539
  * Fetches the latest data for the user from the API.
540
540
  *
541
- * @param {boolean} [force=true] - Whether to force a fetch even if the user is cached.
541
+ * @param {boolean} [force=false] - Whether to force a fetch even if the user is cached.
542
542
  * @returns {Promise<User>} A promise that resolves with the updated user instance.
543
543
  */
544
544
  fetch(force?: boolean): Promise<User>;
@@ -1567,6 +1567,8 @@ declare class ServerMember extends Base {
1567
1567
  nickname: string | null;
1568
1568
  /** The avatar of the member, or `null` if none is set. */
1569
1569
  avatar: Attachment | null;
1570
+ /** roles assigned to the member */
1571
+ roles: Role[];
1570
1572
  /**
1571
1573
  * Creates a new ServerMember instance.
1572
1574
  *
@@ -1595,6 +1597,24 @@ declare class ServerMember extends Base {
1595
1597
  * ```
1596
1598
  */
1597
1599
  setNickname(nickname?: string): Promise<this>;
1600
+ /**
1601
+ * adds a role to the server member.
1602
+ * @param roleId - The ID of the role to add to the member.
1603
+ * @returns
1604
+ */
1605
+ addRole(roleId: string): Promise<this>;
1606
+ /**
1607
+ * Removes a role from the server member.
1608
+ *
1609
+ * @param {string} roleId - The ID of the role to remove from the member.
1610
+ * @returns {Promise<this>} A promise that resolves with the updated server member instance.
1611
+ *
1612
+ * @example
1613
+ * ```typescript
1614
+ * await member.removeRole("roleId");
1615
+ * ```
1616
+ */
1617
+ removeRole(roleId: string): Promise<this>;
1598
1618
  /**
1599
1619
  * Bans the server member.
1600
1620
  *
@@ -1835,8 +1855,8 @@ declare class UserManager extends BaseManager<User, User$1> {
1835
1855
  holds: typeof User;
1836
1856
  /**
1837
1857
  *
1838
- * @param user The user to delete
1839
- * @returns A promise that resolves when the user is deleted
1858
+ * @param user The user to fetch
1859
+ * @returns A promise that resolves when the user is fetched
1840
1860
  */
1841
1861
  fetch(user: UserResolvable, { force }?: {
1842
1862
  force?: boolean | undefined;
package/dist/index.d.ts CHANGED
@@ -538,7 +538,7 @@ declare class User extends Base {
538
538
  /**
539
539
  * Fetches the latest data for the user from the API.
540
540
  *
541
- * @param {boolean} [force=true] - Whether to force a fetch even if the user is cached.
541
+ * @param {boolean} [force=false] - Whether to force a fetch even if the user is cached.
542
542
  * @returns {Promise<User>} A promise that resolves with the updated user instance.
543
543
  */
544
544
  fetch(force?: boolean): Promise<User>;
@@ -1567,6 +1567,8 @@ declare class ServerMember extends Base {
1567
1567
  nickname: string | null;
1568
1568
  /** The avatar of the member, or `null` if none is set. */
1569
1569
  avatar: Attachment | null;
1570
+ /** roles assigned to the member */
1571
+ roles: Role[];
1570
1572
  /**
1571
1573
  * Creates a new ServerMember instance.
1572
1574
  *
@@ -1595,6 +1597,24 @@ declare class ServerMember extends Base {
1595
1597
  * ```
1596
1598
  */
1597
1599
  setNickname(nickname?: string): Promise<this>;
1600
+ /**
1601
+ * adds a role to the server member.
1602
+ * @param roleId - The ID of the role to add to the member.
1603
+ * @returns
1604
+ */
1605
+ addRole(roleId: string): Promise<this>;
1606
+ /**
1607
+ * Removes a role from the server member.
1608
+ *
1609
+ * @param {string} roleId - The ID of the role to remove from the member.
1610
+ * @returns {Promise<this>} A promise that resolves with the updated server member instance.
1611
+ *
1612
+ * @example
1613
+ * ```typescript
1614
+ * await member.removeRole("roleId");
1615
+ * ```
1616
+ */
1617
+ removeRole(roleId: string): Promise<this>;
1598
1618
  /**
1599
1619
  * Bans the server member.
1600
1620
  *
@@ -1835,8 +1855,8 @@ declare class UserManager extends BaseManager<User, User$1> {
1835
1855
  holds: typeof User;
1836
1856
  /**
1837
1857
  *
1838
- * @param user The user to delete
1839
- * @returns A promise that resolves when the user is deleted
1858
+ * @param user The user to fetch
1859
+ * @returns A promise that resolves when the user is fetched
1840
1860
  */
1841
1861
  fetch(user: UserResolvable, { force }?: {
1842
1862
  force?: boolean | undefined;
package/dist/index.js CHANGED
@@ -452,7 +452,7 @@ var ChannelTypes = /* @__PURE__ */ ((ChannelTypes2) => {
452
452
  return ChannelTypes2;
453
453
  })(ChannelTypes || {});
454
454
  var DEFAULT_CLIENT_OPTIONS = {
455
- fetchMembers: false,
455
+ fetchMembers: true,
456
456
  rest: {
457
457
  timeout: 15e3,
458
458
  retries: 3
@@ -678,10 +678,10 @@ var User = class extends Base {
678
678
  /**
679
679
  * Fetches the latest data for the user from the API.
680
680
  *
681
- * @param {boolean} [force=true] - Whether to force a fetch even if the user is cached.
681
+ * @param {boolean} [force=false] - Whether to force a fetch even if the user is cached.
682
682
  * @returns {Promise<User>} A promise that resolves with the updated user instance.
683
683
  */
684
- fetch(force = true) {
684
+ fetch(force = false) {
685
685
  return this.client.users.fetch(this, { force });
686
686
  }
687
687
  /**
@@ -1997,6 +1997,8 @@ var ServerMember3 = class extends Base {
1997
1997
  this.nickname = null;
1998
1998
  /** The avatar of the member, or `null` if none is set. */
1999
1999
  this.avatar = null;
2000
+ /** roles assigned to the member */
2001
+ this.roles = [];
2000
2002
  this._patch(data);
2001
2003
  }
2002
2004
  /**
@@ -2020,6 +2022,20 @@ var ServerMember3 = class extends Base {
2020
2022
  this.serverId = data._id.server;
2021
2023
  this.id = data._id.user;
2022
2024
  }
2025
+ if (Array.isArray(data.roles)) {
2026
+ if (!data.roles.length) this.roles = [];
2027
+ else {
2028
+ this.roles = data.roles.map((roleId) => {
2029
+ const role = this.server.roles.cache.get(roleId);
2030
+ if (!role) {
2031
+ throw new Error(
2032
+ `Role with ID ${roleId} not found in server ${this.serverId}`
2033
+ );
2034
+ }
2035
+ return role;
2036
+ });
2037
+ }
2038
+ }
2023
2039
  for (const field of clear) {
2024
2040
  if (field === "Avatar") this.avatar = null;
2025
2041
  if (field === "Nickname") this.nickname = null;
@@ -2043,6 +2059,46 @@ var ServerMember3 = class extends Base {
2043
2059
  return this;
2044
2060
  });
2045
2061
  }
2062
+ /**
2063
+ * adds a role to the server member.
2064
+ * @param roleId - The ID of the role to add to the member.
2065
+ * @returns
2066
+ */
2067
+ addRole(roleId) {
2068
+ return __async(this, null, function* () {
2069
+ const currentRoles = this.roles.map((role) => role.id);
2070
+ if (currentRoles.includes(roleId)) {
2071
+ return this;
2072
+ }
2073
+ yield this.server.members.edit(this, {
2074
+ roles: [...currentRoles, roleId]
2075
+ });
2076
+ return this;
2077
+ });
2078
+ }
2079
+ /**
2080
+ * Removes a role from the server member.
2081
+ *
2082
+ * @param {string} roleId - The ID of the role to remove from the member.
2083
+ * @returns {Promise<this>} A promise that resolves with the updated server member instance.
2084
+ *
2085
+ * @example
2086
+ * ```typescript
2087
+ * await member.removeRole("roleId");
2088
+ * ```
2089
+ */
2090
+ removeRole(roleId) {
2091
+ return __async(this, null, function* () {
2092
+ const currentRoles = this.roles.map((role) => role.id);
2093
+ if (!currentRoles.includes(roleId)) {
2094
+ return this;
2095
+ }
2096
+ yield this.server.members.edit(this, {
2097
+ roles: currentRoles.filter((id) => id !== roleId)
2098
+ });
2099
+ return this;
2100
+ });
2101
+ }
2046
2102
  /**
2047
2103
  * Bans the server member.
2048
2104
  *
@@ -2477,11 +2533,11 @@ var UserManager = class extends BaseManager {
2477
2533
  }
2478
2534
  /**
2479
2535
  *
2480
- * @param user The user to delete
2481
- * @returns A promise that resolves when the user is deleted
2536
+ * @param user The user to fetch
2537
+ * @returns A promise that resolves when the user is fetched
2482
2538
  */
2483
2539
  fetch(_0) {
2484
- return __async(this, arguments, function* (user, { force = true } = {}) {
2540
+ return __async(this, arguments, function* (user, { force = false } = {}) {
2485
2541
  const id = this.resolveId(user);
2486
2542
  if (!id) throw new TypeError("INVALID_TYPE");
2487
2543
  if (!force) {
@@ -2913,9 +2969,12 @@ var ServerMemberManager = class extends BaseManager {
2913
2969
  );
2914
2970
  return this._add(data);
2915
2971
  }
2916
- const { members } = yield this.client.api.get(
2917
- `/servers/${this.server.id}/members`
2918
- );
2972
+ const { users, members } = yield this.client.api.get(`/servers/${this.server.id}/members`);
2973
+ users.reduce((coll, cur) => {
2974
+ const user = this.client.users._add(cur);
2975
+ coll.set(user.id, user);
2976
+ return coll;
2977
+ }, this.client.users.cache);
2919
2978
  return members.reduce((coll, cur) => {
2920
2979
  const member2 = this._add(cur);
2921
2980
  coll.set(member2.id, member2);
@@ -3428,15 +3487,22 @@ var ServerMemberUpdate = class extends Event {
3428
3487
  * @returns {void}
3429
3488
  */
3430
3489
  handle(data) {
3431
- var _a, _b;
3432
- const server = this.client.servers.cache.get(data.id);
3433
- const member = server == null ? void 0 : server.members.cache.get((_b = (_a = data.data) == null ? void 0 : _a._id) == null ? void 0 : _b.user);
3434
- const oldMember = member == null ? void 0 : member._update(data.data);
3435
- if (oldMember && member && !member.equals(oldMember)) {
3490
+ const updateData = __spreadProps(__spreadValues({}, data.data), {
3491
+ _id: { server: data.id.server, user: data.id.user }
3492
+ });
3493
+ const server = this.client.servers.cache.get(data.id.server);
3494
+ const member = server == null ? void 0 : server.members.cache.get(data.id.user);
3495
+ const oldMember = member == null ? void 0 : member._update(updateData);
3496
+ if (oldMember && member && (!member.equals(oldMember) || areRolesDifferent(member.roles, oldMember.roles))) {
3436
3497
  this.client.emit("serverMemberUpdate" /* SERVER_MEMBER_UPDATE */, oldMember, member);
3437
3498
  }
3438
3499
  }
3439
3500
  };
3501
+ function areRolesDifferent(rolesA, rolesB) {
3502
+ const idsA = rolesA.map((role) => role.id).sort();
3503
+ const idsB = rolesB.map((role) => role.id).sort();
3504
+ return idsA.length !== idsB.length || !idsA.every((id, index) => id === idsB[index]);
3505
+ }
3440
3506
 
3441
3507
  // src/client/events/serverRoleDelete.ts
3442
3508
  var ServerRoleDelete = class extends Event {
package/dist/index.mjs CHANGED
@@ -380,7 +380,7 @@ var ChannelTypes = /* @__PURE__ */ ((ChannelTypes2) => {
380
380
  return ChannelTypes2;
381
381
  })(ChannelTypes || {});
382
382
  var DEFAULT_CLIENT_OPTIONS = {
383
- fetchMembers: false,
383
+ fetchMembers: true,
384
384
  rest: {
385
385
  timeout: 15e3,
386
386
  retries: 3
@@ -606,10 +606,10 @@ var User = class extends Base {
606
606
  /**
607
607
  * Fetches the latest data for the user from the API.
608
608
  *
609
- * @param {boolean} [force=true] - Whether to force a fetch even if the user is cached.
609
+ * @param {boolean} [force=false] - Whether to force a fetch even if the user is cached.
610
610
  * @returns {Promise<User>} A promise that resolves with the updated user instance.
611
611
  */
612
- fetch(force = true) {
612
+ fetch(force = false) {
613
613
  return this.client.users.fetch(this, { force });
614
614
  }
615
615
  /**
@@ -1925,6 +1925,8 @@ var ServerMember3 = class extends Base {
1925
1925
  this.nickname = null;
1926
1926
  /** The avatar of the member, or `null` if none is set. */
1927
1927
  this.avatar = null;
1928
+ /** roles assigned to the member */
1929
+ this.roles = [];
1928
1930
  this._patch(data);
1929
1931
  }
1930
1932
  /**
@@ -1948,6 +1950,20 @@ var ServerMember3 = class extends Base {
1948
1950
  this.serverId = data._id.server;
1949
1951
  this.id = data._id.user;
1950
1952
  }
1953
+ if (Array.isArray(data.roles)) {
1954
+ if (!data.roles.length) this.roles = [];
1955
+ else {
1956
+ this.roles = data.roles.map((roleId) => {
1957
+ const role = this.server.roles.cache.get(roleId);
1958
+ if (!role) {
1959
+ throw new Error(
1960
+ `Role with ID ${roleId} not found in server ${this.serverId}`
1961
+ );
1962
+ }
1963
+ return role;
1964
+ });
1965
+ }
1966
+ }
1951
1967
  for (const field of clear) {
1952
1968
  if (field === "Avatar") this.avatar = null;
1953
1969
  if (field === "Nickname") this.nickname = null;
@@ -1971,6 +1987,46 @@ var ServerMember3 = class extends Base {
1971
1987
  return this;
1972
1988
  });
1973
1989
  }
1990
+ /**
1991
+ * adds a role to the server member.
1992
+ * @param roleId - The ID of the role to add to the member.
1993
+ * @returns
1994
+ */
1995
+ addRole(roleId) {
1996
+ return __async(this, null, function* () {
1997
+ const currentRoles = this.roles.map((role) => role.id);
1998
+ if (currentRoles.includes(roleId)) {
1999
+ return this;
2000
+ }
2001
+ yield this.server.members.edit(this, {
2002
+ roles: [...currentRoles, roleId]
2003
+ });
2004
+ return this;
2005
+ });
2006
+ }
2007
+ /**
2008
+ * Removes a role from the server member.
2009
+ *
2010
+ * @param {string} roleId - The ID of the role to remove from the member.
2011
+ * @returns {Promise<this>} A promise that resolves with the updated server member instance.
2012
+ *
2013
+ * @example
2014
+ * ```typescript
2015
+ * await member.removeRole("roleId");
2016
+ * ```
2017
+ */
2018
+ removeRole(roleId) {
2019
+ return __async(this, null, function* () {
2020
+ const currentRoles = this.roles.map((role) => role.id);
2021
+ if (!currentRoles.includes(roleId)) {
2022
+ return this;
2023
+ }
2024
+ yield this.server.members.edit(this, {
2025
+ roles: currentRoles.filter((id) => id !== roleId)
2026
+ });
2027
+ return this;
2028
+ });
2029
+ }
1974
2030
  /**
1975
2031
  * Bans the server member.
1976
2032
  *
@@ -2405,11 +2461,11 @@ var UserManager = class extends BaseManager {
2405
2461
  }
2406
2462
  /**
2407
2463
  *
2408
- * @param user The user to delete
2409
- * @returns A promise that resolves when the user is deleted
2464
+ * @param user The user to fetch
2465
+ * @returns A promise that resolves when the user is fetched
2410
2466
  */
2411
2467
  fetch(_0) {
2412
- return __async(this, arguments, function* (user, { force = true } = {}) {
2468
+ return __async(this, arguments, function* (user, { force = false } = {}) {
2413
2469
  const id = this.resolveId(user);
2414
2470
  if (!id) throw new TypeError("INVALID_TYPE");
2415
2471
  if (!force) {
@@ -2841,9 +2897,12 @@ var ServerMemberManager = class extends BaseManager {
2841
2897
  );
2842
2898
  return this._add(data);
2843
2899
  }
2844
- const { members } = yield this.client.api.get(
2845
- `/servers/${this.server.id}/members`
2846
- );
2900
+ const { users, members } = yield this.client.api.get(`/servers/${this.server.id}/members`);
2901
+ users.reduce((coll, cur) => {
2902
+ const user = this.client.users._add(cur);
2903
+ coll.set(user.id, user);
2904
+ return coll;
2905
+ }, this.client.users.cache);
2847
2906
  return members.reduce((coll, cur) => {
2848
2907
  const member2 = this._add(cur);
2849
2908
  coll.set(member2.id, member2);
@@ -3356,15 +3415,22 @@ var ServerMemberUpdate = class extends Event {
3356
3415
  * @returns {void}
3357
3416
  */
3358
3417
  handle(data) {
3359
- var _a, _b;
3360
- const server = this.client.servers.cache.get(data.id);
3361
- const member = server == null ? void 0 : server.members.cache.get((_b = (_a = data.data) == null ? void 0 : _a._id) == null ? void 0 : _b.user);
3362
- const oldMember = member == null ? void 0 : member._update(data.data);
3363
- if (oldMember && member && !member.equals(oldMember)) {
3418
+ const updateData = __spreadProps(__spreadValues({}, data.data), {
3419
+ _id: { server: data.id.server, user: data.id.user }
3420
+ });
3421
+ const server = this.client.servers.cache.get(data.id.server);
3422
+ const member = server == null ? void 0 : server.members.cache.get(data.id.user);
3423
+ const oldMember = member == null ? void 0 : member._update(updateData);
3424
+ if (oldMember && member && (!member.equals(oldMember) || areRolesDifferent(member.roles, oldMember.roles))) {
3364
3425
  this.client.emit("serverMemberUpdate" /* SERVER_MEMBER_UPDATE */, oldMember, member);
3365
3426
  }
3366
3427
  }
3367
3428
  };
3429
+ function areRolesDifferent(rolesA, rolesB) {
3430
+ const idsA = rolesA.map((role) => role.id).sort();
3431
+ const idsB = rolesB.map((role) => role.id).sort();
3432
+ return idsA.length !== idsB.length || !idsA.every((id, index) => id === idsB[index]);
3433
+ }
3368
3434
 
3369
3435
  // src/client/events/serverRoleDelete.ts
3370
3436
  var ServerRoleDelete = class extends Event {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "revbot.js",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "A Revolt bot client used to interact with the revolt api for Node.js, written in TypeScript.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -37,7 +37,7 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "axios": "^1.9.0",
40
- "revolt-api": "^0.8.4",
40
+ "revolt-api": "^0.8.6-1",
41
41
  "ws": "^8.18.1"
42
42
  },
43
43
  "scripts": {