blob: fd3440e6fc6d17d6352f9a6cd4509c9acab0ef5b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
/*
Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
Copyright (C) 2026 Spacebar and Spacebar Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { Snowflake } from "../../Identifiers";
export interface RoleResponse {
id: Snowflake;
name: string;
description: string | null;
// @deprecated
color: number;
colors: RoleColors;
hoist: boolean;
icon?: string | null;
unicode_emoji?: string | null;
position: number;
// @format number
permissions: string;
managed: boolean;
mentionable: boolean;
flags?: number;
tags?: RoleTags; // unused currently
}
export type RoleListResponse = RoleResponse[];
export class RoleColors {
primary_color: number;
secondary_color: number | undefined; // only used for "holographic" and "gradient" styles
tertiary_color?: number | undefined; // only used for "holographic" style
toJSON(): RoleColors {
return {
...this,
secondary_color: this.secondary_color ?? undefined,
tertiary_color: this.tertiary_color ?? undefined,
};
}
}
export class RoleTags {
bot_id?: Snowflake;
integration_id?: Snowflake;
subscription_listing_id?: Snowflake;
// ??? https://github.com/discord-userdoccers/discord-userdoccers/issues/576 - in other words, types are currently unknown
premium_subscriber?: boolean | null;
available_for_purchase?: boolean | null;
guild_connections?: boolean | null;
toJSON(): RoleTags {
return {
...this,
// "forward compatibility"
premium_subscriber: this.premium_subscriber ? null : undefined,
available_for_purchase: this.available_for_purchase ? null : undefined,
guild_connections: this.subscription_listing_id ? null : undefined,
};
}
}
|