@adriangalilea/utils 2.31.0 → 2.32.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 +1 -1
- package/dist/bot/reactions.d.ts +52 -0
- package/dist/bot/reactions.d.ts.map +1 -1
- package/dist/bot/reactions.js +136 -27
- package/dist/bot/reactions.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ts-utils
|
|
2
2
|
|
|
3
|
-
TypeScript utilities - logger, currency, offensive programming, file operations, environment management, and more. The sibling of [swift-utils](https://github.com/adriangalilea/swift-utils), py-utils, and go-utils.
|
|
3
|
+
TypeScript utilities - logger, currency, offensive programming, file operations, environment management, and more. The sibling of [swift-utils](https://github.com/adriangalilea/swift-utils), [py-utils](https://github.com/adriangalilea/py-utils), and [go-utils](https://github.com/adriangalilea/go-utils). The logging doctrine the three share, and the harness that proves they emit the same record line, live in [utils](https://github.com/adriangalilea/utils).
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
package/dist/bot/reactions.d.ts
CHANGED
|
@@ -1,3 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Telegram message reactions: WHICH emoji are allowed, and WHO owns the bot's
|
|
3
|
+
* reaction on a given message.
|
|
4
|
+
*
|
|
5
|
+
* Two halves, one domain. `TELEGRAM_REACTIONS` / `isReaction` / `reactionsFor`
|
|
6
|
+
* answer what Telegram will accept; `reactionPolicy` further down arbitrates
|
|
7
|
+
* between independent features that want to react to the same message.
|
|
8
|
+
*
|
|
9
|
+
* # The accepted set
|
|
10
|
+
*
|
|
11
|
+
* ## Why this is a list and not an API call
|
|
12
|
+
*
|
|
13
|
+
* The Bot API does not enumerate them. `getChat().available_reactions` is
|
|
14
|
+
* populated ONLY when a chat restricts its own reactions; a chat that allows
|
|
15
|
+
* all of them returns `null`, which is the common case. So a caller that wants
|
|
16
|
+
* to know the set — to offer it to a language model, to validate input, to
|
|
17
|
+
* build a picker — has no method to ask.
|
|
18
|
+
*
|
|
19
|
+
* ## Where these came from
|
|
20
|
+
*
|
|
21
|
+
* Measured, not copied from documentation: `scripts/probe-reactions.ts` sets
|
|
22
|
+
* each candidate on a real message and records Telegram's verdict. Re-run it to
|
|
23
|
+
* refresh this list.
|
|
24
|
+
*
|
|
25
|
+
* BOT_TOKEN=… bun scripts/probe-reactions.ts <chat_id> <message_id>
|
|
26
|
+
*
|
|
27
|
+
* Gathered **2026-08-07**: 86 candidates probed, 73 accepted, 13 refused with
|
|
28
|
+
* `Bad Request: REACTION_INVALID`.
|
|
29
|
+
*
|
|
30
|
+
* The refusals are worth knowing, because they are the ones people (and models)
|
|
31
|
+
* reach for by instinct:
|
|
32
|
+
*
|
|
33
|
+
* 👋 😊 🙂 😄 ✅ 🤖 💪 🙌 😅 🥳 😂 ❓ ‼
|
|
34
|
+
*
|
|
35
|
+
* **There is no wave.** A greeting has to be answered with something from the
|
|
36
|
+
* accepted set — 🤝 🫡 🤗 😁 — or with words.
|
|
37
|
+
*/
|
|
38
|
+
export declare const TELEGRAM_REACTIONS: readonly ["👍", "👎", "❤", "🔥", "🥰", "👏", "😁", "🤔", "🤯", "😱", "🤬", "😢", "🎉", "🤩", "🤮", "💩", "🙏", "👌", "🕊", "🤡", "🥱", "🥴", "😍", "🐳", "❤🔥", "🌚", "🌭", "💯", "🤣", "⚡", "🍌", "🏆", "💔", "🤨", "😐", "🍓", "🍾", "💋", "🖕", "😈", "😴", "😭", "🤓", "👻", "👨💻", "👀", "🎃", "🙈", "😇", "😨", "🤝", "✍", "🤗", "🫡", "🎅", "🎄", "☃", "💅", "🤪", "🗿", "🆒", "💘", "🙉", "🦄", "😘", "💊", "🙊", "😎", "👾", "🤷♂", "🤷", "🤷♀", "😡"];
|
|
39
|
+
export type TelegramReaction = (typeof TELEGRAM_REACTIONS)[number];
|
|
40
|
+
/** Probed and refused on the date above — kept so callers can explain a rejection. */
|
|
41
|
+
export declare const REFUSED_REACTIONS: readonly ["👋", "😊", "🙂", "😄", "✅", "🤖", "💪", "🙌", "😅", "🥳", "😂", "❓", "‼"];
|
|
42
|
+
/** Whether Telegram will accept this emoji as a reaction. */
|
|
43
|
+
export declare const isReaction: (emoji: string) => emoji is TelegramReaction;
|
|
44
|
+
/**
|
|
45
|
+
* The set a chat will actually accept: what `getChat` reports when the room
|
|
46
|
+
* restricts its reactions, otherwise the full measured set. Pass
|
|
47
|
+
* `chat.available_reactions` straight through.
|
|
48
|
+
*/
|
|
49
|
+
export declare const reactionsFor: (available?: {
|
|
50
|
+
type: string;
|
|
51
|
+
emoji?: string;
|
|
52
|
+
}[] | null) => readonly string[];
|
|
1
53
|
/**
|
|
2
54
|
* Message-reaction arbitration: ONE owner for the bot's reaction on each
|
|
3
55
|
* message. Telegram's setMessageReaction REPLACES the bot's whole reaction
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactions.d.ts","sourceRoot":"","sources":["../../src/bot/reactions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,MAAM,WAAW,iBAAiB;IACjC,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;;iFAGiF;AACjF,MAAM,WAAW,WAAW;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM;IAC/C,kEAAkE;IAClE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAClB;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/B;AAMD,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACzE,MAAM,EAAE,CAAC;IAKR,yEAAyE;iBAC5D,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;EA0BxD"}
|
|
1
|
+
{"version":3,"file":"reactions.d.ts","sourceRoot":"","sources":["../../src/bot/reactions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,kBAAkB,scA0ErB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,sFAAsF;AACtF,eAAO,MAAM,iBAAiB,sFAcpB,CAAC;AAIX,6DAA6D;AAC7D,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,KAAK,IAAI,gBAChC,CAAC;AAErB;;;;GAIG;AACH,eAAO,MAAM,YAAY,GACxB,YAAY;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,IAAI,KACnD,SAAS,MAAM,EAKI,CAAC;AAKvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,MAAM,WAAW,iBAAiB;IACjC,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;;iFAGiF;AACjF,MAAM,WAAW,WAAW;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM;IAC/C,kEAAkE;IAClE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAClB;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/B;AAMD,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACzE,MAAM,EAAE,CAAC;IAKR,yEAAyE;iBAC5D,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;EA0BxD"}
|
package/dist/bot/reactions.js
CHANGED
|
@@ -1,35 +1,144 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* set, so independent features reacting to the same message (an "on it" ack,
|
|
5
|
-
* an outcome, a side-feature's shrug) silently clobber each other — last
|
|
6
|
-
* writer wins, and the client shows flickering swaps.
|
|
2
|
+
* Telegram message reactions: WHICH emoji are allowed, and WHO owns the bot's
|
|
3
|
+
* reaction on a given message.
|
|
7
4
|
*
|
|
8
|
-
*
|
|
5
|
+
* Two halves, one domain. `TELEGRAM_REACTIONS` / `isReaction` / `reactionsFor`
|
|
6
|
+
* answer what Telegram will accept; `reactionPolicy` further down arbitrates
|
|
7
|
+
* between independent features that want to react to the same message.
|
|
9
8
|
*
|
|
10
|
-
*
|
|
11
|
-
* working: { emoji: "🫡", rank: 1 },
|
|
12
|
-
* offTopic: { emoji: "🤷", rank: 2 },
|
|
13
|
-
* failed: { emoji: "👎", rank: 3 },
|
|
14
|
-
* done: { emoji: "🫡", rank: 4 }, // same emoji as working: no API call, but locks out offTopic
|
|
15
|
-
* });
|
|
16
|
-
* const r = status.for(ctx);
|
|
17
|
-
* await r.set("working"); // applied
|
|
18
|
-
* await r.set("done"); // rank bookkeeping only (same emoji) — zero API calls, zero flicker
|
|
19
|
-
* await r.set("offTopic"); // REJECTED: outranked by done — the shrug never lands
|
|
9
|
+
* # The accepted set
|
|
20
10
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
11
|
+
* ## Why this is a list and not an API call
|
|
12
|
+
*
|
|
13
|
+
* The Bot API does not enumerate them. `getChat().available_reactions` is
|
|
14
|
+
* populated ONLY when a chat restricts its own reactions; a chat that allows
|
|
15
|
+
* all of them returns `null`, which is the common case. So a caller that wants
|
|
16
|
+
* to know the set — to offer it to a language model, to validate input, to
|
|
17
|
+
* build a picker — has no method to ask.
|
|
18
|
+
*
|
|
19
|
+
* ## Where these came from
|
|
20
|
+
*
|
|
21
|
+
* Measured, not copied from documentation: `scripts/probe-reactions.ts` sets
|
|
22
|
+
* each candidate on a real message and records Telegram's verdict. Re-run it to
|
|
23
|
+
* refresh this list.
|
|
24
|
+
*
|
|
25
|
+
* BOT_TOKEN=… bun scripts/probe-reactions.ts <chat_id> <message_id>
|
|
26
|
+
*
|
|
27
|
+
* Gathered **2026-08-07**: 86 candidates probed, 73 accepted, 13 refused with
|
|
28
|
+
* `Bad Request: REACTION_INVALID`.
|
|
29
|
+
*
|
|
30
|
+
* The refusals are worth knowing, because they are the ones people (and models)
|
|
31
|
+
* reach for by instinct:
|
|
32
|
+
*
|
|
33
|
+
* 👋 😊 🙂 😄 ✅ 🤖 💪 🙌 😅 🥳 😂 ❓ ‼
|
|
34
|
+
*
|
|
35
|
+
* **There is no wave.** A greeting has to be answered with something from the
|
|
36
|
+
* accepted set — 🤝 🫡 🤗 😁 — or with words.
|
|
37
|
+
*/
|
|
38
|
+
export const TELEGRAM_REACTIONS = [
|
|
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
|
+
/** Probed and refused on the date above — kept so callers can explain a rejection. */
|
|
114
|
+
export const REFUSED_REACTIONS = [
|
|
115
|
+
"👋",
|
|
116
|
+
"😊",
|
|
117
|
+
"🙂",
|
|
118
|
+
"😄",
|
|
119
|
+
"✅",
|
|
120
|
+
"🤖",
|
|
121
|
+
"💪",
|
|
122
|
+
"🙌",
|
|
123
|
+
"😅",
|
|
124
|
+
"🥳",
|
|
125
|
+
"😂",
|
|
126
|
+
"❓",
|
|
127
|
+
"‼",
|
|
128
|
+
];
|
|
129
|
+
const ACCEPTED = new Set(TELEGRAM_REACTIONS);
|
|
130
|
+
/** Whether Telegram will accept this emoji as a reaction. */
|
|
131
|
+
export const isReaction = (emoji) => ACCEPTED.has(emoji);
|
|
132
|
+
/**
|
|
133
|
+
* The set a chat will actually accept: what `getChat` reports when the room
|
|
134
|
+
* restricts its reactions, otherwise the full measured set. Pass
|
|
135
|
+
* `chat.available_reactions` straight through.
|
|
32
136
|
*/
|
|
137
|
+
export const reactionsFor = (available) => available
|
|
138
|
+
? available
|
|
139
|
+
.filter((reaction) => reaction.type === "emoji" && reaction.emoji)
|
|
140
|
+
.map((reaction) => reaction.emoji)
|
|
141
|
+
: TELEGRAM_REACTIONS;
|
|
33
142
|
// Transient per-isolate coordination, not durable state: bound it so a
|
|
34
143
|
// long-lived isolate can't grow the map without limit.
|
|
35
144
|
const MAX_TRACKED_MESSAGES = 512;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactions.js","sourceRoot":"","sources":["../../src/bot/reactions.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"reactions.js","sourceRoot":"","sources":["../../src/bot/reactions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adriangalilea/utils",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.32.0",
|
|
4
4
|
"description": "TypeScript utilities - logger, currency, formatter, GramIO bot plugins, and more",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -104,6 +104,10 @@
|
|
|
104
104
|
"types": "./dist/bot/llm.d.ts",
|
|
105
105
|
"default": "./dist/bot/llm.js"
|
|
106
106
|
},
|
|
107
|
+
"./bot/reactions": {
|
|
108
|
+
"types": "./dist/bot/reactions.d.ts",
|
|
109
|
+
"default": "./dist/bot/reactions.js"
|
|
110
|
+
},
|
|
107
111
|
"./bot/payments": {
|
|
108
112
|
"types": "./dist/bot/payments/index.d.ts",
|
|
109
113
|
"default": "./dist/bot/payments/index.js"
|
|
@@ -172,10 +176,6 @@
|
|
|
172
176
|
"types": "./dist/bot/updates.d.ts",
|
|
173
177
|
"default": "./dist/bot/updates.js"
|
|
174
178
|
},
|
|
175
|
-
"./bot/reactions": {
|
|
176
|
-
"types": "./dist/bot/reactions.d.ts",
|
|
177
|
-
"default": "./dist/bot/reactions.js"
|
|
178
|
-
},
|
|
179
179
|
"./llm": {
|
|
180
180
|
"types": "./dist/llm/index.d.ts",
|
|
181
181
|
"default": "./dist/llm/index.js"
|