/
EventSubChannelBanEvent.ts
130 lines (112 loc) · 3.25 KB
/
EventSubChannelBanEvent.ts
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
import { Enumerable, mapNullable } from '@d-fischer/shared-utils';
import type { ApiClient, HelixUser } from '@twurple/api';
import { checkRelationAssertion, DataObject, rawDataSymbol, rtfm } from '@twurple/common';
import { type EventSubChannelBanEventData } from './EventSubChannelBanEvent.external';
/**
* An EventSub event representing a user being banned in a channel.
*/
@rtfm<EventSubChannelBanEvent>('eventsub-base', 'EventSubChannelBanEvent', 'userId')
export class EventSubChannelBanEvent extends DataObject<EventSubChannelBanEventData> {
/** @internal */ @Enumerable(false) private readonly _client: ApiClient;
/** @internal */
constructor(data: EventSubChannelBanEventData, client: ApiClient) {
super(data);
this._client = client;
}
/**
* The ID of the banned user.
*/
get userId(): string {
return this[rawDataSymbol].user_id;
}
/**
* The name of the banned user.
*/
get userName(): string {
return this[rawDataSymbol].user_login;
}
/**
* The display name of the banned user.
*/
get userDisplayName(): string {
return this[rawDataSymbol].user_name;
}
/**
* Gets more information about the banned user.
*/
async getUser(): Promise<HelixUser> {
return checkRelationAssertion(await this._client.users.getUserById(this[rawDataSymbol].user_id));
}
/**
* The ID of the broadcaster from whose chat the user was banned.
*/
get broadcasterId(): string {
return this[rawDataSymbol].broadcaster_user_id;
}
/**
* The name of the broadcaster from whose chat the user was banned.
*/
get broadcasterName(): string {
return this[rawDataSymbol].broadcaster_user_login;
}
/**
* The display name of the broadcaster from whose chat the user was banned.
*/
get broadcasterDisplayName(): string {
return this[rawDataSymbol].broadcaster_user_name;
}
/**
* Gets more information about the broadcaster.
*/
async getBroadcaster(): Promise<HelixUser> {
return checkRelationAssertion(await this._client.users.getUserById(this[rawDataSymbol].broadcaster_user_id));
}
/**
* The ID of the moderator who issued the ban/timeout.
*/
get moderatorId(): string {
return this[rawDataSymbol].moderator_user_id;
}
/**
* The name of the moderator who issued the ban/timeout.
*/
get moderatorName(): string {
return this[rawDataSymbol].moderator_user_login;
}
/**
* The display name of the moderator who issued the ban/timeout.
*/
get moderatorDisplayName(): string {
return this[rawDataSymbol].moderator_user_name;
}
/**
* Gets more information about the moderator.
*/
async getModerator(): Promise<HelixUser> {
return checkRelationAssertion(await this._client.users.getUserById(this[rawDataSymbol].moderator_user_id));
}
/**
* The reason behind the ban.
*/
get reason(): string {
return this[rawDataSymbol].reason;
}
/**
* The date and time when the user was banned or put in a timeout.
*/
get startDate(): Date {
return new Date(this[rawDataSymbol].banned_at);
}
/**
* If it is a timeout, the date and time when the timeout will end. Will be null if permanent ban.
*/
get endDate(): Date | null {
return mapNullable(this[rawDataSymbol].ends_at, v => new Date(v));
}
/**
* Whether the ban is permanent.
*/
get isPermanent(): boolean {
return this[rawDataSymbol].is_permanent;
}
}