diff --git a/package.json b/package.json index 16a13c4f..0c83ceb2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "revolt.js", - "version": "4.3.3-alpha.14", + "version": "4.3.3-alpha.15", "main": "dist/index.js", "repository": "https://gitlab.insrt.uk/revolt/revolt.js", "author": "Paul Makles ", diff --git a/src/api/permissions.ts b/src/api/permissions.ts index 1e588b44..150e5ce6 100644 --- a/src/api/permissions.ts +++ b/src/api/permissions.ts @@ -28,8 +28,8 @@ export const ServerPermission = { BanMembers: 0b00000000000000000000000000100000, // 32 ChangeNickname: 0b00000000000000000001000000000000, // 4096 ManageNicknames: 0b00000000000000000010000000000000, // 8192 - ChangeAvatar: 0b00000000000000000100000000000000, // 16392 - RemoveAvatars: 0b00000000000000001000000000000000, // 32784 + ChangeAvatar: 0b00000000000000000100000000000000, // 16382 + RemoveAvatars: 0b00000000000000001000000000000000, // 32768 } const U32_MAX = 2**32 - 1; // 4294967295 diff --git a/src/api/routes.ts b/src/api/routes.ts index 4587201a..90a72795 100644 --- a/src/api/routes.ts +++ b/src/api/routes.ts @@ -4,6 +4,7 @@ export type RemoveUserField = 'ProfileContent' | 'ProfileBackground' | 'StatusTe export type RemoveChannelField = 'Icon' | 'Description'; export type RemoveServerField = 'Icon' | 'Banner' | 'Description'; export type RemoveMemberField = 'Nickname' | 'Avatar'; +export type RemoveRoleField = 'Colour'; type Id = 'id'; type Routes = @@ -585,6 +586,17 @@ type Routes = permissions: Servers.PermissionTuple } } + | { + // Edit a role. + method: 'PATCH', + route: `/servers/${Id}/roles/${Id}`, + data: { + name?: string, + colour?: string, + remove?: RemoveRoleField + }, + response: undefined + } | { // Delete role method: 'DELETE', diff --git a/src/maps/Servers.ts b/src/maps/Servers.ts index 902dbdb8..707d3aa2 100644 --- a/src/maps/Servers.ts +++ b/src/maps/Servers.ts @@ -161,6 +161,18 @@ export default class Servers extends Collection { return await this.client.req('POST', `/servers/${id}/roles` as '/servers/id/roles', { name }); } + /** + * Edit a role + * @param id ID of the target server + * @param role_id Role ID + * @param data Role editing route data + */ + async editRole(id: string, role_id: string, data: Route<'PATCH', '/servers/id/roles/id'>["data"]) { + let server = this.getThrow(id); + if (typeof server.roles?.[role_id] === 'undefined') return; + await this.client.req('PATCH', `/servers/${id}/roles/${role_id}` as '/servers/id/roles/id', data); + } + /** * Delete role * @param id Server ID