aurival 0.2.1 → 0.3.0
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 +113 -64
- package/dist/bot.d.ts +26 -8
- package/dist/bot.d.ts.map +1 -1
- package/dist/bot.js +2 -21
- package/dist/bot.js.map +1 -1
- package/dist/events.d.ts +168 -65
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +270 -156
- package/dist/events.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/events.d.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Plain data a
|
|
2
|
+
* Plain data a handler receives (CONTRACT-V1 §3, §3.1).
|
|
3
3
|
*
|
|
4
|
-
* `Event` is the raw wire frame;
|
|
5
|
-
* built from one.
|
|
6
|
-
*
|
|
4
|
+
* `Event` is the raw wire frame; a context is what `bot.ts` hands to a
|
|
5
|
+
* handler, built from one. There is one context class per event family
|
|
6
|
+
* (BA-R68): `Context` for commands, `MemberContext`, `BotContext`,
|
|
7
|
+
* `ReactionContext`, and `EventContext` for a type this SDK does not name.
|
|
8
|
+
* Each carries only the fields its family delivers, so an editor can tell a
|
|
9
|
+
* developer what `ctx` holds without them opening the docs. Every context
|
|
10
|
+
* holds an `HttpClient` for its actions and nothing else network-shaped —
|
|
11
|
+
* never the seed, a token, or the `Auth` object (SDK-33).
|
|
7
12
|
*/
|
|
8
13
|
import type { HttpClient } from './http.js';
|
|
9
14
|
export interface User {
|
|
@@ -29,6 +34,14 @@ export interface Command {
|
|
|
29
34
|
name: string;
|
|
30
35
|
description: string;
|
|
31
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* A message. Events carry one under `invoking_message` (with `sent_at` and a
|
|
39
|
+
* full `sender`); the REST side returns the stored entity (with `created_at`
|
|
40
|
+
* and `sender` as a bare `usr_…` id) — `reply()`, `send()` and `edit()` all
|
|
41
|
+
* decode that into this same shape, so `sent.id` is what you hand back to
|
|
42
|
+
* `edit()`, `delete()` and `react()`. A `sender` known only by id has empty
|
|
43
|
+
* `handle` and `name`.
|
|
44
|
+
*/
|
|
32
45
|
export interface Message {
|
|
33
46
|
id: string;
|
|
34
47
|
text: string;
|
|
@@ -94,88 +107,178 @@ export interface MemberPage {
|
|
|
94
107
|
hasMore: boolean;
|
|
95
108
|
nextCursor: string | null;
|
|
96
109
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
110
|
+
/** `member.joined` / `member.left` — group chats only, human members only. */
|
|
111
|
+
export type MemberEventType = 'member.joined' | 'member.left';
|
|
112
|
+
/** `bot.added` / `bot.removed` — this bot, in that chat, with who did it. */
|
|
113
|
+
export type BotEventType = 'bot.added' | 'bot.removed';
|
|
114
|
+
/** `reaction.added` — on one of this bot's own messages. There is no `reaction.removed`. */
|
|
115
|
+
export type ReactionEventType = 'reaction.added';
|
|
116
|
+
/** Every event type `bot.on()` names. `command.invoked` goes through `bot.command()`. */
|
|
117
|
+
export type EventType = MemberEventType | BotEventType | ReactionEventType;
|
|
118
|
+
interface BaseInit {
|
|
100
119
|
chat: Chat;
|
|
101
|
-
sender: User | null;
|
|
102
|
-
/** Populated only for `member.joined` / `member.left`. */
|
|
103
|
-
user: User | null;
|
|
104
|
-
/** Populated only for `bot.added` / `bot.removed`. */
|
|
105
|
-
actor: User | null;
|
|
106
|
-
/** Populated only for `reaction.added`. */
|
|
107
|
-
emoji: string | null;
|
|
108
120
|
event: Event;
|
|
109
|
-
message: Message | null;
|
|
110
121
|
http: HttpClient;
|
|
111
122
|
}
|
|
112
123
|
/**
|
|
113
|
-
* What
|
|
114
|
-
*
|
|
115
|
-
* (
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
* - `command.invoked`: `chat`, `sender`, `message`
|
|
119
|
-
* - `member.joined` / `member.left`: `chat`, `user`
|
|
120
|
-
* - `bot.added` / `bot.removed`: `chat`, `actor`
|
|
121
|
-
* - `reaction.added`: `chat`, `sender`, `message`, `emoji`
|
|
122
|
-
*
|
|
123
|
-
* — everything else on a given `Context` is `null`. An unhandled or future
|
|
124
|
-
* event type never throws building one: every field is read defensively off
|
|
125
|
-
* `event.data` and falls back to `null`.
|
|
124
|
+
* What every context shares: the chat the event happened in, the raw event,
|
|
125
|
+
* and the actions. Subclasses add the fields their family delivers. The
|
|
126
|
+
* actions live here so `ctx.reply()` reads the same in every handler; a
|
|
127
|
+
* subclass that knows which message to quote says so through `quotes()`.
|
|
126
128
|
*/
|
|
127
|
-
export declare class
|
|
129
|
+
export declare class BaseContext {
|
|
128
130
|
#private;
|
|
129
|
-
readonly command: string;
|
|
130
|
-
readonly arguments: string;
|
|
131
131
|
readonly chat: Chat;
|
|
132
|
-
readonly sender: User | null;
|
|
133
|
-
readonly user: User | null;
|
|
134
|
-
readonly actor: User | null;
|
|
135
|
-
readonly emoji: string | null;
|
|
136
132
|
readonly event: Event;
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
static fromEvent(event: Event, http: HttpClient): Context;
|
|
133
|
+
constructor(init: BaseInit);
|
|
134
|
+
/** The message id `reply()` quotes, or `null` to send the reply free-standing. */
|
|
135
|
+
protected quotes(): string | null;
|
|
141
136
|
/**
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
* `
|
|
137
|
+
* Send a message to this chat, quoting the message this event is about
|
|
138
|
+
* when there is one (BA-R27). Returns the stored message, so `sent.id` is
|
|
139
|
+
* ready for `edit()`, `delete()` and `react()`.
|
|
145
140
|
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
* field is
|
|
149
|
-
* (a `member.joined` frame with a stray `sender` must not populate
|
|
150
|
-
* `ctx.sender` — matches python). For a type this SDK does not recognize,
|
|
151
|
-
* every field is read defensively and opportunistically — there is no
|
|
152
|
-
* contract to pin it to, so whatever the frame happens to carry is
|
|
153
|
-
* surfaced rather than discarded. `chat` itself falls back to an empty one
|
|
154
|
-
* rather than throwing, for both cases.
|
|
141
|
+
* A fresh `Idempotency-Key` per call, reused across that call's retries by
|
|
142
|
+
* `HttpClient.request` itself. When the event carried no message id the
|
|
143
|
+
* `reply_to` field is omitted and the reply floats free.
|
|
155
144
|
*/
|
|
156
|
-
|
|
145
|
+
reply(text: string): Promise<Message>;
|
|
157
146
|
/**
|
|
158
|
-
*
|
|
159
|
-
*
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
|
|
163
|
-
|
|
147
|
+
* Send a message to any chat this bot is in — this one or another.
|
|
148
|
+
* `mentions` names who `@handle` tokens in `text` point at: pass
|
|
149
|
+
* `mention(user)`, a `User`, or `{ user: 'usr_…' }`. Returns the stored
|
|
150
|
+
* message.
|
|
151
|
+
*/
|
|
152
|
+
send(chat: Chat | string, text: string, options?: {
|
|
153
|
+
mentions?: MentionLike[];
|
|
154
|
+
}): Promise<Message>;
|
|
155
|
+
/**
|
|
156
|
+
* Show or clear "is thinking…" in this chat. `POST /v1/chats/{chat}/typing`
|
|
157
|
+
* with `{"is_typing": bool}`. Command handlers get this automatically
|
|
158
|
+
* (auto-typing); reach for `withTyping()` when you want it yourself.
|
|
164
159
|
*/
|
|
165
|
-
reply(text: string): Promise<Record<string, unknown>>;
|
|
166
|
-
/** `POST /v1/chats/{chat}/typing` — `is_typing` only, no `state` spelling. */
|
|
167
160
|
typing(isTyping: boolean): Promise<void>;
|
|
168
|
-
/**
|
|
161
|
+
/** Runs `fn` with the indicator on: `true` on entry, `false` on exit — ALWAYS, including on throw. */
|
|
169
162
|
withTyping<T>(fn: () => Promise<T>): Promise<T>;
|
|
170
|
-
|
|
163
|
+
/**
|
|
164
|
+
* Change the text of one of this bot's own messages. Pass what `reply()`
|
|
165
|
+
* or `send()` returned, or its id. Someone else's message is
|
|
166
|
+
* `MessageNotYours`. Returns the updated message.
|
|
167
|
+
*/
|
|
168
|
+
edit(message: Message | string, text: string): Promise<Message>;
|
|
169
|
+
/** Delete one of this bot's own messages. Someone else's is `MessageNotYours`. */
|
|
171
170
|
delete(message: Message | string): Promise<void>;
|
|
171
|
+
/**
|
|
172
|
+
* Put a reaction on a message, one emoji at a time. Reacting twice with the
|
|
173
|
+
* same emoji is a no-op; a string longer than one emoji is
|
|
174
|
+
* `ReactionEmojiTooLong`.
|
|
175
|
+
*/
|
|
172
176
|
react(message: Message | string, emoji: string): Promise<void>;
|
|
177
|
+
/** Take a reaction off. Removing one that is not there is a no-op. */
|
|
173
178
|
unreact(message: Message | string, emoji: string): Promise<void>;
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
179
|
+
/**
|
|
180
|
+
* One page of who is in a chat, bots included — this chat by default.
|
|
181
|
+
* Check `hasMore` and pass `nextCursor` back as `cursor` for the next page;
|
|
182
|
+
* `ctx.chat.member_count` is the total without a call.
|
|
183
|
+
*/
|
|
177
184
|
members(chat?: Chat | string, options?: {
|
|
178
185
|
cursor?: string;
|
|
179
186
|
}): Promise<MemberPage>;
|
|
180
187
|
}
|
|
188
|
+
export interface ContextInit extends BaseInit {
|
|
189
|
+
command: string;
|
|
190
|
+
arguments: string;
|
|
191
|
+
sender: User;
|
|
192
|
+
message: Message;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* What a `bot.command()` handler receives. Built by `bot.ts`'s dispatch
|
|
196
|
+
* closure from one `command.invoked` event — `Socket` never constructs one.
|
|
197
|
+
* `sender` and `message` are always set: the server never emits a command
|
|
198
|
+
* without both.
|
|
199
|
+
*/
|
|
200
|
+
export declare class Context extends BaseContext {
|
|
201
|
+
/** The command name as the server matched it, without the slash. */
|
|
202
|
+
readonly command: string;
|
|
203
|
+
/** Everything after the command name, untrimmed of its inner spaces. `''` when there was nothing. */
|
|
204
|
+
readonly arguments: string;
|
|
205
|
+
/** Who typed the command. */
|
|
206
|
+
readonly sender: User;
|
|
207
|
+
/** The message that carried the command. `reply()` quotes it. */
|
|
208
|
+
readonly message: Message;
|
|
209
|
+
constructor(init: ContextInit);
|
|
210
|
+
protected quotes(): string | null;
|
|
211
|
+
/** Build straight from a `command.invoked` event's raw `data`. */
|
|
212
|
+
static fromEvent(event: Event, http: HttpClient): Context;
|
|
213
|
+
}
|
|
214
|
+
export interface MemberContextInit extends BaseInit {
|
|
215
|
+
user: User;
|
|
216
|
+
}
|
|
217
|
+
/** `member.joined` / `member.left`: someone came into, or left, a group chat this bot is in. */
|
|
218
|
+
export declare class MemberContext extends BaseContext {
|
|
219
|
+
/** Who joined or left. Never the bot itself — that is `bot.added` / `bot.removed`. */
|
|
220
|
+
readonly user: User;
|
|
221
|
+
constructor(init: MemberContextInit);
|
|
222
|
+
static fromEvent(event: Event, http: HttpClient): MemberContext;
|
|
223
|
+
}
|
|
224
|
+
export interface BotContextInit extends BaseInit {
|
|
225
|
+
actor: User;
|
|
226
|
+
}
|
|
227
|
+
/** `bot.added` / `bot.removed`: this bot was put into, or taken out of, a chat. */
|
|
228
|
+
export declare class BotContext extends BaseContext {
|
|
229
|
+
/** The person who added or removed the bot. */
|
|
230
|
+
readonly actor: User;
|
|
231
|
+
constructor(init: BotContextInit);
|
|
232
|
+
static fromEvent(event: Event, http: HttpClient): BotContext;
|
|
233
|
+
}
|
|
234
|
+
export interface ReactionContextInit extends BaseInit {
|
|
235
|
+
sender: User;
|
|
236
|
+
message: Message;
|
|
237
|
+
emoji: string;
|
|
238
|
+
}
|
|
239
|
+
/** `reaction.added`: someone reacted to one of this bot's own messages. */
|
|
240
|
+
export declare class ReactionContext extends BaseContext {
|
|
241
|
+
/** Who reacted. */
|
|
242
|
+
readonly sender: User;
|
|
243
|
+
/** The bot's message they reacted to — id only; the text is not re-sent. `reply()` quotes it. */
|
|
244
|
+
readonly message: Message;
|
|
245
|
+
/** The emoji, as one string. */
|
|
246
|
+
readonly emoji: string;
|
|
247
|
+
constructor(init: ReactionContextInit);
|
|
248
|
+
protected quotes(): string | null;
|
|
249
|
+
static fromEvent(event: Event, http: HttpClient): ReactionContext;
|
|
250
|
+
}
|
|
251
|
+
export interface EventContextInit extends BaseInit {
|
|
252
|
+
sender: User | null;
|
|
253
|
+
user: User | null;
|
|
254
|
+
actor: User | null;
|
|
255
|
+
message: Message | null;
|
|
256
|
+
emoji: string | null;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* An event type this SDK does not name yet. Nothing is pinned, so every
|
|
260
|
+
* field is read off the frame if it is there and `null` if it is not —
|
|
261
|
+
* whatever the wire carries is surfaced rather than discarded, and building
|
|
262
|
+
* one never throws.
|
|
263
|
+
*/
|
|
264
|
+
export declare class EventContext extends BaseContext {
|
|
265
|
+
readonly sender: User | null;
|
|
266
|
+
readonly user: User | null;
|
|
267
|
+
readonly actor: User | null;
|
|
268
|
+
readonly message: Message | null;
|
|
269
|
+
readonly emoji: string | null;
|
|
270
|
+
constructor(init: EventContextInit);
|
|
271
|
+
protected quotes(): string | null;
|
|
272
|
+
static fromEvent(event: Event, http: HttpClient): EventContext;
|
|
273
|
+
}
|
|
274
|
+
/** Any context a handler can receive. What `bot.onError()` sees beside the error. */
|
|
275
|
+
export type AnyContext = Context | MemberContext | BotContext | ReactionContext | EventContext;
|
|
276
|
+
/**
|
|
277
|
+
* The context class for an event, by its type. `command.invoked` gets
|
|
278
|
+
* `Context`; the three named families get theirs; anything else gets
|
|
279
|
+
* `EventContext`. The dispatch side of BA-R68 — `bot.ts` calls this and
|
|
280
|
+
* hands the result to every handler registered for the type.
|
|
281
|
+
*/
|
|
282
|
+
export declare function contextFor(event: Event, http: HttpClient): AnyContext;
|
|
283
|
+
export {};
|
|
181
284
|
//# sourceMappingURL=events.d.ts.map
|
package/dist/events.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|