-
Notifications
You must be signed in to change notification settings - Fork 4
/
client.d.ts
155 lines (135 loc) · 4.35 KB
/
client.d.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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
import * as events from 'events';
import Message from './classes/message';
import Room from './classes/room';
import User from './classes/user';
type UserDetails = { userid: string, [key: string]: any };
type ClientOpts = {
username: string,
password?: string,
avatar?: string,
status?: string,
rooms: string[],
debug?: boolean,
noFailMessages?: boolean,
throttle?: number,
retryLogin?: number,
autoReconnect?: boolean,
autoReconnectDelay?: number,
connectionTimeout?: number,
server?: string,
serverid?: string,
port?: number,
serverProtocol?: string,
loginServer?: string
};
export interface Client {
on(event: 'connect', listener: () => void): this;
on(event: 'message', listener: (message: Message) => void): this;
on(event: 'join', listener: (room: string, user: string, isIntro: boolean) => void): this;
on(event: 'leave', listener: (room: string, user: string, isIntro: boolean) => void): this;
on(event: 'name', listener: (room: string, newName: string, oldName: string, isIntro: boolean) => void): this;
on(event: 'joinRoom', listener: (room: string) => void): this;
on(event: 'leaveRoom', listener: (room: string) => void): this;
on(event: 'chatError', listener: (room: string, error: string, isIntro: boolean) => void): this;
on(event: string, listener: (room: string, line: string, isIntro: boolean) => void): this;
}
export class Client extends events.EventEmitter {
opts: {
username: string,
password?: string,
avatar?: string,
status?: string,
rooms: string[],
debug?: boolean,
noFailMessages: boolean,
throttle?: number,
retryLogin: number,
autoReconnect: boolean,
autoReconnectDelay: number,
connectionTimeout: number,
server: string,
serverid: string,
port: number,
loginServer: string
};
status: {
connected: boolean,
loggedIn: boolean,
username?: string,
userid?: string
};
isTrusted?: boolean;
closed: boolean;
rooms: Map<string, Room>;
users: Map<string, User>;
constructor (opts: ClientOpts);
/**
* Connects to the server
* @param retry Indicates whether this is a reconnect attempt
*/
connect (retry?: boolean);
/**
* Disconnects from the server
*/
disconnect ();
/**
* Logs in
* @param username The username to use to log in
* @param password The password for the username. LEave blank if unregistered
* @returns A promise that resolves when the login message is sent
*/
login (username: string, password?: string): Promise<string>;
/**
* Sends a text message to the server. Unthrottled; use sendQueue for chat messages
* @param text The text to send
*/
send (text: string);
/**
* Schedules a message to be sent, while being throttled
* @param text The message to send
* @param sent The resolve method for a promise
* @param fail The reject method for a promise
* @returns A promise that resolves when the message is sent successfully
*/
sendQueue (text: string, sent: (msg: Message) => any, fail: (msg: Message) => any);
/**
* Sends a string to a user (if the user is not already tracked, they are added)
* @param user The user to send to
* @param text The message to send
* @returns A promise that resolves when the message is sent successfully
*/
sendUser (user: User | string, text: string): Promise<Message>;
/**
* Adds a user to the list of tracked users on the Bot. Starts fetching userdetails in the background
* @param details The details of the user to add
* @returns The added User
*/
addUser (details: UserDetails): User;
/**
* Gets the specified user (or their current user, if they were seen on an alt)
* @param user The user to find
* @param deepSearch Whether to also look for direct alts
* @returns The user if found, otherwise false
*/
getUser (user: string, deepSearch?: boolean): User | false;
/**
* Queues a request to fetch userdetails
* @param user The user being queried
* @returns A promise that resolves with the queried userdetails
*/
getUserDetails (userid: string): Promise<UserDetails>;
/**
* Gets a (cached) room from its name (aliases not supported)
* @param room The name of the room being fetched
* @returns The room being fetched
*/
getRoom (room: string): Room;
/**
* Joins a room
* @param room The room to join
* @returns A promise that resolves when the room is joined
*/
joinRoom (room: string): Promise<void>;
}
export { Message, Room, User };
export * as Tools from './tools';