revbot.js 0.0.7 → 0.0.8

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/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  # Note: this package is currently in the early stages of development and testing
4
4
 
5
5
  `revbot.js` is a Node.js library for building bots on the Revolt platform. It provides an easy-to-use interface for interacting with Revolt's API, managing events, and handling various bot functionalities.
6
- [revolt server](https://rvlt.gg/7hG9csvW) [docs](https://jade3375.github.io/revbot.js/)
6
+ [revolt server](https://rvlt.gg/2NcCgYZ0) [docs](https://jade3375.github.io/revbot.js/)
7
7
 
8
8
  ## Installation
9
9
 
package/dist/index.d.mts CHANGED
@@ -73,23 +73,51 @@ declare class UUID extends null {
73
73
  }
74
74
 
75
75
  type BitFieldResolvable = BitField | number | string | BitFieldResolvable[];
76
+ /**
77
+ * Represents a bitfield that can be used to manage flags or permissions.
78
+ */
76
79
  declare class BitField {
77
80
  static FLAGS: Record<string, number>;
78
81
  bitfield: number;
79
82
  constructor(bits?: BitFieldResolvable);
83
+ /**
84
+ * Resolves a bitfield or an array of bitfields into a single number.
85
+ * @param bit The bitfield or array of bitfields to resolve.
86
+ * @returns The resolved bitfield as a number.
87
+ */
80
88
  static resolve(bit: BitFieldResolvable): number;
89
+ /**
90
+ * Returns the class that this instance belongs to.
91
+ * @returns The class of the bitfield.
92
+ */
81
93
  get self(): {
82
94
  FLAGS: Record<string, number>;
83
95
  resolve(bit: BitFieldResolvable): number;
84
96
  new (bits?: BitFieldResolvable): BitField;
85
97
  };
98
+ /**
99
+ * Checks if any of the bits in the bitfield are set.
100
+ * @param bit The bitfield or array of bitfields to check.
101
+ * @returns True if any bits are set, false otherwise.
102
+ */
86
103
  any(bit: BitFieldResolvable): boolean;
104
+ /**
105
+ * checks if a specific permission is set.
106
+ */
87
107
  has(bit: BitFieldResolvable): boolean;
108
+ /**
109
+ * Returns an array of all the Permissions that are set in the bitfield.
110
+ * @returns An array of flag names.
111
+ */
88
112
  toArray(): string[];
89
113
  add(...bits: BitFieldResolvable[]): this;
90
114
  remove(...bits: BitFieldResolvable[]): this;
91
115
  freeze(): Readonly<this>;
92
116
  valueOf(): number;
117
+ /**
118
+ *
119
+ * @returns A record of all flags and their boolean values indicating whether they are set.
120
+ */
93
121
  serialize(): Record<string, boolean>;
94
122
  [Symbol.iterator](): Iterable<string>;
95
123
  }
@@ -465,6 +493,44 @@ declare class ServerPermissions extends BitField {
465
493
  constructor(bits?: ServerPermissionsResolvable);
466
494
  static resolve(bit: ServerPermissionsResolvable): number;
467
495
  }
496
+ declare class FullPermissions extends BitField {
497
+ static readonly FLAGS: {
498
+ readonly ManageChannel: number;
499
+ readonly ManageServer: number;
500
+ readonly ManagePermissions: number;
501
+ readonly ManageRole: number;
502
+ readonly ManageCustomisation: number;
503
+ readonly KickMembers: number;
504
+ readonly BanMembers: number;
505
+ readonly TimeoutMembers: number;
506
+ readonly AssignRoles: number;
507
+ readonly ChangeNickname: number;
508
+ readonly ManageNicknames: number;
509
+ readonly ChangeAvatar: number;
510
+ readonly RemoveAvatars: number;
511
+ readonly ViewChannel: number;
512
+ readonly ReadMessageHistory: number;
513
+ readonly SendMessage: number;
514
+ readonly ManageMessages: number;
515
+ readonly ManageWebhooks: number;
516
+ readonly InviteOthers: number;
517
+ readonly SendEmbeds: number;
518
+ readonly UploadFiles: number;
519
+ readonly Masquerade: number;
520
+ readonly React: number;
521
+ readonly Connect: number;
522
+ readonly Speak: number;
523
+ readonly Video: number;
524
+ readonly MuteMembers: number;
525
+ readonly DeafenMembers: number;
526
+ readonly MoveMembers: number;
527
+ readonly MentionEveryone: number;
528
+ readonly MentionRoles: number;
529
+ readonly GrantAll: 4503599627370495;
530
+ };
531
+ constructor(bits?: number | string | FullPermissions | Array<number | string | FullPermissions>);
532
+ static resolve(bit: number | string | FullPermissions): number;
533
+ }
468
534
  declare const DEFAULT_PERMISSION_DM: Readonly<ChannelPermissions>;
469
535
 
470
536
  type BadgeString = keyof typeof Badges.FLAGS;
@@ -840,7 +906,7 @@ declare class Server extends Base {
840
906
  /** Whether the server is marked as NSFW (Not Safe For Work). */
841
907
  nsfw: boolean;
842
908
  /** The default permissions for the server. */
843
- permissions: ServerPermissions;
909
+ permissions: FullPermissions;
844
910
  /** The categories in the server. */
845
911
  categories: Map<string, Category>;
846
912
  /** the emojies associated with the server */
@@ -893,6 +959,55 @@ declare class Server extends Base {
893
959
  toString(): string;
894
960
  }
895
961
 
962
+ /**
963
+ * Represents the permissions that can be set for a role.
964
+ */
965
+ type editablePermissions = {
966
+ /**
967
+ * Permissions to allow for the role.
968
+ * Each key corresponds to a permission flag in FullPermissions.
969
+ */
970
+ a?: Array<keyof (typeof FullPermissions)["FLAGS"]>;
971
+ /**
972
+ * Permissions to deny for the role.
973
+ * Each key corresponds to a permission flag in FullPermissions.
974
+ */
975
+ d?: Array<keyof (typeof FullPermissions)["FLAGS"]>;
976
+ };
977
+ /**
978
+ * Represents a role that can be edited in a server.
979
+ */
980
+ type editableRole = {
981
+ /**
982
+ * Name of the role.
983
+ */
984
+ name?: string;
985
+ /**
986
+ * Colour of the role, or `null` if no colour is set.
987
+ */
988
+ colour?: string | null;
989
+ /**
990
+ * Whether the role is displayed separately in the member list.
991
+ */
992
+ hoist?: boolean;
993
+ /**
994
+ * Rank of the role, used for ordering.
995
+ */
996
+ rank?: number;
997
+ /**
998
+ * Permissions to set for the role.
999
+ * Format: { a: allow, d: deny }
1000
+ */
1001
+ permissions?: editablePermissions;
1002
+ /**
1003
+ * Fields to remove from the role.
1004
+ * Each key corresponds to a field in the Role type.
1005
+ */
1006
+ remove?: Array<keyof Role$1 & {
1007
+ [key: string]: unknown;
1008
+ }>;
1009
+ };
1010
+
896
1011
  /**
897
1012
  * Represents a role in a server.
898
1013
  *
@@ -960,6 +1075,7 @@ declare class Role extends Base {
960
1075
  * ```
961
1076
  */
962
1077
  delete(): Promise<void>;
1078
+ edit(data: editableRole): Promise<Role>;
963
1079
  /**
964
1080
  * Converts the role to a string representation.
965
1081
  *
@@ -1532,8 +1648,8 @@ type APIServerChannel$1 = Extract<Channel$1, {
1532
1648
  channel_type: "TextChannel" | "VoiceChannel";
1533
1649
  }>;
1534
1650
  interface Overwrite {
1535
- allow: ChannelPermissions;
1536
- deny: ChannelPermissions;
1651
+ allow: FullPermissions;
1652
+ deny: FullPermissions;
1537
1653
  }
1538
1654
  /**
1539
1655
  * Represents a server channel, which can be a text or voice channel.
@@ -2397,6 +2513,20 @@ declare class RoleManager extends BaseManager<Role, Role$1 & {
2397
2513
  * @returns A promise that resolves when the role is deleted
2398
2514
  */
2399
2515
  delete(role: RoleResolvable): Promise<void>;
2516
+ /**
2517
+ *
2518
+ * @param role the role to edit
2519
+ * @param data data to edit the role with
2520
+ * @param data.permissions The permissions to set for the role, in the format { a: allow, d: deny }
2521
+ * @param data.name The name of the role
2522
+ * @param data.colour The color of the role, or `null` if no color is set
2523
+ * @param data.hoist Whether the role is displayed separately in the member list
2524
+ * @param data.rank The rank of the role, used for ordering
2525
+ * @param data.remove Fields to remove from the role
2526
+ * @returns Role
2527
+ * @throws {TypeError} If the role ID is invalid
2528
+ */
2529
+ edit(role: RoleResolvable, data: editableRole): Promise<Role>;
2400
2530
  }
2401
2531
 
2402
2532
  type APIServerChannel = Extract<Channel$1, {
@@ -2487,4 +2617,4 @@ declare class ServerMemberManager extends BaseManager<ServerMember, Member> {
2487
2617
  resolveId(member: ServerMemberResolvable): string | null;
2488
2618
  }
2489
2619
 
2490
- export { Attachment, type BadgeString, Badges, type BadgesResolvable, Base, BaseManager, BitField, type BitFieldResolvable, Category, Channel, ChannelManager, ChannelPermissions, type ChannelPermissionsResolvable, type ChannelPermissionsString, type ChannelResolvable, ChannelTypes, type CreateChannelOptions, DEFAULT_CLIENT_OPTIONS, DEFAULT_PERMISSION_DM, DMChannel, type EditServerMemberOptions, type EditServerOptions, type Embed, type EmbedImage, type EmbedSpecial, type EmbedVideo, Emoji, Events, GroupChannel, Invite, Mentions, Message, type MessageEditOptions, MessageEmbed, MessageManager, type MessageOptions, type MessageQueryOptions, type MessageReply, type MessageResolvable, type MessageSearchOptions, NotesChannel, type Overwrite, Presence, Role, RoleManager, type RoleResolvable, SYSTEM_USER_ID, Server, ServerChannel, ServerChannelManager, type ServerChannelResolvable, ServerManager, ServerMember, ServerMemberManager, type ServerMemberResolvable, ServerPermissions, type ServerPermissionsResolvable, type ServerPermissionsString, type ServerResolvable, Status, TextChannel, UUID, User, UserManager, UserPermissions, type UserPermissionsResolvable, type UserPermissionsString, type UserResolvable, VoiceChannel, WSEvents, apiUrl, cdnUrl, client, wsUrl };
2620
+ export { Attachment, type BadgeString, Badges, type BadgesResolvable, Base, BaseManager, BitField, type BitFieldResolvable, Category, Channel, ChannelManager, ChannelPermissions, type ChannelPermissionsResolvable, type ChannelPermissionsString, type ChannelResolvable, ChannelTypes, type CreateChannelOptions, DEFAULT_CLIENT_OPTIONS, DEFAULT_PERMISSION_DM, DMChannel, type EditServerMemberOptions, type EditServerOptions, type Embed, type EmbedImage, type EmbedSpecial, type EmbedVideo, Emoji, Events, FullPermissions, GroupChannel, Invite, Mentions, Message, type MessageEditOptions, MessageEmbed, MessageManager, type MessageOptions, type MessageQueryOptions, type MessageReply, type MessageResolvable, type MessageSearchOptions, NotesChannel, type Overwrite, Presence, Role, RoleManager, type RoleResolvable, SYSTEM_USER_ID, Server, ServerChannel, ServerChannelManager, type ServerChannelResolvable, ServerManager, ServerMember, ServerMemberManager, type ServerMemberResolvable, ServerPermissions, type ServerPermissionsResolvable, type ServerPermissionsString, type ServerResolvable, Status, TextChannel, UUID, User, UserManager, UserPermissions, type UserPermissionsResolvable, type UserPermissionsString, type UserResolvable, VoiceChannel, WSEvents, apiUrl, cdnUrl, client, wsUrl };
package/dist/index.d.ts CHANGED
@@ -73,23 +73,51 @@ declare class UUID extends null {
73
73
  }
74
74
 
75
75
  type BitFieldResolvable = BitField | number | string | BitFieldResolvable[];
76
+ /**
77
+ * Represents a bitfield that can be used to manage flags or permissions.
78
+ */
76
79
  declare class BitField {
77
80
  static FLAGS: Record<string, number>;
78
81
  bitfield: number;
79
82
  constructor(bits?: BitFieldResolvable);
83
+ /**
84
+ * Resolves a bitfield or an array of bitfields into a single number.
85
+ * @param bit The bitfield or array of bitfields to resolve.
86
+ * @returns The resolved bitfield as a number.
87
+ */
80
88
  static resolve(bit: BitFieldResolvable): number;
89
+ /**
90
+ * Returns the class that this instance belongs to.
91
+ * @returns The class of the bitfield.
92
+ */
81
93
  get self(): {
82
94
  FLAGS: Record<string, number>;
83
95
  resolve(bit: BitFieldResolvable): number;
84
96
  new (bits?: BitFieldResolvable): BitField;
85
97
  };
98
+ /**
99
+ * Checks if any of the bits in the bitfield are set.
100
+ * @param bit The bitfield or array of bitfields to check.
101
+ * @returns True if any bits are set, false otherwise.
102
+ */
86
103
  any(bit: BitFieldResolvable): boolean;
104
+ /**
105
+ * checks if a specific permission is set.
106
+ */
87
107
  has(bit: BitFieldResolvable): boolean;
108
+ /**
109
+ * Returns an array of all the Permissions that are set in the bitfield.
110
+ * @returns An array of flag names.
111
+ */
88
112
  toArray(): string[];
89
113
  add(...bits: BitFieldResolvable[]): this;
90
114
  remove(...bits: BitFieldResolvable[]): this;
91
115
  freeze(): Readonly<this>;
92
116
  valueOf(): number;
117
+ /**
118
+ *
119
+ * @returns A record of all flags and their boolean values indicating whether they are set.
120
+ */
93
121
  serialize(): Record<string, boolean>;
94
122
  [Symbol.iterator](): Iterable<string>;
95
123
  }
@@ -465,6 +493,44 @@ declare class ServerPermissions extends BitField {
465
493
  constructor(bits?: ServerPermissionsResolvable);
466
494
  static resolve(bit: ServerPermissionsResolvable): number;
467
495
  }
496
+ declare class FullPermissions extends BitField {
497
+ static readonly FLAGS: {
498
+ readonly ManageChannel: number;
499
+ readonly ManageServer: number;
500
+ readonly ManagePermissions: number;
501
+ readonly ManageRole: number;
502
+ readonly ManageCustomisation: number;
503
+ readonly KickMembers: number;
504
+ readonly BanMembers: number;
505
+ readonly TimeoutMembers: number;
506
+ readonly AssignRoles: number;
507
+ readonly ChangeNickname: number;
508
+ readonly ManageNicknames: number;
509
+ readonly ChangeAvatar: number;
510
+ readonly RemoveAvatars: number;
511
+ readonly ViewChannel: number;
512
+ readonly ReadMessageHistory: number;
513
+ readonly SendMessage: number;
514
+ readonly ManageMessages: number;
515
+ readonly ManageWebhooks: number;
516
+ readonly InviteOthers: number;
517
+ readonly SendEmbeds: number;
518
+ readonly UploadFiles: number;
519
+ readonly Masquerade: number;
520
+ readonly React: number;
521
+ readonly Connect: number;
522
+ readonly Speak: number;
523
+ readonly Video: number;
524
+ readonly MuteMembers: number;
525
+ readonly DeafenMembers: number;
526
+ readonly MoveMembers: number;
527
+ readonly MentionEveryone: number;
528
+ readonly MentionRoles: number;
529
+ readonly GrantAll: 4503599627370495;
530
+ };
531
+ constructor(bits?: number | string | FullPermissions | Array<number | string | FullPermissions>);
532
+ static resolve(bit: number | string | FullPermissions): number;
533
+ }
468
534
  declare const DEFAULT_PERMISSION_DM: Readonly<ChannelPermissions>;
469
535
 
470
536
  type BadgeString = keyof typeof Badges.FLAGS;
@@ -840,7 +906,7 @@ declare class Server extends Base {
840
906
  /** Whether the server is marked as NSFW (Not Safe For Work). */
841
907
  nsfw: boolean;
842
908
  /** The default permissions for the server. */
843
- permissions: ServerPermissions;
909
+ permissions: FullPermissions;
844
910
  /** The categories in the server. */
845
911
  categories: Map<string, Category>;
846
912
  /** the emojies associated with the server */
@@ -893,6 +959,55 @@ declare class Server extends Base {
893
959
  toString(): string;
894
960
  }
895
961
 
962
+ /**
963
+ * Represents the permissions that can be set for a role.
964
+ */
965
+ type editablePermissions = {
966
+ /**
967
+ * Permissions to allow for the role.
968
+ * Each key corresponds to a permission flag in FullPermissions.
969
+ */
970
+ a?: Array<keyof (typeof FullPermissions)["FLAGS"]>;
971
+ /**
972
+ * Permissions to deny for the role.
973
+ * Each key corresponds to a permission flag in FullPermissions.
974
+ */
975
+ d?: Array<keyof (typeof FullPermissions)["FLAGS"]>;
976
+ };
977
+ /**
978
+ * Represents a role that can be edited in a server.
979
+ */
980
+ type editableRole = {
981
+ /**
982
+ * Name of the role.
983
+ */
984
+ name?: string;
985
+ /**
986
+ * Colour of the role, or `null` if no colour is set.
987
+ */
988
+ colour?: string | null;
989
+ /**
990
+ * Whether the role is displayed separately in the member list.
991
+ */
992
+ hoist?: boolean;
993
+ /**
994
+ * Rank of the role, used for ordering.
995
+ */
996
+ rank?: number;
997
+ /**
998
+ * Permissions to set for the role.
999
+ * Format: { a: allow, d: deny }
1000
+ */
1001
+ permissions?: editablePermissions;
1002
+ /**
1003
+ * Fields to remove from the role.
1004
+ * Each key corresponds to a field in the Role type.
1005
+ */
1006
+ remove?: Array<keyof Role$1 & {
1007
+ [key: string]: unknown;
1008
+ }>;
1009
+ };
1010
+
896
1011
  /**
897
1012
  * Represents a role in a server.
898
1013
  *
@@ -960,6 +1075,7 @@ declare class Role extends Base {
960
1075
  * ```
961
1076
  */
962
1077
  delete(): Promise<void>;
1078
+ edit(data: editableRole): Promise<Role>;
963
1079
  /**
964
1080
  * Converts the role to a string representation.
965
1081
  *
@@ -1532,8 +1648,8 @@ type APIServerChannel$1 = Extract<Channel$1, {
1532
1648
  channel_type: "TextChannel" | "VoiceChannel";
1533
1649
  }>;
1534
1650
  interface Overwrite {
1535
- allow: ChannelPermissions;
1536
- deny: ChannelPermissions;
1651
+ allow: FullPermissions;
1652
+ deny: FullPermissions;
1537
1653
  }
1538
1654
  /**
1539
1655
  * Represents a server channel, which can be a text or voice channel.
@@ -2397,6 +2513,20 @@ declare class RoleManager extends BaseManager<Role, Role$1 & {
2397
2513
  * @returns A promise that resolves when the role is deleted
2398
2514
  */
2399
2515
  delete(role: RoleResolvable): Promise<void>;
2516
+ /**
2517
+ *
2518
+ * @param role the role to edit
2519
+ * @param data data to edit the role with
2520
+ * @param data.permissions The permissions to set for the role, in the format { a: allow, d: deny }
2521
+ * @param data.name The name of the role
2522
+ * @param data.colour The color of the role, or `null` if no color is set
2523
+ * @param data.hoist Whether the role is displayed separately in the member list
2524
+ * @param data.rank The rank of the role, used for ordering
2525
+ * @param data.remove Fields to remove from the role
2526
+ * @returns Role
2527
+ * @throws {TypeError} If the role ID is invalid
2528
+ */
2529
+ edit(role: RoleResolvable, data: editableRole): Promise<Role>;
2400
2530
  }
2401
2531
 
2402
2532
  type APIServerChannel = Extract<Channel$1, {
@@ -2487,4 +2617,4 @@ declare class ServerMemberManager extends BaseManager<ServerMember, Member> {
2487
2617
  resolveId(member: ServerMemberResolvable): string | null;
2488
2618
  }
2489
2619
 
2490
- export { Attachment, type BadgeString, Badges, type BadgesResolvable, Base, BaseManager, BitField, type BitFieldResolvable, Category, Channel, ChannelManager, ChannelPermissions, type ChannelPermissionsResolvable, type ChannelPermissionsString, type ChannelResolvable, ChannelTypes, type CreateChannelOptions, DEFAULT_CLIENT_OPTIONS, DEFAULT_PERMISSION_DM, DMChannel, type EditServerMemberOptions, type EditServerOptions, type Embed, type EmbedImage, type EmbedSpecial, type EmbedVideo, Emoji, Events, GroupChannel, Invite, Mentions, Message, type MessageEditOptions, MessageEmbed, MessageManager, type MessageOptions, type MessageQueryOptions, type MessageReply, type MessageResolvable, type MessageSearchOptions, NotesChannel, type Overwrite, Presence, Role, RoleManager, type RoleResolvable, SYSTEM_USER_ID, Server, ServerChannel, ServerChannelManager, type ServerChannelResolvable, ServerManager, ServerMember, ServerMemberManager, type ServerMemberResolvable, ServerPermissions, type ServerPermissionsResolvable, type ServerPermissionsString, type ServerResolvable, Status, TextChannel, UUID, User, UserManager, UserPermissions, type UserPermissionsResolvable, type UserPermissionsString, type UserResolvable, VoiceChannel, WSEvents, apiUrl, cdnUrl, client, wsUrl };
2620
+ export { Attachment, type BadgeString, Badges, type BadgesResolvable, Base, BaseManager, BitField, type BitFieldResolvable, Category, Channel, ChannelManager, ChannelPermissions, type ChannelPermissionsResolvable, type ChannelPermissionsString, type ChannelResolvable, ChannelTypes, type CreateChannelOptions, DEFAULT_CLIENT_OPTIONS, DEFAULT_PERMISSION_DM, DMChannel, type EditServerMemberOptions, type EditServerOptions, type Embed, type EmbedImage, type EmbedSpecial, type EmbedVideo, Emoji, Events, FullPermissions, GroupChannel, Invite, Mentions, Message, type MessageEditOptions, MessageEmbed, MessageManager, type MessageOptions, type MessageQueryOptions, type MessageReply, type MessageResolvable, type MessageSearchOptions, NotesChannel, type Overwrite, Presence, Role, RoleManager, type RoleResolvable, SYSTEM_USER_ID, Server, ServerChannel, ServerChannelManager, type ServerChannelResolvable, ServerManager, ServerMember, ServerMemberManager, type ServerMemberResolvable, ServerPermissions, type ServerPermissionsResolvable, type ServerPermissionsString, type ServerResolvable, Status, TextChannel, UUID, User, UserManager, UserPermissions, type UserPermissionsResolvable, type UserPermissionsString, type UserResolvable, VoiceChannel, WSEvents, apiUrl, cdnUrl, client, wsUrl };
package/dist/index.js CHANGED
@@ -13,6 +13,7 @@ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.
13
13
  var __typeError = (msg) => {
14
14
  throw TypeError(msg);
15
15
  };
16
+ var __pow = Math.pow;
16
17
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
17
18
  var __spreadValues = (a, b) => {
18
19
  for (var prop in b || (b = {}))
@@ -122,6 +123,7 @@ __export(index_exports, {
122
123
  DMChannel: () => DMChannel3,
123
124
  Emoji: () => Emoji2,
124
125
  Events: () => Events,
126
+ FullPermissions: () => FullPermissions,
125
127
  GroupChannel: () => GroupChannel2,
126
128
  Invite: () => Invite,
127
129
  Mentions: () => Mentions,
@@ -197,6 +199,11 @@ var _BitField = class _BitField {
197
199
  this.bitfield = DEFAULT_BIT;
198
200
  this.bitfield = this.self.resolve(bits);
199
201
  }
202
+ /**
203
+ * Resolves a bitfield or an array of bitfields into a single number.
204
+ * @param bit The bitfield or array of bitfields to resolve.
205
+ * @returns The resolved bitfield as a number.
206
+ */
200
207
  static resolve(bit) {
201
208
  if (bit instanceof _BitField) return bit.bitfield;
202
209
  if (typeof bit === "number" && bit >= DEFAULT_BIT) return bit;
@@ -206,17 +213,33 @@ var _BitField = class _BitField {
206
213
  if (typeof this.FLAGS[bit] !== "undefined") return this.FLAGS[bit];
207
214
  throw new Error("BITFIELD_INVALID");
208
215
  }
216
+ /**
217
+ * Returns the class that this instance belongs to.
218
+ * @returns The class of the bitfield.
219
+ */
209
220
  get self() {
210
221
  return this.constructor;
211
222
  }
223
+ /**
224
+ * Checks if any of the bits in the bitfield are set.
225
+ * @param bit The bitfield or array of bitfields to check.
226
+ * @returns True if any bits are set, false otherwise.
227
+ */
212
228
  any(bit) {
213
229
  bit = this.self.resolve(bit);
214
230
  return (this.bitfield & bit) !== DEFAULT_BIT;
215
231
  }
232
+ /**
233
+ * checks if a specific permission is set.
234
+ */
216
235
  has(bit) {
217
236
  bit = this.self.resolve(bit);
218
237
  return (this.bitfield & bit) === bit;
219
238
  }
239
+ /**
240
+ * Returns an array of all the Permissions that are set in the bitfield.
241
+ * @returns An array of flag names.
242
+ */
220
243
  toArray() {
221
244
  return Object.keys(this.self.FLAGS).filter((bit) => this.has(bit));
222
245
  }
@@ -248,6 +271,10 @@ var _BitField = class _BitField {
248
271
  valueOf() {
249
272
  return this.bitfield;
250
273
  }
274
+ /**
275
+ *
276
+ * @returns A record of all flags and their boolean values indicating whether they are set.
277
+ */
251
278
  serialize() {
252
279
  const serialized = {};
253
280
  for (const [flag, bit] of Object.entries(this.self.FLAGS)) {
@@ -478,14 +505,14 @@ var ChannelPermissions = class extends BitField {
478
505
  }
479
506
  };
480
507
  ChannelPermissions.FLAGS = {
481
- VIEW_CHANNEL: 1 << 0,
482
- SEND_MESSAGE: 1 << 1,
483
- MANAGE_MESSAGE: 1 << 2,
484
- MANAGE_CHANNEL: 1 << 3,
485
- VOICE_CALL: 1 << 4,
486
- INVITE_OTHERS: 1 << 5,
487
- EMBED_LINKS: 1 << 6,
488
- UPLOAD_FILES: 1 << 7
508
+ VIEW_CHANNEL: __pow(1, 0),
509
+ SEND_MESSAGE: __pow(1, 22),
510
+ MANAGE_MESSAGE: __pow(1, 2),
511
+ MANAGE_CHANNEL: __pow(1, 3),
512
+ VOICE_CALL: __pow(1, 4),
513
+ INVITE_OTHERS: __pow(1, 5),
514
+ EMBED_LINKS: __pow(1, 6),
515
+ UPLOAD_FILES: __pow(1, 7)
489
516
  };
490
517
  var UserPermissions = class extends BitField {
491
518
  constructor(bits) {
@@ -496,10 +523,10 @@ var UserPermissions = class extends BitField {
496
523
  }
497
524
  };
498
525
  UserPermissions.FLAGS = {
499
- ACCESS: 1 << 0,
500
- VIEW_PROFILE: 1 << 1,
501
- SEND_MESSAGES: 1 << 2,
502
- INVITE: 1 << 3
526
+ ACCESS: __pow(1, 0),
527
+ VIEW_PROFILE: __pow(1, 1),
528
+ SEND_MESSAGES: __pow(1, 2),
529
+ INVITE: __pow(1, 3)
503
530
  };
504
531
  var ServerPermissions = class extends BitField {
505
532
  constructor(bits) {
@@ -510,16 +537,96 @@ var ServerPermissions = class extends BitField {
510
537
  }
511
538
  };
512
539
  ServerPermissions.FLAGS = {
513
- VIEW_SERVER: 1 << 0,
514
- MANAGE_ROLES: 1 << 1,
515
- MANAGE_CHANNELS: 1 << 2,
516
- MANAGE_SERVER: 1 << 3,
517
- KICK_MEMBERS: 1 << 4,
518
- BAN_MEMBERS: 1 << 5,
519
- CHANGE_NICKNAME: 1 << 12,
520
- MANAGE_NICKNAMES: 1 << 13,
521
- CHANGE_AVATAR: 1 << 14,
522
- REMOVE_AVATARS: 1 << 15
540
+ VIEW_SERVER: __pow(1, 0),
541
+ MANAGE_ROLES: __pow(1, 1),
542
+ MANAGE_CHANNELS: __pow(1, 2),
543
+ MANAGE_SERVER: __pow(1, 3),
544
+ KICK_MEMBERS: __pow(1, 4),
545
+ BAN_MEMBERS: __pow(1, 5),
546
+ CHANGE_NICKNAME: __pow(1, 12),
547
+ MANAGE_NICKNAMES: __pow(1, 13),
548
+ CHANGE_AVATAR: __pow(1, 14),
549
+ REMOVE_AVATARS: __pow(1, 15)
550
+ };
551
+ var FullPermissions = class extends BitField {
552
+ constructor(bits) {
553
+ super(bits);
554
+ }
555
+ static resolve(bit) {
556
+ return super.resolve(bit);
557
+ }
558
+ };
559
+ FullPermissions.FLAGS = {
560
+ // * Generic permissions
561
+ /// Manage the channel or channels on the server
562
+ ManageChannel: __pow(2, 0),
563
+ /// Manage the server
564
+ ManageServer: __pow(2, 1),
565
+ /// Manage permissions on servers or channels
566
+ ManagePermissions: __pow(2, 2),
567
+ /// Manage roles on server
568
+ ManageRole: __pow(2, 3),
569
+ /// Manage server customisation (includes emoji)
570
+ ManageCustomisation: __pow(2, 4),
571
+ // * Member permissions
572
+ /// Kick other members below their ranking
573
+ KickMembers: __pow(2, 6),
574
+ /// Ban other members below their ranking
575
+ BanMembers: __pow(2, 7),
576
+ /// Timeout other members below their ranking
577
+ TimeoutMembers: __pow(2, 8),
578
+ /// Assign roles to members below their ranking
579
+ AssignRoles: __pow(2, 9),
580
+ /// Change own nickname
581
+ ChangeNickname: __pow(2, 10),
582
+ /// Change or remove other's nicknames below their ranking
583
+ ManageNicknames: __pow(2, 11),
584
+ /// Change own avatar
585
+ ChangeAvatar: __pow(2, 12),
586
+ /// Remove other's avatars below their ranking
587
+ RemoveAvatars: __pow(2, 13),
588
+ // * Channel permissions
589
+ /// View a channel
590
+ ViewChannel: __pow(2, 20),
591
+ /// Read a channel's past message history
592
+ ReadMessageHistory: __pow(2, 21),
593
+ /// Send a message in a channel
594
+ SendMessage: __pow(2, 22),
595
+ /// Delete messages in a channel
596
+ ManageMessages: __pow(2, 23),
597
+ /// Manage webhook entries on a channel
598
+ ManageWebhooks: __pow(2, 24),
599
+ /// Create invites to this channel
600
+ InviteOthers: __pow(2, 25),
601
+ /// Send embedded content in this channel
602
+ SendEmbeds: __pow(2, 26),
603
+ /// Send attachments and media in this channel
604
+ UploadFiles: __pow(2, 27),
605
+ /// Masquerade messages using custom nickname and avatar
606
+ Masquerade: __pow(2, 28),
607
+ /// React to messages with emoji
608
+ React: __pow(2, 29),
609
+ // * Voice permissions
610
+ /// Connect to a voice channel
611
+ Connect: __pow(2, 30),
612
+ /// Speak in a voice call
613
+ Speak: __pow(2, 31),
614
+ /// Share video in a voice call
615
+ Video: __pow(2, 32),
616
+ /// Mute other members with lower ranking in a voice call
617
+ MuteMembers: __pow(2, 33),
618
+ /// Deafen other members with lower ranking in a voice call
619
+ DeafenMembers: __pow(2, 34),
620
+ /// Move members between voice channels
621
+ MoveMembers: __pow(2, 35),
622
+ // * Mention permissions
623
+ /// Mention @everyone or @online
624
+ MentionEveryone: __pow(2, 37),
625
+ /// Mention a role
626
+ MentionRoles: __pow(2, 38),
627
+ // * Grant all permissions
628
+ /// Safely grant all permissions
629
+ GrantAll: 4503599627370495
523
630
  };
524
631
  var DEFAULT_PERMISSION_DM = new ChannelPermissions([
525
632
  "VIEW_CHANNEL",
@@ -1066,9 +1173,7 @@ var Server2 = class extends Base {
1066
1173
  }
1067
1174
  }
1068
1175
  if (typeof data.default_permissions === "number") {
1069
- this.permissions = new ServerPermissions(
1070
- data.default_permissions
1071
- ).freeze();
1176
+ this.permissions = new FullPermissions(data.default_permissions).freeze();
1072
1177
  }
1073
1178
  if (typeof data.analytics === "boolean") this.analytics = data.analytics;
1074
1179
  if (typeof data.discoverable === "boolean") {
@@ -1171,8 +1276,8 @@ var Role = class extends Base {
1171
1276
  if (data.permissions) {
1172
1277
  const { a, d } = data.permissions;
1173
1278
  this.overwrite = {
1174
- allow: new ChannelPermissions(a),
1175
- deny: new ChannelPermissions(d)
1279
+ allow: new FullPermissions(a),
1280
+ deny: new FullPermissions(d)
1176
1281
  };
1177
1282
  }
1178
1283
  for (const field of clear) {
@@ -1218,6 +1323,9 @@ var Role = class extends Base {
1218
1323
  delete() {
1219
1324
  return this.server.roles.delete(this);
1220
1325
  }
1326
+ edit(data) {
1327
+ return this.server.roles.edit(this, data);
1328
+ }
1221
1329
  /**
1222
1330
  * Converts the role to a string representation.
1223
1331
  *
@@ -1974,8 +2082,8 @@ var ServerChannel = class extends Channel {
1974
2082
  this.overwrites.clear();
1975
2083
  for (const [id, { a, d }] of Object.entries(data.role_permissions)) {
1976
2084
  this.overwrites.set(id, {
1977
- allow: new ChannelPermissions(a),
1978
- deny: new ChannelPermissions(d)
2085
+ allow: new FullPermissions(a),
2086
+ deny: new FullPermissions(d)
1979
2087
  });
1980
2088
  }
1981
2089
  }
@@ -2893,6 +3001,42 @@ var RoleManager = class extends BaseManager {
2893
3001
  yield this.client.api.delete(`/servers/${this.server.id}/roles/${id}`);
2894
3002
  });
2895
3003
  }
3004
+ /**
3005
+ *
3006
+ * @param role the role to edit
3007
+ * @param data data to edit the role with
3008
+ * @param data.permissions The permissions to set for the role, in the format { a: allow, d: deny }
3009
+ * @param data.name The name of the role
3010
+ * @param data.colour The color of the role, or `null` if no color is set
3011
+ * @param data.hoist Whether the role is displayed separately in the member list
3012
+ * @param data.rank The rank of the role, used for ordering
3013
+ * @param data.remove Fields to remove from the role
3014
+ * @returns Role
3015
+ * @throws {TypeError} If the role ID is invalid
3016
+ */
3017
+ edit(role, data) {
3018
+ return __async(this, null, function* () {
3019
+ var _a, _b;
3020
+ const id = this.resolveId(role);
3021
+ if (!id) throw new TypeError("INVALID_TYPE");
3022
+ if (data.permissions) {
3023
+ const permissions = {
3024
+ allow: new FullPermissions(((_a = data.permissions) == null ? void 0 : _a.a) || []).bitfield,
3025
+ deny: new FullPermissions(((_b = data.permissions) == null ? void 0 : _b.d) || []).bitfield
3026
+ };
3027
+ yield this.client.api.put(
3028
+ `/servers/${this.server.id}/permissions/${id}`,
3029
+ { body: { permissions } }
3030
+ );
3031
+ }
3032
+ delete data.permissions;
3033
+ const updatedRole = yield this.client.api.patch(
3034
+ `/servers/${this.server.id}/roles/${id}`,
3035
+ { body: data }
3036
+ );
3037
+ return this._add(Object.assign(updatedRole, { id }));
3038
+ });
3039
+ }
2896
3040
  };
2897
3041
 
2898
3042
  // src/managers/serverChannelManager.ts
@@ -3091,7 +3235,7 @@ var import_node_events = require("events");
3091
3235
  var import_axios3 = __toESM(require("axios"));
3092
3236
 
3093
3237
  // package.json
3094
- var version = "0.0.7";
3238
+ var version = "0.0.8";
3095
3239
 
3096
3240
  // src/rest/restClient.ts
3097
3241
  var RestClient = class {
@@ -4245,6 +4389,7 @@ var client2 = class extends BaseClient {
4245
4389
  DMChannel,
4246
4390
  Emoji,
4247
4391
  Events,
4392
+ FullPermissions,
4248
4393
  GroupChannel,
4249
4394
  Invite,
4250
4395
  Mentions,
package/dist/index.mjs CHANGED
@@ -8,6 +8,7 @@ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.
8
8
  var __typeError = (msg) => {
9
9
  throw TypeError(msg);
10
10
  };
11
+ var __pow = Math.pow;
11
12
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
13
  var __spreadValues = (a, b) => {
13
14
  for (var prop in b || (b = {}))
@@ -124,6 +125,11 @@ var _BitField = class _BitField {
124
125
  this.bitfield = DEFAULT_BIT;
125
126
  this.bitfield = this.self.resolve(bits);
126
127
  }
128
+ /**
129
+ * Resolves a bitfield or an array of bitfields into a single number.
130
+ * @param bit The bitfield or array of bitfields to resolve.
131
+ * @returns The resolved bitfield as a number.
132
+ */
127
133
  static resolve(bit) {
128
134
  if (bit instanceof _BitField) return bit.bitfield;
129
135
  if (typeof bit === "number" && bit >= DEFAULT_BIT) return bit;
@@ -133,17 +139,33 @@ var _BitField = class _BitField {
133
139
  if (typeof this.FLAGS[bit] !== "undefined") return this.FLAGS[bit];
134
140
  throw new Error("BITFIELD_INVALID");
135
141
  }
142
+ /**
143
+ * Returns the class that this instance belongs to.
144
+ * @returns The class of the bitfield.
145
+ */
136
146
  get self() {
137
147
  return this.constructor;
138
148
  }
149
+ /**
150
+ * Checks if any of the bits in the bitfield are set.
151
+ * @param bit The bitfield or array of bitfields to check.
152
+ * @returns True if any bits are set, false otherwise.
153
+ */
139
154
  any(bit) {
140
155
  bit = this.self.resolve(bit);
141
156
  return (this.bitfield & bit) !== DEFAULT_BIT;
142
157
  }
158
+ /**
159
+ * checks if a specific permission is set.
160
+ */
143
161
  has(bit) {
144
162
  bit = this.self.resolve(bit);
145
163
  return (this.bitfield & bit) === bit;
146
164
  }
165
+ /**
166
+ * Returns an array of all the Permissions that are set in the bitfield.
167
+ * @returns An array of flag names.
168
+ */
147
169
  toArray() {
148
170
  return Object.keys(this.self.FLAGS).filter((bit) => this.has(bit));
149
171
  }
@@ -175,6 +197,10 @@ var _BitField = class _BitField {
175
197
  valueOf() {
176
198
  return this.bitfield;
177
199
  }
200
+ /**
201
+ *
202
+ * @returns A record of all flags and their boolean values indicating whether they are set.
203
+ */
178
204
  serialize() {
179
205
  const serialized = {};
180
206
  for (const [flag, bit] of Object.entries(this.self.FLAGS)) {
@@ -405,14 +431,14 @@ var ChannelPermissions = class extends BitField {
405
431
  }
406
432
  };
407
433
  ChannelPermissions.FLAGS = {
408
- VIEW_CHANNEL: 1 << 0,
409
- SEND_MESSAGE: 1 << 1,
410
- MANAGE_MESSAGE: 1 << 2,
411
- MANAGE_CHANNEL: 1 << 3,
412
- VOICE_CALL: 1 << 4,
413
- INVITE_OTHERS: 1 << 5,
414
- EMBED_LINKS: 1 << 6,
415
- UPLOAD_FILES: 1 << 7
434
+ VIEW_CHANNEL: __pow(1, 0),
435
+ SEND_MESSAGE: __pow(1, 22),
436
+ MANAGE_MESSAGE: __pow(1, 2),
437
+ MANAGE_CHANNEL: __pow(1, 3),
438
+ VOICE_CALL: __pow(1, 4),
439
+ INVITE_OTHERS: __pow(1, 5),
440
+ EMBED_LINKS: __pow(1, 6),
441
+ UPLOAD_FILES: __pow(1, 7)
416
442
  };
417
443
  var UserPermissions = class extends BitField {
418
444
  constructor(bits) {
@@ -423,10 +449,10 @@ var UserPermissions = class extends BitField {
423
449
  }
424
450
  };
425
451
  UserPermissions.FLAGS = {
426
- ACCESS: 1 << 0,
427
- VIEW_PROFILE: 1 << 1,
428
- SEND_MESSAGES: 1 << 2,
429
- INVITE: 1 << 3
452
+ ACCESS: __pow(1, 0),
453
+ VIEW_PROFILE: __pow(1, 1),
454
+ SEND_MESSAGES: __pow(1, 2),
455
+ INVITE: __pow(1, 3)
430
456
  };
431
457
  var ServerPermissions = class extends BitField {
432
458
  constructor(bits) {
@@ -437,16 +463,96 @@ var ServerPermissions = class extends BitField {
437
463
  }
438
464
  };
439
465
  ServerPermissions.FLAGS = {
440
- VIEW_SERVER: 1 << 0,
441
- MANAGE_ROLES: 1 << 1,
442
- MANAGE_CHANNELS: 1 << 2,
443
- MANAGE_SERVER: 1 << 3,
444
- KICK_MEMBERS: 1 << 4,
445
- BAN_MEMBERS: 1 << 5,
446
- CHANGE_NICKNAME: 1 << 12,
447
- MANAGE_NICKNAMES: 1 << 13,
448
- CHANGE_AVATAR: 1 << 14,
449
- REMOVE_AVATARS: 1 << 15
466
+ VIEW_SERVER: __pow(1, 0),
467
+ MANAGE_ROLES: __pow(1, 1),
468
+ MANAGE_CHANNELS: __pow(1, 2),
469
+ MANAGE_SERVER: __pow(1, 3),
470
+ KICK_MEMBERS: __pow(1, 4),
471
+ BAN_MEMBERS: __pow(1, 5),
472
+ CHANGE_NICKNAME: __pow(1, 12),
473
+ MANAGE_NICKNAMES: __pow(1, 13),
474
+ CHANGE_AVATAR: __pow(1, 14),
475
+ REMOVE_AVATARS: __pow(1, 15)
476
+ };
477
+ var FullPermissions = class extends BitField {
478
+ constructor(bits) {
479
+ super(bits);
480
+ }
481
+ static resolve(bit) {
482
+ return super.resolve(bit);
483
+ }
484
+ };
485
+ FullPermissions.FLAGS = {
486
+ // * Generic permissions
487
+ /// Manage the channel or channels on the server
488
+ ManageChannel: __pow(2, 0),
489
+ /// Manage the server
490
+ ManageServer: __pow(2, 1),
491
+ /// Manage permissions on servers or channels
492
+ ManagePermissions: __pow(2, 2),
493
+ /// Manage roles on server
494
+ ManageRole: __pow(2, 3),
495
+ /// Manage server customisation (includes emoji)
496
+ ManageCustomisation: __pow(2, 4),
497
+ // * Member permissions
498
+ /// Kick other members below their ranking
499
+ KickMembers: __pow(2, 6),
500
+ /// Ban other members below their ranking
501
+ BanMembers: __pow(2, 7),
502
+ /// Timeout other members below their ranking
503
+ TimeoutMembers: __pow(2, 8),
504
+ /// Assign roles to members below their ranking
505
+ AssignRoles: __pow(2, 9),
506
+ /// Change own nickname
507
+ ChangeNickname: __pow(2, 10),
508
+ /// Change or remove other's nicknames below their ranking
509
+ ManageNicknames: __pow(2, 11),
510
+ /// Change own avatar
511
+ ChangeAvatar: __pow(2, 12),
512
+ /// Remove other's avatars below their ranking
513
+ RemoveAvatars: __pow(2, 13),
514
+ // * Channel permissions
515
+ /// View a channel
516
+ ViewChannel: __pow(2, 20),
517
+ /// Read a channel's past message history
518
+ ReadMessageHistory: __pow(2, 21),
519
+ /// Send a message in a channel
520
+ SendMessage: __pow(2, 22),
521
+ /// Delete messages in a channel
522
+ ManageMessages: __pow(2, 23),
523
+ /// Manage webhook entries on a channel
524
+ ManageWebhooks: __pow(2, 24),
525
+ /// Create invites to this channel
526
+ InviteOthers: __pow(2, 25),
527
+ /// Send embedded content in this channel
528
+ SendEmbeds: __pow(2, 26),
529
+ /// Send attachments and media in this channel
530
+ UploadFiles: __pow(2, 27),
531
+ /// Masquerade messages using custom nickname and avatar
532
+ Masquerade: __pow(2, 28),
533
+ /// React to messages with emoji
534
+ React: __pow(2, 29),
535
+ // * Voice permissions
536
+ /// Connect to a voice channel
537
+ Connect: __pow(2, 30),
538
+ /// Speak in a voice call
539
+ Speak: __pow(2, 31),
540
+ /// Share video in a voice call
541
+ Video: __pow(2, 32),
542
+ /// Mute other members with lower ranking in a voice call
543
+ MuteMembers: __pow(2, 33),
544
+ /// Deafen other members with lower ranking in a voice call
545
+ DeafenMembers: __pow(2, 34),
546
+ /// Move members between voice channels
547
+ MoveMembers: __pow(2, 35),
548
+ // * Mention permissions
549
+ /// Mention @everyone or @online
550
+ MentionEveryone: __pow(2, 37),
551
+ /// Mention a role
552
+ MentionRoles: __pow(2, 38),
553
+ // * Grant all permissions
554
+ /// Safely grant all permissions
555
+ GrantAll: 4503599627370495
450
556
  };
451
557
  var DEFAULT_PERMISSION_DM = new ChannelPermissions([
452
558
  "VIEW_CHANNEL",
@@ -993,9 +1099,7 @@ var Server2 = class extends Base {
993
1099
  }
994
1100
  }
995
1101
  if (typeof data.default_permissions === "number") {
996
- this.permissions = new ServerPermissions(
997
- data.default_permissions
998
- ).freeze();
1102
+ this.permissions = new FullPermissions(data.default_permissions).freeze();
999
1103
  }
1000
1104
  if (typeof data.analytics === "boolean") this.analytics = data.analytics;
1001
1105
  if (typeof data.discoverable === "boolean") {
@@ -1098,8 +1202,8 @@ var Role = class extends Base {
1098
1202
  if (data.permissions) {
1099
1203
  const { a, d } = data.permissions;
1100
1204
  this.overwrite = {
1101
- allow: new ChannelPermissions(a),
1102
- deny: new ChannelPermissions(d)
1205
+ allow: new FullPermissions(a),
1206
+ deny: new FullPermissions(d)
1103
1207
  };
1104
1208
  }
1105
1209
  for (const field of clear) {
@@ -1145,6 +1249,9 @@ var Role = class extends Base {
1145
1249
  delete() {
1146
1250
  return this.server.roles.delete(this);
1147
1251
  }
1252
+ edit(data) {
1253
+ return this.server.roles.edit(this, data);
1254
+ }
1148
1255
  /**
1149
1256
  * Converts the role to a string representation.
1150
1257
  *
@@ -1901,8 +2008,8 @@ var ServerChannel = class extends Channel {
1901
2008
  this.overwrites.clear();
1902
2009
  for (const [id, { a, d }] of Object.entries(data.role_permissions)) {
1903
2010
  this.overwrites.set(id, {
1904
- allow: new ChannelPermissions(a),
1905
- deny: new ChannelPermissions(d)
2011
+ allow: new FullPermissions(a),
2012
+ deny: new FullPermissions(d)
1906
2013
  });
1907
2014
  }
1908
2015
  }
@@ -2820,6 +2927,42 @@ var RoleManager = class extends BaseManager {
2820
2927
  yield this.client.api.delete(`/servers/${this.server.id}/roles/${id}`);
2821
2928
  });
2822
2929
  }
2930
+ /**
2931
+ *
2932
+ * @param role the role to edit
2933
+ * @param data data to edit the role with
2934
+ * @param data.permissions The permissions to set for the role, in the format { a: allow, d: deny }
2935
+ * @param data.name The name of the role
2936
+ * @param data.colour The color of the role, or `null` if no color is set
2937
+ * @param data.hoist Whether the role is displayed separately in the member list
2938
+ * @param data.rank The rank of the role, used for ordering
2939
+ * @param data.remove Fields to remove from the role
2940
+ * @returns Role
2941
+ * @throws {TypeError} If the role ID is invalid
2942
+ */
2943
+ edit(role, data) {
2944
+ return __async(this, null, function* () {
2945
+ var _a, _b;
2946
+ const id = this.resolveId(role);
2947
+ if (!id) throw new TypeError("INVALID_TYPE");
2948
+ if (data.permissions) {
2949
+ const permissions = {
2950
+ allow: new FullPermissions(((_a = data.permissions) == null ? void 0 : _a.a) || []).bitfield,
2951
+ deny: new FullPermissions(((_b = data.permissions) == null ? void 0 : _b.d) || []).bitfield
2952
+ };
2953
+ yield this.client.api.put(
2954
+ `/servers/${this.server.id}/permissions/${id}`,
2955
+ { body: { permissions } }
2956
+ );
2957
+ }
2958
+ delete data.permissions;
2959
+ const updatedRole = yield this.client.api.patch(
2960
+ `/servers/${this.server.id}/roles/${id}`,
2961
+ { body: data }
2962
+ );
2963
+ return this._add(Object.assign(updatedRole, { id }));
2964
+ });
2965
+ }
2823
2966
  };
2824
2967
 
2825
2968
  // src/managers/serverChannelManager.ts
@@ -3018,7 +3161,7 @@ import { EventEmitter } from "node:events";
3018
3161
  import axios3 from "axios";
3019
3162
 
3020
3163
  // package.json
3021
- var version = "0.0.7";
3164
+ var version = "0.0.8";
3022
3165
 
3023
3166
  // src/rest/restClient.ts
3024
3167
  var RestClient = class {
@@ -4171,6 +4314,7 @@ export {
4171
4314
  DMChannel3 as DMChannel,
4172
4315
  Emoji2 as Emoji,
4173
4316
  Events,
4317
+ FullPermissions,
4174
4318
  GroupChannel2 as GroupChannel,
4175
4319
  Invite,
4176
4320
  Mentions,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "revbot.js",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
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",