@mtcute/dispatcher 0.16.7 → 0.16.9

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.
Files changed (237) hide show
  1. package/{cjs/callback-data-builder.d.ts → callback-data-builder.d.ts} +2 -2
  2. package/callback-data-builder.test.d.ts +1 -0
  3. package/{esm/context → context}/base.d.ts +2 -2
  4. package/{esm/context → context}/business-message.d.ts +5 -6
  5. package/{esm/context → context}/callback-query.d.ts +6 -7
  6. package/{cjs/context → context}/chat-join-request.d.ts +3 -3
  7. package/{esm/context → context}/chosen-inline-result.d.ts +3 -3
  8. package/{esm/context → context}/inline-query.d.ts +4 -5
  9. package/{esm/context → context}/message.d.ts +5 -6
  10. package/{cjs/context → context}/parse.d.ts +3 -3
  11. package/{esm/context → context}/pre-checkout-query.d.ts +3 -3
  12. package/{esm/context → context}/scene-transition.d.ts +1 -1
  13. package/{cjs/dispatcher.d.ts → dispatcher.d.ts} +9 -10
  14. package/{cjs/filters → filters}/bots.d.ts +4 -4
  15. package/filters/bots.test.d.ts +1 -0
  16. package/{cjs/filters → filters}/chat.d.ts +3 -3
  17. package/{esm/filters → filters}/group.d.ts +4 -4
  18. package/{cjs/filters → filters}/logic.d.ts +1 -1
  19. package/filters/logic.test.d.ts +1 -0
  20. package/{cjs/filters → filters}/message.d.ts +4 -5
  21. package/{cjs/filters → filters}/state.d.ts +2 -2
  22. package/{esm/filters → filters}/text.d.ts +3 -3
  23. package/{cjs/filters → filters}/types.d.ts +2 -2
  24. package/{cjs/filters → filters}/updates.d.ts +2 -2
  25. package/{cjs/filters → filters}/user.d.ts +3 -4
  26. package/{cjs/handler.d.ts → handler.d.ts} +5 -5
  27. package/index.cjs +2510 -0
  28. package/index.d.ts +8 -1
  29. package/index.js +2505 -1
  30. package/package.json +28 -24
  31. package/{cjs/state → state}/key.d.ts +3 -3
  32. package/state/provider.d.ts +5 -0
  33. package/{cjs/state → state}/providers/memory.d.ts +3 -4
  34. package/{esm/state → state}/providers/sqlite.d.ts +3 -3
  35. package/{cjs/state → state}/repository.d.ts +1 -1
  36. package/{esm/state → state}/service.d.ts +2 -2
  37. package/{cjs/state → state}/update-state.d.ts +2 -2
  38. package/{esm/wizard.d.ts → wizard.d.ts} +5 -6
  39. package/cjs/callback-data-builder.js +0 -141
  40. package/cjs/callback-data-builder.js.map +0 -1
  41. package/cjs/context/base.d.ts +0 -9
  42. package/cjs/context/base.js +0 -3
  43. package/cjs/context/base.js.map +0 -1
  44. package/cjs/context/business-message.d.ts +0 -61
  45. package/cjs/context/business-message.js +0 -146
  46. package/cjs/context/business-message.js.map +0 -1
  47. package/cjs/context/callback-query.d.ts +0 -63
  48. package/cjs/context/callback-query.js +0 -109
  49. package/cjs/context/callback-query.js.map +0 -1
  50. package/cjs/context/chat-join-request.js +0 -35
  51. package/cjs/context/chat-join-request.js.map +0 -1
  52. package/cjs/context/chosen-inline-result.d.ts +0 -22
  53. package/cjs/context/chosen-inline-result.js +0 -36
  54. package/cjs/context/chosen-inline-result.js.map +0 -1
  55. package/cjs/context/index.js +0 -25
  56. package/cjs/context/index.js.map +0 -1
  57. package/cjs/context/inline-query.d.ts +0 -16
  58. package/cjs/context/inline-query.js +0 -23
  59. package/cjs/context/inline-query.js.map +0 -1
  60. package/cjs/context/message.d.ts +0 -77
  61. package/cjs/context/message.js +0 -171
  62. package/cjs/context/message.js.map +0 -1
  63. package/cjs/context/parse.js +0 -42
  64. package/cjs/context/parse.js.map +0 -1
  65. package/cjs/context/pre-checkout-query.d.ts +0 -17
  66. package/cjs/context/pre-checkout-query.js +0 -27
  67. package/cjs/context/pre-checkout-query.js.map +0 -1
  68. package/cjs/context/scene-transition.d.ts +0 -24
  69. package/cjs/context/scene-transition.js +0 -52
  70. package/cjs/context/scene-transition.js.map +0 -1
  71. package/cjs/dispatcher.js +0 -908
  72. package/cjs/dispatcher.js.map +0 -1
  73. package/cjs/filters/bots.js +0 -135
  74. package/cjs/filters/bots.js.map +0 -1
  75. package/cjs/filters/bundle.js +0 -27
  76. package/cjs/filters/bundle.js.map +0 -1
  77. package/cjs/filters/chat.js +0 -56
  78. package/cjs/filters/chat.js.map +0 -1
  79. package/cjs/filters/group.d.ts +0 -26
  80. package/cjs/filters/group.js +0 -69
  81. package/cjs/filters/group.js.map +0 -1
  82. package/cjs/filters/index.js +0 -29
  83. package/cjs/filters/index.js.map +0 -1
  84. package/cjs/filters/logic.js +0 -112
  85. package/cjs/filters/logic.js.map +0 -1
  86. package/cjs/filters/message.js +0 -191
  87. package/cjs/filters/message.js.map +0 -1
  88. package/cjs/filters/state.js +0 -33
  89. package/cjs/filters/state.js.map +0 -1
  90. package/cjs/filters/text.d.ts +0 -64
  91. package/cjs/filters/text.js +0 -136
  92. package/cjs/filters/text.js.map +0 -1
  93. package/cjs/filters/types.js +0 -3
  94. package/cjs/filters/types.js.map +0 -1
  95. package/cjs/filters/updates.js +0 -40
  96. package/cjs/filters/updates.js.map +0 -1
  97. package/cjs/filters/user.js +0 -77
  98. package/cjs/filters/user.js.map +0 -1
  99. package/cjs/handler.js +0 -4
  100. package/cjs/handler.js.map +0 -1
  101. package/cjs/index.js +0 -31
  102. package/cjs/index.js.map +0 -1
  103. package/cjs/package.json +0 -3
  104. package/cjs/propagation.js +0 -27
  105. package/cjs/propagation.js.map +0 -1
  106. package/cjs/state/index.js +0 -22
  107. package/cjs/state/index.js.map +0 -1
  108. package/cjs/state/key.js +0 -43
  109. package/cjs/state/key.js.map +0 -1
  110. package/cjs/state/provider.d.ts +0 -5
  111. package/cjs/state/provider.js +0 -3
  112. package/cjs/state/provider.js.map +0 -1
  113. package/cjs/state/providers/index.js +0 -19
  114. package/cjs/state/providers/index.js.map +0 -1
  115. package/cjs/state/providers/memory.js +0 -81
  116. package/cjs/state/providers/memory.js.map +0 -1
  117. package/cjs/state/providers/sqlite.d.ts +0 -28
  118. package/cjs/state/providers/sqlite.js +0 -100
  119. package/cjs/state/providers/sqlite.js.map +0 -1
  120. package/cjs/state/repository.js +0 -3
  121. package/cjs/state/repository.js.map +0 -1
  122. package/cjs/state/service.d.ts +0 -20
  123. package/cjs/state/service.js +0 -70
  124. package/cjs/state/service.js.map +0 -1
  125. package/cjs/state/update-state.js +0 -219
  126. package/cjs/state/update-state.js.map +0 -1
  127. package/cjs/wizard.d.ts +0 -65
  128. package/cjs/wizard.js +0 -105
  129. package/cjs/wizard.js.map +0 -1
  130. package/esm/callback-data-builder.d.ts +0 -49
  131. package/esm/callback-data-builder.js +0 -137
  132. package/esm/callback-data-builder.js.map +0 -1
  133. package/esm/context/base.js +0 -2
  134. package/esm/context/base.js.map +0 -1
  135. package/esm/context/business-message.js +0 -142
  136. package/esm/context/business-message.js.map +0 -1
  137. package/esm/context/callback-query.js +0 -103
  138. package/esm/context/callback-query.js.map +0 -1
  139. package/esm/context/chat-join-request.d.ts +0 -17
  140. package/esm/context/chat-join-request.js +0 -31
  141. package/esm/context/chat-join-request.js.map +0 -1
  142. package/esm/context/chosen-inline-result.js +0 -32
  143. package/esm/context/chosen-inline-result.js.map +0 -1
  144. package/esm/context/index.d.ts +0 -9
  145. package/esm/context/index.js +0 -9
  146. package/esm/context/index.js.map +0 -1
  147. package/esm/context/inline-query.js +0 -19
  148. package/esm/context/inline-query.js.map +0 -1
  149. package/esm/context/message.js +0 -167
  150. package/esm/context/message.js.map +0 -1
  151. package/esm/context/parse.d.ts +0 -13
  152. package/esm/context/parse.js +0 -39
  153. package/esm/context/parse.js.map +0 -1
  154. package/esm/context/pre-checkout-query.js +0 -23
  155. package/esm/context/pre-checkout-query.js.map +0 -1
  156. package/esm/context/scene-transition.js +0 -48
  157. package/esm/context/scene-transition.js.map +0 -1
  158. package/esm/dispatcher.d.ts +0 -881
  159. package/esm/dispatcher.js +0 -904
  160. package/esm/dispatcher.js.map +0 -1
  161. package/esm/filters/bots.d.ts +0 -64
  162. package/esm/filters/bots.js +0 -131
  163. package/esm/filters/bots.js.map +0 -1
  164. package/esm/filters/bundle.d.ts +0 -10
  165. package/esm/filters/bundle.js +0 -11
  166. package/esm/filters/bundle.js.map +0 -1
  167. package/esm/filters/chat.d.ts +0 -27
  168. package/esm/filters/chat.js +0 -51
  169. package/esm/filters/chat.js.map +0 -1
  170. package/esm/filters/group.js +0 -65
  171. package/esm/filters/group.js.map +0 -1
  172. package/esm/filters/index.d.ts +0 -4
  173. package/esm/filters/index.js +0 -3
  174. package/esm/filters/index.js.map +0 -1
  175. package/esm/filters/logic.d.ts +0 -29
  176. package/esm/filters/logic.js +0 -105
  177. package/esm/filters/logic.js.map +0 -1
  178. package/esm/filters/message.d.ts +0 -215
  179. package/esm/filters/message.js +0 -168
  180. package/esm/filters/message.js.map +0 -1
  181. package/esm/filters/state.d.ts +0 -15
  182. package/esm/filters/state.js +0 -28
  183. package/esm/filters/state.js.map +0 -1
  184. package/esm/filters/text.js +0 -129
  185. package/esm/filters/text.js.map +0 -1
  186. package/esm/filters/types.d.ts +0 -91
  187. package/esm/filters/types.js +0 -2
  188. package/esm/filters/types.js.map +0 -1
  189. package/esm/filters/updates.d.ts +0 -39
  190. package/esm/filters/updates.js +0 -34
  191. package/esm/filters/updates.js.map +0 -1
  192. package/esm/filters/user.d.ts +0 -25
  193. package/esm/filters/user.js +0 -71
  194. package/esm/filters/user.js.map +0 -1
  195. package/esm/handler.d.ts +0 -41
  196. package/esm/handler.js +0 -3
  197. package/esm/handler.js.map +0 -1
  198. package/esm/index.d.ts +0 -8
  199. package/esm/index.js +0 -9
  200. package/esm/index.js.map +0 -1
  201. package/esm/propagation.d.ts +0 -22
  202. package/esm/propagation.js +0 -24
  203. package/esm/propagation.js.map +0 -1
  204. package/esm/state/index.d.ts +0 -5
  205. package/esm/state/index.js +0 -6
  206. package/esm/state/index.js.map +0 -1
  207. package/esm/state/key.d.ts +0 -24
  208. package/esm/state/key.js +0 -39
  209. package/esm/state/key.js.map +0 -1
  210. package/esm/state/provider.d.ts +0 -5
  211. package/esm/state/provider.js +0 -2
  212. package/esm/state/provider.js.map +0 -1
  213. package/esm/state/providers/index.d.ts +0 -2
  214. package/esm/state/providers/index.js +0 -3
  215. package/esm/state/providers/index.js.map +0 -1
  216. package/esm/state/providers/memory.d.ts +0 -30
  217. package/esm/state/providers/memory.js +0 -77
  218. package/esm/state/providers/memory.js.map +0 -1
  219. package/esm/state/providers/sqlite.js +0 -96
  220. package/esm/state/providers/sqlite.js.map +0 -1
  221. package/esm/state/repository.d.ts +0 -62
  222. package/esm/state/repository.js +0 -2
  223. package/esm/state/repository.js.map +0 -1
  224. package/esm/state/service.js +0 -66
  225. package/esm/state/service.js.map +0 -1
  226. package/esm/state/update-state.d.ts +0 -151
  227. package/esm/state/update-state.js +0 -214
  228. package/esm/state/update-state.js.map +0 -1
  229. package/esm/wizard.js +0 -101
  230. package/esm/wizard.js.map +0 -1
  231. /package/{cjs/context → context}/index.d.ts +0 -0
  232. /package/{cjs/filters → filters}/bundle.d.ts +0 -0
  233. /package/{cjs/filters → filters}/index.d.ts +0 -0
  234. /package/{cjs/index.d.ts → index.d.cts} +0 -0
  235. /package/{cjs/propagation.d.ts → propagation.d.ts} +0 -0
  236. /package/{cjs/state → state}/index.d.ts +0 -0
  237. /package/{cjs/state → state}/providers/index.d.ts +0 -0
@@ -1,137 +0,0 @@
1
- import { MtArgumentError, } from '@mtcute/core';
2
- /**
3
- * Callback data builder, inspired by [aiogram](https://github.com/aiogram/aiogram).
4
- *
5
- * This can be used to simplify management of different callbacks.
6
- *
7
- * [Learn more in the docs](/guide/topics/keyboards.html#callback-data-builders)
8
- */
9
- export class CallbackDataBuilder {
10
- prefix;
11
- _fields;
12
- sep = ':';
13
- /**
14
- * @param prefix Prefix for the data. Use something unique across your bot.
15
- * @param fields Field names in the order they will be serialized.
16
- */
17
- constructor(prefix, ...fields) {
18
- this.prefix = prefix;
19
- this._fields = fields;
20
- }
21
- /**
22
- * Build a callback data string
23
- *
24
- * @param obj Object containing the data
25
- */
26
- build(obj) {
27
- const ret = this.prefix
28
- + this.sep
29
- + this._fields
30
- .map((f) => {
31
- const val = obj[f];
32
- if (val.includes(this.sep)) {
33
- throw new MtArgumentError(`Value for ${f} ${val} contains separator ${this.sep} and cannot be used.`);
34
- }
35
- return val;
36
- })
37
- .join(this.sep);
38
- if (ret.length > 64) {
39
- throw new MtArgumentError('Resulting callback data is too long.');
40
- }
41
- return ret;
42
- }
43
- parse(data, safe = false) {
44
- const parts = data.split(this.sep);
45
- if (parts[0] !== this.prefix) {
46
- if (safe)
47
- return null;
48
- throw new MtArgumentError(`Invalid data passed: "${data}" (bad prefix, expected ${this.prefix}, got ${parts[0]})`);
49
- }
50
- if (parts.length !== this._fields.length + 1) {
51
- if (safe)
52
- return null;
53
- throw new MtArgumentError(`Invalid data passed: "${data}" (bad parts count, expected ${this._fields.length}, got ${parts.length - 1})`);
54
- }
55
- const ret = {};
56
- parts.forEach((it, idx) => {
57
- if (idx === 0)
58
- return; // skip prefix
59
- ret[this._fields[idx - 1]] = it;
60
- });
61
- return ret;
62
- }
63
- /**
64
- * Create a filter for this callback data.
65
- *
66
- * You can either pass an object with field names as keys and values as strings or regexes,
67
- * which will be compiled to a RegExp, or a function that will be called with the parsed data.
68
- * Note that the strings will be passed to `RegExp` **directly**, so you may want to escape them.
69
- *
70
- * When using a function, you can either return a boolean, or an object with field names as keys
71
- * and values as strings or regexes. In the latter case, the resulting object will be matched
72
- * against the parsed data the same way as if you passed it directly.
73
- *
74
- * @param params
75
- */
76
- filter(params = {}) {
77
- if (typeof params === 'function') {
78
- return async (query) => {
79
- if (!query.dataStr)
80
- return false;
81
- const data = this.parse(query.dataStr, true);
82
- if (!data)
83
- return false;
84
- const fnResult = await params(query, data);
85
- if (typeof fnResult === 'boolean') {
86
- query.match = data;
87
- return fnResult;
88
- }
89
- // validate result
90
- for (const key in fnResult) {
91
- const value = data[key];
92
- if (value === undefined)
93
- return false;
94
- let matchers = fnResult[key];
95
- if (!Array.isArray(matchers))
96
- matchers = [matchers];
97
- for (const matcher of matchers) {
98
- if (typeof matcher === 'string') {
99
- if (value !== matcher)
100
- return false;
101
- }
102
- else if (!matcher.test(value)) {
103
- return false;
104
- }
105
- }
106
- }
107
- query.match = data;
108
- return true;
109
- };
110
- }
111
- const parts = [];
112
- this._fields.forEach((field) => {
113
- if (!(field in params)) {
114
- parts.push(`[^${this.sep}]*?`);
115
- return;
116
- }
117
- const value = params[field];
118
- if (Array.isArray(value)) {
119
- parts.push(`(${value.map(i => (typeof i === 'string' ? i : i.source)).join('|')})`);
120
- }
121
- else {
122
- // noinspection SuspiciousTypeOfGuard
123
- parts.push(typeof value === 'string' ? value : value.source);
124
- }
125
- });
126
- const regex = new RegExp(`^${this.prefix}${this.sep}${parts.join(this.sep)}$`);
127
- return (query) => {
128
- const m = query.dataStr?.match(regex);
129
- if (!m) {
130
- return false;
131
- }
132
- query.match = this.parse(m[0]);
133
- return true;
134
- };
135
- }
136
- }
137
- //# sourceMappingURL=callback-data-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"callback-data-builder.js","sourceRoot":"","sources":["../../src/callback-data-builder.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n BusinessCallbackQuery,\n CallbackQuery,\n InlineCallbackQuery,\n MaybeArray,\n MaybePromise,\n} from '@mtcute/core'\nimport {\n MtArgumentError,\n} from '@mtcute/core'\n\nimport type { UpdateFilter } from './filters/types.js'\n\n/**\n * Callback data builder, inspired by [aiogram](https://github.com/aiogram/aiogram).\n *\n * This can be used to simplify management of different callbacks.\n *\n * [Learn more in the docs](/guide/topics/keyboards.html#callback-data-builders)\n */\nexport class CallbackDataBuilder<T extends string> {\n private readonly _fields: T[]\n\n sep = ':'\n\n /**\n * @param prefix Prefix for the data. Use something unique across your bot.\n * @param fields Field names in the order they will be serialized.\n */\n constructor(\n public prefix: string,\n ...fields: T[]\n ) {\n this._fields = fields\n }\n\n /**\n * Build a callback data string\n *\n * @param obj Object containing the data\n */\n build(obj: Record<T, string>): string {\n const ret\n = this.prefix\n + this.sep\n + this._fields\n .map((f) => {\n const val = obj[f]\n\n if (val.includes(this.sep)) {\n throw new MtArgumentError(\n `Value for ${f} ${val} contains separator ${this.sep} and cannot be used.`,\n )\n }\n\n return val\n })\n .join(this.sep)\n\n if (ret.length > 64) {\n throw new MtArgumentError('Resulting callback data is too long.')\n }\n\n return ret\n }\n\n /**\n * Parse callback data to object\n *\n * @param data Callback data as string\n * @param safe If `true`, will return `null` instead of throwing on invalid data\n */\n parse(data: string, safe?: false): Record<T, string>\n parse(data: string, safe: true): Record<T, string> | null\n parse(data: string, safe = false): Record<T, string> | null {\n const parts = data.split(this.sep)\n\n if (parts[0] !== this.prefix) {\n if (safe) return null\n throw new MtArgumentError(\n `Invalid data passed: \"${data}\" (bad prefix, expected ${this.prefix}, got ${parts[0]})`,\n )\n }\n\n if (parts.length !== this._fields.length + 1) {\n if (safe) return null\n throw new MtArgumentError(\n `Invalid data passed: \"${data}\" (bad parts count, expected ${this._fields.length}, got ${\n parts.length - 1\n })`,\n )\n }\n\n const ret = {} as Record<T, string>\n parts.forEach((it, idx) => {\n if (idx === 0) return // skip prefix\n\n ret[this._fields[idx - 1]] = it\n })\n\n return ret\n }\n\n /**\n * Create a filter for this callback data.\n *\n * You can either pass an object with field names as keys and values as strings or regexes,\n * which will be compiled to a RegExp, or a function that will be called with the parsed data.\n * Note that the strings will be passed to `RegExp` **directly**, so you may want to escape them.\n *\n * When using a function, you can either return a boolean, or an object with field names as keys\n * and values as strings or regexes. In the latter case, the resulting object will be matched\n * against the parsed data the same way as if you passed it directly.\n *\n * @param params\n */\n filter<Update extends CallbackQuery | InlineCallbackQuery | BusinessCallbackQuery>(\n params:\n | ((\n upd: Update,\n parsed: Record<T, string>,\n ) => MaybePromise<Partial<Record<T, MaybeArray<string | RegExp>>> | boolean>)\n | Partial<Record<T, MaybeArray<string | RegExp>>> = {},\n ): UpdateFilter<\n Update,\n {\n match: Record<T, string>\n }\n > {\n if (typeof params === 'function') {\n return async (query) => {\n if (!query.dataStr) return false\n\n const data = this.parse(query.dataStr, true)\n if (!data) return false\n\n const fnResult = await params(query, data)\n\n if (typeof fnResult === 'boolean') {\n (\n query as Update & {\n match: Record<T, string>\n }\n ).match = data\n\n return fnResult\n }\n\n // validate result\n for (const key in fnResult) {\n const value = data[key]\n if (value === undefined) return false\n\n let matchers = fnResult[key] as MaybeArray<string | RegExp>\n if (!Array.isArray(matchers)) matchers = [matchers]\n\n for (const matcher of matchers) {\n if (typeof matcher === 'string') {\n if (value !== matcher) return false\n } else if (!matcher.test(value)) {\n return false\n }\n }\n }\n\n (\n query as Update & {\n match: Record<T, string>\n }\n ).match = data\n\n return true\n }\n }\n\n const parts: string[] = []\n\n this._fields.forEach((field) => {\n if (!(field in params)) {\n parts.push(`[^${this.sep}]*?`)\n\n return\n }\n\n const value = params[field]\n\n if (Array.isArray(value)) {\n parts.push(`(${value.map(i => (typeof i === 'string' ? i : i.source)).join('|')})`)\n } else {\n // noinspection SuspiciousTypeOfGuard\n parts.push(typeof value === 'string' ? value : (value as RegExp).source)\n }\n })\n\n const regex = new RegExp(`^${this.prefix}${this.sep}${parts.join(this.sep)}$`)\n\n return (query) => {\n const m = query.dataStr?.match(regex)\n if (!m) {\n return false\n }(\n query as Update & {\n match: Record<T, string>\n }\n ).match = this.parse(m[0])\n\n return true\n }\n }\n}\n"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/context/base.ts"],"names":[],"mappings":"","sourcesContent":["import type { ParsedUpdate } from '@mtcute/core'\nimport type { TelegramClient } from '@mtcute/core/client.js'\n\nexport type UpdateContext<T> = T & {\n client: TelegramClient\n _name: Extract<ParsedUpdate, { data: T }>['name']\n}\n\nexport type UpdateContextDistributed<T> = T extends never ? never : UpdateContext<T>\n"]}
@@ -1,142 +0,0 @@
1
- import { BusinessMessage } from '@mtcute/core';
2
- /**
3
- * Context of a business message related update.
4
- *
5
- * This is a subclass of {@link BusinessMessage}, so all fields
6
- * of the message are available.
7
- *
8
- * For message groups, own fields are related to the last message
9
- * in the group. To access all messages, use {@link BusinessMessageContext#messages}.
10
- */
11
- export class BusinessMessageContext extends BusinessMessage {
12
- client;
13
- // this is primarily for proper types in filters, so don't bother much with actual value
14
- _name = 'new_business_message';
15
- /**
16
- * List of messages in the message group.
17
- *
18
- * For other updates, this is a list with a single element (`this`).
19
- */
20
- messages;
21
- /** Whether this update is about a message group */
22
- isMessageGroup;
23
- constructor(client, message) {
24
- const msg = Array.isArray(message) ? message[message.length - 1] : message;
25
- super(msg.update, msg._peers);
26
- this.client = client;
27
- this.messages = Array.isArray(message) ? message.map(it => new BusinessMessageContext(client, it)) : [this];
28
- this.isMessageGroup = Array.isArray(message);
29
- }
30
- /** Get all custom emojis contained in this message (message group), if any */
31
- getCustomEmojis() {
32
- return this.client.getCustomEmojisFromMessages(this.messages);
33
- }
34
- /** Send a text message to the same chat (and topic, if applicable) as a given message */
35
- answerText(...params) {
36
- const [send, params_ = {}] = params;
37
- params_.businessConnectionId = this.update.connectionId;
38
- return this.client.answerText(this, send, params_);
39
- }
40
- /** Send a media to the same chat (and topic, if applicable) as a given message */
41
- answerMedia(...params) {
42
- const [send, params_ = {}] = params;
43
- params_.businessConnectionId = this.update.connectionId;
44
- return this.client.answerMedia(this, send, params_);
45
- }
46
- /** Send a media group to the same chat (and topic, if applicable) as a given message */
47
- answerMediaGroup(...params) {
48
- const [send, params_ = {}] = params;
49
- params_.businessConnectionId = this.update.connectionId;
50
- return this.client.answerMediaGroup(this, send, params_);
51
- }
52
- /** Send a text message in reply to this message */
53
- replyText(...params) {
54
- const [send, params_ = {}] = params;
55
- params_.businessConnectionId = this.update.connectionId;
56
- return this.client.replyText(this, send, params_);
57
- }
58
- /** Send a media in reply to this message */
59
- replyMedia(...params) {
60
- const [send, params_ = {}] = params;
61
- params_.businessConnectionId = this.update.connectionId;
62
- return this.client.replyMedia(this, send, params_);
63
- }
64
- /** Send a media group in reply to this message */
65
- replyMediaGroup(...params) {
66
- const [send, params_ = {}] = params;
67
- params_.businessConnectionId = this.update.connectionId;
68
- return this.client.replyMediaGroup(this, send, params_);
69
- }
70
- /** Send a text message in reply to this message */
71
- quoteWithText(params) {
72
- params.businessConnectionId = this.update.connectionId;
73
- return this.client.quoteWithText(this, params);
74
- }
75
- /** Send a media in reply to this message */
76
- quoteWithMedia(params) {
77
- params.businessConnectionId = this.update.connectionId;
78
- return this.client.quoteWithMedia(this, params);
79
- }
80
- /** Send a media group in reply to this message */
81
- quoteWithMediaGroup(params) {
82
- params.businessConnectionId = this.update.connectionId;
83
- return this.client.quoteWithMediaGroup(this, params);
84
- }
85
- /** Delete this message (message group) */
86
- delete(params) {
87
- return this.client.deleteMessagesById(this.chat.inputPeer, this.messages.map(it => it.id), params);
88
- }
89
- /** Pin this message */
90
- pin(params) {
91
- return this.client.pinMessage({
92
- chatId: this.chat.inputPeer,
93
- message: this.id,
94
- ...params,
95
- });
96
- }
97
- /** Unpin this message */
98
- unpin() {
99
- return this.client.unpinMessage({
100
- chatId: this.chat.inputPeer,
101
- message: this.id,
102
- });
103
- }
104
- /** Edit this message */
105
- edit(params) {
106
- return this.client.editMessage({
107
- chatId: this.chat.inputPeer,
108
- message: this.id,
109
- ...params,
110
- });
111
- }
112
- /** Forward this message (message group) */
113
- forwardTo(params) {
114
- return this.client.forwardMessagesById({
115
- fromChatId: this.chat.inputPeer,
116
- messages: this.messages.map(it => it.id),
117
- ...params,
118
- });
119
- }
120
- /** Send a copy of this message (message group) */
121
- copy(params) {
122
- if (this.isMessageGroup) {
123
- return this.client.sendCopyGroup({
124
- messages: this.messages,
125
- ...params,
126
- });
127
- }
128
- return this.client.sendCopy({
129
- message: this,
130
- ...params,
131
- });
132
- }
133
- /** React to this message */
134
- react(params) {
135
- return this.client.sendReaction({
136
- chatId: this.chat.inputPeer,
137
- message: this.id,
138
- ...params,
139
- });
140
- }
141
- }
142
- //# sourceMappingURL=business-message.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"business-message.js","sourceRoot":"","sources":["../../../src/context/business-message.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Message, OmitInputMessageId, ParametersSkip1, Sticker } from '@mtcute/core'\nimport { BusinessMessage } from '@mtcute/core'\nimport type { TelegramClient } from '@mtcute/core/client.js'\nimport type {\n DeleteMessagesParams,\n ForwardMessageOptions,\n SendCopyGroupParams,\n SendCopyParams,\n} from '@mtcute/core/methods.js'\n\nimport type { UpdateContext } from './base.js'\n\n/**\n * Context of a business message related update.\n *\n * This is a subclass of {@link BusinessMessage}, so all fields\n * of the message are available.\n *\n * For message groups, own fields are related to the last message\n * in the group. To access all messages, use {@link BusinessMessageContext#messages}.\n */\nexport class BusinessMessageContext extends BusinessMessage implements UpdateContext<BusinessMessage> {\n // this is primarily for proper types in filters, so don't bother much with actual value\n readonly _name = 'new_business_message'\n\n /**\n * List of messages in the message group.\n *\n * For other updates, this is a list with a single element (`this`).\n */\n readonly messages: BusinessMessageContext[]\n\n /** Whether this update is about a message group */\n readonly isMessageGroup: boolean\n\n constructor(\n readonly client: TelegramClient,\n message: BusinessMessage | BusinessMessage[],\n ) {\n const msg = Array.isArray(message) ? message[message.length - 1] : message\n super(msg.update, msg._peers)\n\n this.messages = Array.isArray(message) ? message.map(it => new BusinessMessageContext(client, it)) : [this]\n this.isMessageGroup = Array.isArray(message)\n }\n\n /** Get all custom emojis contained in this message (message group), if any */\n getCustomEmojis(): Promise<Sticker[]> {\n return this.client.getCustomEmojisFromMessages(this.messages)\n }\n\n /** Send a text message to the same chat (and topic, if applicable) as a given message */\n answerText(...params: ParametersSkip1<TelegramClient['answerText']>): Promise<Message> {\n const [send, params_ = {}] = params\n params_.businessConnectionId = this.update.connectionId\n\n return this.client.answerText(this, send, params_)\n }\n\n /** Send a media to the same chat (and topic, if applicable) as a given message */\n answerMedia(...params: ParametersSkip1<TelegramClient['answerMedia']>): Promise<Message> {\n const [send, params_ = {}] = params\n params_.businessConnectionId = this.update.connectionId\n\n return this.client.answerMedia(this, send, params_)\n }\n\n /** Send a media group to the same chat (and topic, if applicable) as a given message */\n answerMediaGroup(...params: ParametersSkip1<TelegramClient['answerMediaGroup']>): Promise<Message[]> {\n const [send, params_ = {}] = params\n params_.businessConnectionId = this.update.connectionId\n\n return this.client.answerMediaGroup(this, send, params_)\n }\n\n /** Send a text message in reply to this message */\n replyText(...params: ParametersSkip1<TelegramClient['replyText']>): Promise<Message> {\n const [send, params_ = {}] = params\n params_.businessConnectionId = this.update.connectionId\n\n return this.client.replyText(this, send, params_)\n }\n\n /** Send a media in reply to this message */\n replyMedia(...params: ParametersSkip1<TelegramClient['replyMedia']>): Promise<Message> {\n const [send, params_ = {}] = params\n params_.businessConnectionId = this.update.connectionId\n\n return this.client.replyMedia(this, send, params_)\n }\n\n /** Send a media group in reply to this message */\n replyMediaGroup(...params: ParametersSkip1<TelegramClient['replyMediaGroup']>): Promise<Message[]> {\n const [send, params_ = {}] = params\n params_.businessConnectionId = this.update.connectionId\n\n return this.client.replyMediaGroup(this, send, params_)\n }\n\n /** Send a text message in reply to this message */\n quoteWithText(params: Parameters<TelegramClient['quoteWithText']>[1]): Promise<Message> {\n params.businessConnectionId = this.update.connectionId\n\n return this.client.quoteWithText(this, params)\n }\n\n /** Send a media in reply to this message */\n quoteWithMedia(params: Parameters<TelegramClient['quoteWithMedia']>[1]): Promise<Message> {\n params.businessConnectionId = this.update.connectionId\n\n return this.client.quoteWithMedia(this, params)\n }\n\n /** Send a media group in reply to this message */\n quoteWithMediaGroup(params: Parameters<TelegramClient['quoteWithMediaGroup']>[1]): Promise<Message[]> {\n params.businessConnectionId = this.update.connectionId\n\n return this.client.quoteWithMediaGroup(this, params)\n }\n\n /** Delete this message (message group) */\n delete(params?: DeleteMessagesParams): Promise<void> {\n return this.client.deleteMessagesById(\n this.chat.inputPeer,\n this.messages.map(it => it.id),\n params,\n )\n }\n\n /** Pin this message */\n pin(params?: OmitInputMessageId<Parameters<TelegramClient['pinMessage']>[0]>): Promise<Message | null> {\n return this.client.pinMessage({\n chatId: this.chat.inputPeer,\n message: this.id,\n ...params,\n })\n }\n\n /** Unpin this message */\n unpin(): Promise<void> {\n return this.client.unpinMessage({\n chatId: this.chat.inputPeer,\n message: this.id,\n })\n }\n\n /** Edit this message */\n edit(params: OmitInputMessageId<Parameters<TelegramClient['editMessage']>[0]>): Promise<Message> {\n return this.client.editMessage({\n chatId: this.chat.inputPeer,\n message: this.id,\n ...params,\n })\n }\n\n /** Forward this message (message group) */\n forwardTo(params: ForwardMessageOptions): Promise<Message[]> {\n return this.client.forwardMessagesById({\n fromChatId: this.chat.inputPeer,\n messages: this.messages.map(it => it.id),\n ...params,\n })\n }\n\n /** Send a copy of this message (message group) */\n copy(params: SendCopyParams & SendCopyGroupParams): Promise<Message | Message[]> {\n if (this.isMessageGroup) {\n return this.client.sendCopyGroup({\n messages: this.messages,\n ...params,\n })\n }\n\n return this.client.sendCopy({\n message: this,\n ...params,\n })\n }\n\n /** React to this message */\n react(params: OmitInputMessageId<Parameters<TelegramClient['sendReaction']>[0]>): Promise<Message | null> {\n return this.client.sendReaction({\n chatId: this.chat.inputPeer,\n message: this.id,\n ...params,\n })\n }\n}\n"]}
@@ -1,103 +0,0 @@
1
- import { BusinessCallbackQuery, CallbackQuery, InlineCallbackQuery } from '@mtcute/core';
2
- /**
3
- * Context of a callback query update.
4
- *
5
- * This is a subclass of {@link CallbackQuery}, so all its fields are also available.
6
- */
7
- export class CallbackQueryContext extends CallbackQuery {
8
- client;
9
- _name = 'callback_query';
10
- constructor(client, query) {
11
- super(query.raw, query._peers);
12
- this.client = client;
13
- }
14
- /** Answer to this callback query */
15
- answer(params) {
16
- return this.client.answerCallbackQuery(this.id, params);
17
- }
18
- /**
19
- * Get the message containing the callback button being clicked.
20
- *
21
- * Note that the message may have been deleted, in which case
22
- * `null` will be returned.
23
- */
24
- async getMessage() {
25
- return this.client.getCallbackQueryMessage(this);
26
- }
27
- /**
28
- * Edit the message that contained the callback button that was clicked.
29
- */
30
- async editMessage(params) {
31
- return this.client.editMessage({
32
- chatId: this.raw.peer,
33
- message: this.raw.msgId,
34
- ...params,
35
- });
36
- }
37
- /**
38
- * Shortcut for getting the message and editing it.
39
- */
40
- async editMessageWith(handler) {
41
- const msg = await this.getMessage();
42
- if (!msg)
43
- return;
44
- const res = await handler(msg);
45
- if (!res)
46
- return;
47
- return this.editMessage(res);
48
- }
49
- }
50
- /**
51
- * Context of an inline-originated callback query update.
52
- *
53
- * This is a subclass of {@link InlineCallbackQuery}, so all its fields are also available.
54
- */
55
- export class InlineCallbackQueryContext extends InlineCallbackQuery {
56
- client;
57
- _name = 'inline_callback_query';
58
- constructor(client, query) {
59
- super(query.raw, query._peers);
60
- this.client = client;
61
- }
62
- /** Answer to this callback query */
63
- answer(params) {
64
- return this.client.answerCallbackQuery(this.id, params);
65
- }
66
- /**
67
- * Edit the message that contained the callback button that was clicked.
68
- */
69
- async editMessage(params) {
70
- return this.client.editInlineMessage({
71
- messageId: this.raw.msgId,
72
- ...params,
73
- });
74
- }
75
- }
76
- /**
77
- * Context of an callback query update originated from a business connection message
78
- *
79
- * This is a subclass of {@link BusinessCallbackQuery}, so all its fields are also available.
80
- */
81
- export class BusinessCallbackQueryContext extends BusinessCallbackQuery {
82
- client;
83
- _name = 'business_callback_query';
84
- constructor(client, query) {
85
- super(query.raw, query._peers);
86
- this.client = client;
87
- }
88
- /** Answer to this callback query */
89
- answer(params) {
90
- return this.client.answerCallbackQuery(this.id, params);
91
- }
92
- /**
93
- * Edit the message that contained the callback button that was clicked.
94
- */
95
- async editMessage(params) {
96
- return this.client.editMessage({
97
- message: this.message,
98
- businessConnectionId: this.connectionId,
99
- ...params,
100
- });
101
- }
102
- }
103
- //# sourceMappingURL=callback-query.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"callback-query.js","sourceRoot":"","sources":["../../../src/context/callback-query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAKxF;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,aAAa;IAItC;IAHJ,KAAK,GAAG,gBAAgB,CAAA;IAEjC,YACa,MAAsB,EAC/B,KAAoB;QAEpB,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QAHrB,WAAM,GAAN,MAAM,CAAgB;IAInC,CAAC;IAED,oCAAoC;IACpC,MAAM,CAAC,MAA4D;QAC/D,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IAC3D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAA;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,MAA6E;QAC3F,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAC3B,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI;YACrB,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK;YACvB,GAAG,MAAM;SACZ,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACjB,OAA2F;QAE3F,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QACnC,IAAI,CAAC,GAAG;YAAE,OAAM;QAEhB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC,GAAG;YAAE,OAAM;QAEhB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IAChC,CAAC;CACJ;AAED;;;;GAIG;AACH,MAAM,OAAO,0BAA2B,SAAQ,mBAAmB;IAIlD;IAHJ,KAAK,GAAG,uBAAuB,CAAA;IAExC,YACa,MAAsB,EAC/B,KAA0B;QAE1B,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QAHrB,WAAM,GAAN,MAAM,CAAgB;IAInC,CAAC;IAED,oCAAoC;IACpC,MAAM,CAAC,MAA4D;QAC/D,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,MAA6E;QAC3F,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;YACjC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK;YACzB,GAAG,MAAM;SACZ,CAAC,CAAA;IACN,CAAC;CACJ;AAED;;;;GAIG;AACH,MAAM,OAAO,4BACT,SAAQ,qBAAqB;IAKhB;IAHJ,KAAK,GAAG,yBAAyB,CAAA;IAE1C,YACa,MAAsB,EAC/B,KAA4B;QAE5B,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QAHrB,WAAM,GAAN,MAAM,CAAgB;IAInC,CAAC;IAED,oCAAoC;IACpC,MAAM,CAAC,MAA4D;QAC/D,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,MAA6E;QAC3F,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,oBAAoB,EAAE,IAAI,CAAC,YAAY;YACvC,GAAG,MAAM;SACZ,CAAC,CAAA;IACN,CAAC;CACJ","sourcesContent":["import type { MaybePromise, Message } from '@mtcute/core'\nimport { BusinessCallbackQuery, CallbackQuery, InlineCallbackQuery } from '@mtcute/core'\nimport type { TelegramClient } from '@mtcute/core/client.js'\n\nimport type { UpdateContext } from './base.js'\n\n/**\n * Context of a callback query update.\n *\n * This is a subclass of {@link CallbackQuery}, so all its fields are also available.\n */\nexport class CallbackQueryContext extends CallbackQuery implements UpdateContext<CallbackQuery> {\n readonly _name = 'callback_query'\n\n constructor(\n readonly client: TelegramClient,\n query: CallbackQuery,\n ) {\n super(query.raw, query._peers)\n }\n\n /** Answer to this callback query */\n answer(params: Parameters<TelegramClient['answerCallbackQuery']>[1]): Promise<void> {\n return this.client.answerCallbackQuery(this.id, params)\n }\n\n /**\n * Get the message containing the callback button being clicked.\n *\n * Note that the message may have been deleted, in which case\n * `null` will be returned.\n */\n async getMessage(): Promise<Message | null> {\n return this.client.getCallbackQueryMessage(this)\n }\n\n /**\n * Edit the message that contained the callback button that was clicked.\n */\n async editMessage(params: Omit<Parameters<TelegramClient['editInlineMessage']>[0], 'messageId'>): Promise<Message> {\n return this.client.editMessage({\n chatId: this.raw.peer,\n message: this.raw.msgId,\n ...params,\n })\n }\n\n /**\n * Shortcut for getting the message and editing it.\n */\n async editMessageWith(\n handler: (msg: Message) => MaybePromise<Parameters<CallbackQueryContext['editMessage']>[0]>,\n ): Promise<Message | undefined> {\n const msg = await this.getMessage()\n if (!msg) return\n\n const res = await handler(msg)\n if (!res) return\n\n return this.editMessage(res)\n }\n}\n\n/**\n * Context of an inline-originated callback query update.\n *\n * This is a subclass of {@link InlineCallbackQuery}, so all its fields are also available.\n */\nexport class InlineCallbackQueryContext extends InlineCallbackQuery implements UpdateContext<InlineCallbackQuery> {\n readonly _name = 'inline_callback_query'\n\n constructor(\n readonly client: TelegramClient,\n query: InlineCallbackQuery,\n ) {\n super(query.raw, query._peers)\n }\n\n /** Answer to this callback query */\n answer(params: Parameters<TelegramClient['answerCallbackQuery']>[1]): Promise<void> {\n return this.client.answerCallbackQuery(this.id, params)\n }\n\n /**\n * Edit the message that contained the callback button that was clicked.\n */\n async editMessage(params: Omit<Parameters<TelegramClient['editInlineMessage']>[0], 'messageId'>): Promise<void> {\n return this.client.editInlineMessage({\n messageId: this.raw.msgId,\n ...params,\n })\n }\n}\n\n/**\n * Context of an callback query update originated from a business connection message\n *\n * This is a subclass of {@link BusinessCallbackQuery}, so all its fields are also available.\n */\nexport class BusinessCallbackQueryContext\n extends BusinessCallbackQuery\n implements UpdateContext<BusinessCallbackQuery> {\n readonly _name = 'business_callback_query'\n\n constructor(\n readonly client: TelegramClient,\n query: BusinessCallbackQuery,\n ) {\n super(query.raw, query._peers)\n }\n\n /** Answer to this callback query */\n answer(params: Parameters<TelegramClient['answerCallbackQuery']>[1]): Promise<void> {\n return this.client.answerCallbackQuery(this.id, params)\n }\n\n /**\n * Edit the message that contained the callback button that was clicked.\n */\n async editMessage(params: Omit<Parameters<TelegramClient['editInlineMessage']>[0], 'messageId'>): Promise<Message> {\n return this.client.editMessage({\n message: this.message,\n businessConnectionId: this.connectionId,\n ...params,\n })\n }\n}\n"]}
@@ -1,17 +0,0 @@
1
- import { BotChatJoinRequestUpdate } from '@mtcute/core';
2
- import type { TelegramClient } from '@mtcute/core/client.js';
3
- import type { UpdateContext } from './base.js';
4
- /**
5
- * Context of a chat join request update (for bots).
6
- *
7
- * This is a subclass of {@link BotChatJoinRequestUpdate}, so all its fields are also available.
8
- */
9
- export declare class ChatJoinRequestUpdateContext extends BotChatJoinRequestUpdate implements UpdateContext<BotChatJoinRequestUpdate> {
10
- readonly client: TelegramClient;
11
- readonly _name = "bot_chat_join_request";
12
- constructor(client: TelegramClient, update: BotChatJoinRequestUpdate);
13
- /** Approve the request */
14
- approve(): Promise<void>;
15
- /** Decline the request */
16
- decline(): Promise<void>;
17
- }
@@ -1,31 +0,0 @@
1
- import { BotChatJoinRequestUpdate } from '@mtcute/core';
2
- /**
3
- * Context of a chat join request update (for bots).
4
- *
5
- * This is a subclass of {@link BotChatJoinRequestUpdate}, so all its fields are also available.
6
- */
7
- export class ChatJoinRequestUpdateContext extends BotChatJoinRequestUpdate {
8
- client;
9
- _name = 'bot_chat_join_request';
10
- constructor(client, update) {
11
- super(update.raw, update._peers);
12
- this.client = client;
13
- }
14
- /** Approve the request */
15
- approve() {
16
- return this.client.hideJoinRequest({
17
- action: 'approve',
18
- user: this.user.inputPeer,
19
- chatId: this.chat.inputPeer,
20
- });
21
- }
22
- /** Decline the request */
23
- decline() {
24
- return this.client.hideJoinRequest({
25
- action: 'decline',
26
- user: this.user.inputPeer,
27
- chatId: this.chat.inputPeer,
28
- });
29
- }
30
- }
31
- //# sourceMappingURL=chat-join-request.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-join-request.js","sourceRoot":"","sources":["../../../src/context/chat-join-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AAKvD;;;;GAIG;AACH,MAAM,OAAO,4BACT,SAAQ,wBAAwB;IAKnB;IAHJ,KAAK,GAAG,uBAAuB,CAAA;IAExC,YACa,MAAsB,EAC/B,MAAgC;QAEhC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;QAHvB,WAAM,GAAN,MAAM,CAAgB;IAInC,CAAC;IAED,0BAA0B;IAC1B,OAAO;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;YAC/B,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;SAC9B,CAAC,CAAA;IACN,CAAC;IAED,0BAA0B;IAC1B,OAAO;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;YAC/B,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;SAC9B,CAAC,CAAA;IACN,CAAC;CACJ","sourcesContent":["import { BotChatJoinRequestUpdate } from '@mtcute/core'\nimport type { TelegramClient } from '@mtcute/core/client.js'\n\nimport type { UpdateContext } from './base.js'\n\n/**\n * Context of a chat join request update (for bots).\n *\n * This is a subclass of {@link BotChatJoinRequestUpdate}, so all its fields are also available.\n */\nexport class ChatJoinRequestUpdateContext\n extends BotChatJoinRequestUpdate\n implements UpdateContext<BotChatJoinRequestUpdate> {\n readonly _name = 'bot_chat_join_request'\n\n constructor(\n readonly client: TelegramClient,\n update: BotChatJoinRequestUpdate,\n ) {\n super(update.raw, update._peers)\n }\n\n /** Approve the request */\n approve(): Promise<void> {\n return this.client.hideJoinRequest({\n action: 'approve',\n user: this.user.inputPeer,\n chatId: this.chat.inputPeer,\n })\n }\n\n /** Decline the request */\n decline(): Promise<void> {\n return this.client.hideJoinRequest({\n action: 'decline',\n user: this.user.inputPeer,\n chatId: this.chat.inputPeer,\n })\n }\n}\n"]}
@@ -1,32 +0,0 @@
1
- import { ChosenInlineResult, MtArgumentError } from '@mtcute/core';
2
- /**
3
- * Context of a chosen inline result update.
4
- *
5
- * This is a subclass of {@link ChosenInlineResult}, so all its fields are also available.
6
- *
7
- * > **Note**: To receive these updates, you must enable
8
- * > Inline feedback in [@BotFather](//t.me/botfather)
9
- */
10
- export class ChosenInlineResultContext extends ChosenInlineResult {
11
- client;
12
- _name = 'chosen_inline_result';
13
- constructor(client, result) {
14
- super(result.raw, result._peers);
15
- this.client = client;
16
- }
17
- /**
18
- * Edit the message that was sent when this inline result that was chosen.
19
- *
20
- * > **Note**: This method can only be used if the message contained a reply markup
21
- */
22
- async editMessage(params) {
23
- if (!this.raw.msgId) {
24
- throw new MtArgumentError('No message ID, make sure you have included reply markup!');
25
- }
26
- return this.client.editInlineMessage({
27
- ...params,
28
- messageId: this.raw.msgId,
29
- });
30
- }
31
- }
32
- //# sourceMappingURL=chosen-inline-result.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chosen-inline-result.js","sourceRoot":"","sources":["../../../src/context/chosen-inline-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAKlE;;;;;;;GAOG;AACH,MAAM,OAAO,yBAA0B,SAAQ,kBAAkB;IAIhD;IAHJ,KAAK,GAAG,sBAAsB,CAAA;IAEvC,YACa,MAAsB,EAC/B,MAA0B;QAE1B,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;QAHvB,WAAM,GAAN,MAAM,CAAgB;IAInC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,MAA0D;QACxE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,IAAI,eAAe,CAAC,0DAA0D,CAAC,CAAA;QACzF,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;YACjC,GAAG,MAAM;YACT,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK;SAC5B,CAAC,CAAA;IACN,CAAC;CACJ","sourcesContent":["import { ChosenInlineResult, MtArgumentError } from '@mtcute/core'\nimport type { TelegramClient } from '@mtcute/core/client.js'\n\nimport type { UpdateContext } from './base.js'\n\n/**\n * Context of a chosen inline result update.\n *\n * This is a subclass of {@link ChosenInlineResult}, so all its fields are also available.\n *\n * > **Note**: To receive these updates, you must enable\n * > Inline feedback in [@BotFather](//t.me/botfather)\n */\nexport class ChosenInlineResultContext extends ChosenInlineResult implements UpdateContext<ChosenInlineResult> {\n readonly _name = 'chosen_inline_result'\n\n constructor(\n readonly client: TelegramClient,\n result: ChosenInlineResult,\n ) {\n super(result.raw, result._peers)\n }\n\n /**\n * Edit the message that was sent when this inline result that was chosen.\n *\n * > **Note**: This method can only be used if the message contained a reply markup\n */\n async editMessage(params: Parameters<TelegramClient['editInlineMessage']>[0]): Promise<void> {\n if (!this.raw.msgId) {\n throw new MtArgumentError('No message ID, make sure you have included reply markup!')\n }\n\n return this.client.editInlineMessage({\n ...params,\n messageId: this.raw.msgId,\n })\n }\n}\n"]}
@@ -1,9 +0,0 @@
1
- export * from './base.js';
2
- export * from './business-message.js';
3
- export * from './callback-query.js';
4
- export * from './chat-join-request.js';
5
- export * from './chosen-inline-result.js';
6
- export * from './inline-query.js';
7
- export * from './message.js';
8
- export type { UpdateContextType } from './parse.js';
9
- export * from './pre-checkout-query.js';
@@ -1,9 +0,0 @@
1
- export * from './base.js';
2
- export * from './business-message.js';
3
- export * from './callback-query.js';
4
- export * from './chat-join-request.js';
5
- export * from './chosen-inline-result.js';
6
- export * from './inline-query.js';
7
- export * from './message.js';
8
- export * from './pre-checkout-query.js';
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/context/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAE5B,cAAc,yBAAyB,CAAA","sourcesContent":["export * from './base.js'\nexport * from './business-message.js'\nexport * from './callback-query.js'\nexport * from './chat-join-request.js'\nexport * from './chosen-inline-result.js'\nexport * from './inline-query.js'\nexport * from './message.js'\nexport type { UpdateContextType } from './parse.js'\nexport * from './pre-checkout-query.js'\n"]}
@@ -1,19 +0,0 @@
1
- import { InlineQuery } from '@mtcute/core';
2
- /**
3
- * Context of an inline query update.
4
- *
5
- * This is a subclass of {@link InlineQuery}, so all its fields are also available.
6
- */
7
- export class InlineQueryContext extends InlineQuery {
8
- client;
9
- _name = 'inline_query';
10
- constructor(client, query) {
11
- super(query.raw, query._peers);
12
- this.client = client;
13
- }
14
- /** Answer to this inline query */
15
- answer(...params) {
16
- return this.client.answerInlineQuery(this.id, ...params);
17
- }
18
- }
19
- //# sourceMappingURL=inline-query.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inline-query.js","sourceRoot":"","sources":["../../../src/context/inline-query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAK1C;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IAIlC;IAHJ,KAAK,GAAG,cAAc,CAAA;IAE/B,YACa,MAAsB,EAC/B,KAAkB;QAElB,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QAHrB,WAAM,GAAN,MAAM,CAAgB;IAInC,CAAC;IAED,kCAAkC;IAClC,MAAM,CAAC,GAAG,MAA4D;QAClE,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,CAAA;IAC5D,CAAC;CACJ","sourcesContent":["import type { ParametersSkip1 } from '@mtcute/core'\nimport { InlineQuery } from '@mtcute/core'\nimport type { TelegramClient } from '@mtcute/core/client.js'\n\nimport type { UpdateContext } from './base.js'\n\n/**\n * Context of an inline query update.\n *\n * This is a subclass of {@link InlineQuery}, so all its fields are also available.\n */\nexport class InlineQueryContext extends InlineQuery implements UpdateContext<InlineQuery> {\n readonly _name = 'inline_query'\n\n constructor(\n readonly client: TelegramClient,\n query: InlineQuery,\n ) {\n super(query.raw, query._peers)\n }\n\n /** Answer to this inline query */\n answer(...params: ParametersSkip1<TelegramClient['answerInlineQuery']>): Promise<void> {\n return this.client.answerInlineQuery(this.id, ...params)\n }\n}\n"]}