@xbibzlibrary/telebibz 0.4.4 → 3.0.1

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 (258) hide show
  1. package/CHANGELOG.md +35 -138
  2. package/LICENSE +1 -1
  3. package/NOTICE.md +9 -4
  4. package/README.md +173 -242
  5. package/examples/01-quickstart.js +13 -0
  6. package/examples/02-menu-tombol.js +22 -0
  7. package/examples/03-wizard.js +29 -0
  8. package/examples/04-broadcast.js +25 -0
  9. package/examples/05-kirim-file.js +19 -0
  10. package/examples/06-menu.js +35 -0
  11. package/examples/07-inline-query.js +18 -0
  12. package/index.d.ts +81 -0
  13. package/index.js +42 -0
  14. package/lib/api.js +154 -0
  15. package/lib/broadcast.js +35 -0
  16. package/lib/composer.js +174 -0
  17. package/lib/context.js +190 -0
  18. package/lib/errors.js +35 -0
  19. package/lib/file.js +41 -0
  20. package/lib/inline-query.js +28 -0
  21. package/lib/keyboard.js +83 -0
  22. package/lib/logger.js +38 -0
  23. package/lib/menus.js +90 -0
  24. package/lib/net.js +115 -0
  25. package/lib/ratelimit.js +61 -0
  26. package/lib/runner.js +45 -0
  27. package/lib/session.js +36 -0
  28. package/lib/telebibz.js +190 -0
  29. package/lib/wizard.js +81 -0
  30. package/package.json +35 -97
  31. package/test/all.test.js +334 -0
  32. package/CODE_OF_CONDUCT.md +0 -37
  33. package/CONTRIBUTING.md +0 -59
  34. package/CONTRIBUTION_RULES.md +0 -41
  35. package/GOVERNANCE.md +0 -47
  36. package/README.id.md +0 -292
  37. package/README.zh-CN.md +0 -292
  38. package/RELEASE_AUTOMATION.md +0 -78
  39. package/RELEASE_POLICY.md +0 -32
  40. package/SECURITY.md +0 -47
  41. package/SHOWCASE.md +0 -29
  42. package/SUPPORT.md +0 -30
  43. package/assets/readme-preview.html +0 -75
  44. package/assets/telebibz-logo.png +0 -0
  45. package/assets/telebibz-readme-preview.png +0 -0
  46. package/bin/telebibz.mjs +0 -3
  47. package/dist/generated/api.d.ts +0 -13
  48. package/dist/generated/api.d.ts.map +0 -1
  49. package/dist/generated/api.js +0 -192
  50. package/dist/generated/api.js.map +0 -1
  51. package/dist/src/api/client.d.ts +0 -62
  52. package/dist/src/api/client.d.ts.map +0 -1
  53. package/dist/src/api/client.js +0 -104
  54. package/dist/src/api/client.js.map +0 -1
  55. package/dist/src/api/errors.d.ts +0 -45
  56. package/dist/src/api/errors.d.ts.map +0 -1
  57. package/dist/src/api/errors.js +0 -65
  58. package/dist/src/api/errors.js.map +0 -1
  59. package/dist/src/api/index.d.ts +0 -6
  60. package/dist/src/api/index.d.ts.map +0 -1
  61. package/dist/src/api/index.js +0 -6
  62. package/dist/src/api/index.js.map +0 -1
  63. package/dist/src/api/telegram-types/LICENSE +0 -21
  64. package/dist/src/api/telegram-types/api.d.ts +0 -22
  65. package/dist/src/api/telegram-types/checklist.d.ts +0 -72
  66. package/dist/src/api/telegram-types/inline.d.ts +0 -692
  67. package/dist/src/api/telegram-types/langs.d.ts +0 -193
  68. package/dist/src/api/telegram-types/manage.d.ts +0 -1144
  69. package/dist/src/api/telegram-types/markup.d.ts +0 -268
  70. package/dist/src/api/telegram-types/message.d.ts +0 -1537
  71. package/dist/src/api/telegram-types/methods.d.ts +0 -2870
  72. package/dist/src/api/telegram-types/mod.d.ts +0 -14
  73. package/dist/src/api/telegram-types/passport.d.ts +0 -163
  74. package/dist/src/api/telegram-types/payment.d.ts +0 -570
  75. package/dist/src/api/telegram-types/rich.d.ts +0 -1010
  76. package/dist/src/api/telegram-types/settings.d.ts +0 -120
  77. package/dist/src/api/telegram-types/story.d.ts +0 -89
  78. package/dist/src/api/telegram-types/update.d.ts +0 -84
  79. package/dist/src/api/telegram.d.ts +0 -7
  80. package/dist/src/api/telegram.d.ts.map +0 -1
  81. package/dist/src/api/telegram.js +0 -2
  82. package/dist/src/api/telegram.js.map +0 -1
  83. package/dist/src/api/transport.d.ts +0 -68
  84. package/dist/src/api/transport.d.ts.map +0 -1
  85. package/dist/src/api/transport.js +0 -264
  86. package/dist/src/api/transport.js.map +0 -1
  87. package/dist/src/api/types.d.ts +0 -466
  88. package/dist/src/api/types.d.ts.map +0 -1
  89. package/dist/src/api/types.js +0 -2
  90. package/dist/src/api/types.js.map +0 -1
  91. package/dist/src/branding/terminal.d.ts +0 -77
  92. package/dist/src/branding/terminal.d.ts.map +0 -1
  93. package/dist/src/branding/terminal.js +0 -328
  94. package/dist/src/branding/terminal.js.map +0 -1
  95. package/dist/src/broadcast/broadcast.d.ts +0 -50
  96. package/dist/src/broadcast/broadcast.d.ts.map +0 -1
  97. package/dist/src/broadcast/broadcast.js +0 -56
  98. package/dist/src/broadcast/broadcast.js.map +0 -1
  99. package/dist/src/cache/cache.d.ts +0 -34
  100. package/dist/src/cache/cache.d.ts.map +0 -1
  101. package/dist/src/cache/cache.js +0 -41
  102. package/dist/src/cache/cache.js.map +0 -1
  103. package/dist/src/cli.d.ts +0 -2
  104. package/dist/src/cli.d.ts.map +0 -1
  105. package/dist/src/cli.js +0 -84
  106. package/dist/src/cli.js.map +0 -1
  107. package/dist/src/context/context.d.ts +0 -124
  108. package/dist/src/context/context.d.ts.map +0 -1
  109. package/dist/src/context/context.js +0 -302
  110. package/dist/src/context/context.js.map +0 -1
  111. package/dist/src/core/bot.d.ts +0 -204
  112. package/dist/src/core/bot.d.ts.map +0 -1
  113. package/dist/src/core/bot.js +0 -506
  114. package/dist/src/core/bot.js.map +0 -1
  115. package/dist/src/core/events.d.ts +0 -75
  116. package/dist/src/core/events.d.ts.map +0 -1
  117. package/dist/src/core/events.js +0 -35
  118. package/dist/src/core/events.js.map +0 -1
  119. package/dist/src/core/webhook-reply.d.ts +0 -34
  120. package/dist/src/core/webhook-reply.d.ts.map +0 -1
  121. package/dist/src/core/webhook-reply.js +0 -37
  122. package/dist/src/core/webhook-reply.js.map +0 -1
  123. package/dist/src/index.d.ts +0 -24
  124. package/dist/src/index.d.ts.map +0 -1
  125. package/dist/src/index.js +0 -24
  126. package/dist/src/index.js.map +0 -1
  127. package/dist/src/keyboard/index.d.ts +0 -46
  128. package/dist/src/keyboard/index.d.ts.map +0 -1
  129. package/dist/src/keyboard/index.js +0 -55
  130. package/dist/src/keyboard/index.js.map +0 -1
  131. package/dist/src/middleware/compose.d.ts +0 -5
  132. package/dist/src/middleware/compose.d.ts.map +0 -1
  133. package/dist/src/middleware/compose.js +0 -17
  134. package/dist/src/middleware/compose.js.map +0 -1
  135. package/dist/src/observability/logger.d.ts +0 -78
  136. package/dist/src/observability/logger.d.ts.map +0 -1
  137. package/dist/src/observability/logger.js +0 -285
  138. package/dist/src/observability/logger.js.map +0 -1
  139. package/dist/src/plugins/plugin.d.ts +0 -38
  140. package/dist/src/plugins/plugin.d.ts.map +0 -1
  141. package/dist/src/plugins/plugin.js +0 -59
  142. package/dist/src/plugins/plugin.js.map +0 -1
  143. package/dist/src/queue/queue.d.ts +0 -77
  144. package/dist/src/queue/queue.d.ts.map +0 -1
  145. package/dist/src/queue/queue.js +0 -213
  146. package/dist/src/queue/queue.js.map +0 -1
  147. package/dist/src/router/router.d.ts +0 -61
  148. package/dist/src/router/router.d.ts.map +0 -1
  149. package/dist/src/router/router.js +0 -183
  150. package/dist/src/router/router.js.map +0 -1
  151. package/dist/src/state/conversation.d.ts +0 -56
  152. package/dist/src/state/conversation.d.ts.map +0 -1
  153. package/dist/src/state/conversation.js +0 -133
  154. package/dist/src/state/conversation.js.map +0 -1
  155. package/dist/src/state/forms.d.ts +0 -34
  156. package/dist/src/state/forms.d.ts.map +0 -1
  157. package/dist/src/state/forms.js +0 -44
  158. package/dist/src/state/forms.js.map +0 -1
  159. package/dist/src/state/menu.d.ts +0 -78
  160. package/dist/src/state/menu.d.ts.map +0 -1
  161. package/dist/src/state/menu.js +0 -127
  162. package/dist/src/state/menu.js.map +0 -1
  163. package/dist/src/storage/storage.d.ts +0 -146
  164. package/dist/src/storage/storage.d.ts.map +0 -1
  165. package/dist/src/storage/storage.js +0 -195
  166. package/dist/src/storage/storage.js.map +0 -1
  167. package/dist/src/telegram-features.d.ts +0 -33
  168. package/dist/src/telegram-features.d.ts.map +0 -1
  169. package/dist/src/telegram-features.js +0 -71
  170. package/dist/src/telegram-features.js.map +0 -1
  171. package/dist/src/testing.d.ts +0 -24
  172. package/dist/src/testing.d.ts.map +0 -1
  173. package/dist/src/testing.js +0 -38
  174. package/dist/src/testing.js.map +0 -1
  175. package/dist/src/utils/concurrency.d.ts +0 -25
  176. package/dist/src/utils/concurrency.d.ts.map +0 -1
  177. package/dist/src/utils/concurrency.js +0 -52
  178. package/dist/src/utils/concurrency.js.map +0 -1
  179. package/dist/src/utils/files.d.ts +0 -45
  180. package/dist/src/utils/files.d.ts.map +0 -1
  181. package/dist/src/utils/files.js +0 -53
  182. package/dist/src/utils/files.js.map +0 -1
  183. package/dist/src/utils/text.d.ts +0 -39
  184. package/dist/src/utils/text.d.ts.map +0 -1
  185. package/dist/src/utils/text.js +0 -56
  186. package/dist/src/utils/text.js.map +0 -1
  187. package/dist/src/webhook/handler.d.ts +0 -19
  188. package/dist/src/webhook/handler.d.ts.map +0 -1
  189. package/dist/src/webhook/handler.js +0 -141
  190. package/dist/src/webhook/handler.js.map +0 -1
  191. package/dist-cjs/generated/api.js +0 -194
  192. package/dist-cjs/package.json +0 -3
  193. package/dist-cjs/src/api/client.js +0 -107
  194. package/dist-cjs/src/api/errors.js +0 -74
  195. package/dist-cjs/src/api/index.js +0 -21
  196. package/dist-cjs/src/api/telegram-types/LICENSE +0 -21
  197. package/dist-cjs/src/api/telegram-types/api.d.ts +0 -22
  198. package/dist-cjs/src/api/telegram-types/checklist.d.ts +0 -72
  199. package/dist-cjs/src/api/telegram-types/inline.d.ts +0 -692
  200. package/dist-cjs/src/api/telegram-types/langs.d.ts +0 -193
  201. package/dist-cjs/src/api/telegram-types/manage.d.ts +0 -1144
  202. package/dist-cjs/src/api/telegram-types/markup.d.ts +0 -268
  203. package/dist-cjs/src/api/telegram-types/message.d.ts +0 -1537
  204. package/dist-cjs/src/api/telegram-types/methods.d.ts +0 -2870
  205. package/dist-cjs/src/api/telegram-types/mod.d.ts +0 -14
  206. package/dist-cjs/src/api/telegram-types/passport.d.ts +0 -163
  207. package/dist-cjs/src/api/telegram-types/payment.d.ts +0 -570
  208. package/dist-cjs/src/api/telegram-types/rich.d.ts +0 -1010
  209. package/dist-cjs/src/api/telegram-types/settings.d.ts +0 -120
  210. package/dist-cjs/src/api/telegram-types/story.d.ts +0 -89
  211. package/dist-cjs/src/api/telegram-types/update.d.ts +0 -84
  212. package/dist-cjs/src/api/telegram.js +0 -2
  213. package/dist-cjs/src/api/transport.js +0 -267
  214. package/dist-cjs/src/api/types.js +0 -2
  215. package/dist-cjs/src/branding/terminal.js +0 -338
  216. package/dist-cjs/src/broadcast/broadcast.js +0 -58
  217. package/dist-cjs/src/cache/cache.js +0 -45
  218. package/dist-cjs/src/cli.js +0 -86
  219. package/dist-cjs/src/context/context.js +0 -305
  220. package/dist-cjs/src/core/bot.js +0 -510
  221. package/dist-cjs/src/core/events.js +0 -38
  222. package/dist-cjs/src/core/webhook-reply.js +0 -42
  223. package/dist-cjs/src/index.js +0 -47
  224. package/dist-cjs/src/keyboard/index.js +0 -61
  225. package/dist-cjs/src/middleware/compose.js +0 -20
  226. package/dist-cjs/src/observability/logger.js +0 -293
  227. package/dist-cjs/src/plugins/plugin.js +0 -63
  228. package/dist-cjs/src/queue/queue.js +0 -219
  229. package/dist-cjs/src/router/router.js +0 -186
  230. package/dist-cjs/src/state/conversation.js +0 -139
  231. package/dist-cjs/src/state/forms.js +0 -47
  232. package/dist-cjs/src/state/menu.js +0 -133
  233. package/dist-cjs/src/storage/storage.js +0 -202
  234. package/dist-cjs/src/telegram-features.js +0 -76
  235. package/dist-cjs/src/testing.js +0 -45
  236. package/dist-cjs/src/utils/concurrency.js +0 -57
  237. package/dist-cjs/src/utils/files.js +0 -58
  238. package/dist-cjs/src/utils/text.js +0 -63
  239. package/dist-cjs/src/webhook/handler.js +0 -144
  240. package/docs/API.id.md +0 -1935
  241. package/docs/API.md +0 -1969
  242. package/docs/API.zh-CN.md +0 -1929
  243. package/docs/GETTING_STARTED.id.md +0 -85
  244. package/docs/GETTING_STARTED.md +0 -85
  245. package/docs/GETTING_STARTED.zh-CN.md +0 -85
  246. package/docs/GITHUB_PACKAGES.id.md +0 -82
  247. package/docs/GITHUB_PACKAGES.md +0 -82
  248. package/docs/GITHUB_PACKAGES.zh-CN.md +0 -82
  249. package/docs/README.md +0 -48
  250. package/docs/STORAGE.id.md +0 -105
  251. package/docs/STORAGE.md +0 -105
  252. package/docs/STORAGE.zh-CN.md +0 -105
  253. package/examples/README.md +0 -37
  254. package/examples/files.ts +0 -35
  255. package/examples/minimal.ts +0 -12
  256. package/examples/tsconfig.json +0 -9
  257. package/examples/webhook.ts +0 -42
  258. package/examples/wizard-registration.ts +0 -42
@@ -1,78 +0,0 @@
1
- # GitHub-to-npm Release Automation
2
-
3
- Repository ini menggunakan GitHub Actions untuk menjaga source GitHub dan package npmjs tetap sinkron melalui satu jalur release yang tervalidasi. Repository source tetap private; karena itu workflow menggunakan npm publish tanpa provenance, sesuai batasan registry npm untuk source private. GitHub digunakan sebagai source code, tempat workflow, tag, dan GitHub Release. Panduan GitHub Packages tersedia sebagai opsi terpisah jika organisasi GitHub dengan scope `xbibzlibrary` dibuat kemudian.
4
-
5
- ## Alur otomatis
6
-
7
- Setiap push ke branch `main` menjalankan workflow `.github/workflows/auto-publish.yml`, kecuali commit tersebut memuat marker `[skip release]`.
8
-
9
- | Tahap | Perilaku |
10
- |---|---|
11
- | Checkout | Mengambil seluruh history beserta tag (`fetch-depth: 0` + `fetch-tags: true`) agar analisis commit dan pembuatan tag akurat. |
12
- | Install | Menjalankan `npm ci --ignore-scripts`. |
13
- | Version | Membaca versi `package.json`, versi latest npm, dan commit sejak tag release terakhir, lalu memilih versi berikutnya (lihat aturan di bawah). |
14
- | Verification | Menjalankan typecheck, type-level tests, lint, runtime tests, build ESM/CommonJS, security audit, dan release check. |
15
- | Immutable guard | Menolak publish jika versi target sudah ada di npmjs. |
16
- | Git sync | Commit otomatis `chore(release): vX.Y.Z [skip release]` (dilewati bila `package.json` sudah berada di versi target), membuat annotated tag `vX.Y.Z`, lalu push commit dan tag ke GitHub. |
17
- | npmjs publish | Menerbitkan package public menggunakan `NPM_TOKEN`; provenance dinonaktifkan karena npm menolak provenance dari source repository private. |
18
- | GitHub Release | Membuat GitHub Release dengan generated notes. |
19
-
20
- Push commit version otomatis tidak memicu release kedua karena mengandung `[skip release]`. Workflow menggunakan concurrency sehingga release berjalan satu per satu.
21
-
22
- ## Aturan penomoran versi
23
-
24
- Versi berikutnya dihitung dari `max(package.json, npm latest)` dengan bump berdasarkan Conventional Commits sejak tag release terakhir:
25
-
26
- | Commit sejak tag terakhir | 0.x | >=1.0.0 |
27
- |---|---|---|
28
- | `BREAKING CHANGE:` atau `feat!:` / `fix!:` | minor (`0.1.19` → `0.2.0`) | major (`1.2.3` → `2.0.0`) |
29
- | `feat:` / `feat(scope):` | minor | minor |
30
- | lainnya (`fix:`, `docs:`, `chore:`, …) | patch | patch |
31
-
32
- Jika `package.json` sudah dideklarasikan lebih tinggi daripada versi npm (misalnya dipersiapkan manual untuk `0.2.0`), workflow memakai versi tersebut apa adanya. Hasil perhitungan tidak pernah boleh lebih rendah daripada versi npm yang sudah terbit; jika demikian, workflow gagal dengan pesan yang jelas.
33
-
34
- ## Secret dan permission yang wajib tersedia
35
-
36
- Workflow membutuhkan `contents: write` untuk version bump, tag, dan GitHub Release. Buka repository GitHub, kemudian masuk ke **Settings → Secrets and variables → Actions** dan tambahkan repository atau environment secret berikut:
37
-
38
- ```text
39
- NPM_TOKEN=${NPM_TOKEN}
40
- ```
41
-
42
- Jika memakai GitHub Environment bernama `npm-release`, secret dapat disimpan sebagai environment secret dan environment tersebut dapat diberi required reviewers untuk approval manual sebelum publish.
43
-
44
- Jangan menyimpan token di repository, `.npmrc`, source code, issue, commit, atau workflow. Token npm yang pernah ditempelkan di chat harus dicabut dan diganti dengan granular token baru.
45
-
46
- ## Aturan penggunaan
47
-
48
- Perubahan source biasa dapat dipush ke `main`; workflow menghitung versi baru berdasarkan Conventional Commits (`feat:` → minor, `fix:`/lainnya → patch, `feat!:`/`BREAKING CHANGE:` → minor pada 0.x / major pada 1.x) setelah seluruh quality gates lulus. Karena versi npm immutable, workflow tidak pernah menimpa versi yang telah ada.
49
-
50
- Untuk rilis yang dipersiapkan secara eksplisit (misalnya `0.2.0` atau `1.0.0`), deklarasikan versi tersebut langsung di `package.json` sebelum push; workflow akan memakainya apa adanya selama lebih tinggi daripada versi npm yang sudah terbit.
51
-
52
- Untuk perubahan dokumentasi atau perubahan internal yang tidak boleh menerbitkan npm, gunakan commit message yang memuat marker berikut:
53
-
54
- ```text
55
- docs: update API reference [skip release]
56
- ```
57
-
58
- Untuk memicu workflow secara manual, gunakan **Actions → Auto publish to npm → Run workflow**. Manual trigger tetap menjalankan versioning dan semua gate yang sama.
59
-
60
- ## Verifikasi lokal
61
-
62
- Sebelum push, jalankan:
63
-
64
- ```bash
65
- npm run typecheck
66
- npm run test:types
67
- npm run lint
68
- npm test
69
- npm run build
70
- npm run security
71
- npm run release:check
72
- ```
73
-
74
- Setelah workflow selesai, verifikasi:
75
-
76
- ```bash
77
- npm view @xbibzlibrary/telebibz version dist.integrity dist.tarball
78
- ```
package/RELEASE_POLICY.md DELETED
@@ -1,32 +0,0 @@
1
- # Release Policy
2
-
3
- ## Scope and immutability
4
-
5
- The published artifact is scoped as `@xbibzlibrary/telebibz`. npm package versions are immutable after publication: a released version must not be overwritten. Future changes require a new version and a new release candidate. Consumers can still fork or modify a locally installed copy; no npm package can technically prevent that. This project therefore protects the official release path rather than making local copies impossible to alter.
6
-
7
- ## Hardening controls
8
-
9
- Every release must pass strict TypeScript typechecking, type-level tests, lint, runtime tests, build for ESM and CommonJS, dependency audit, and `release:check`. The release checker rejects an incorrect scope, private package status, missing public publish configuration, install lifecycle scripts, credential patterns in tracked release content, and incomplete tarball contents. npm provenance is required when the source repository is public; npm rejects provenance for private source repositories, so the current private-repository workflow explicitly uses `--provenance=false`.
10
-
11
- The package uses a protected GitHub Actions release workflow. The publish token must be stored only as a repository secret or temporary `NPM_TOKEN` environment variable with the smallest possible scope. Tokens must never be committed, placed in `.npmrc` inside the repository, or included in archives.
12
-
13
- ## Release verification
14
-
15
- Before publish, run:
16
-
17
- ```bash
18
- npm run typecheck
19
- npm run test:types
20
- npm run lint
21
- npm test
22
- npm run build
23
- npm run security
24
- npm run release:check
25
- npm pack --dry-run
26
- ```
27
-
28
- After publish, verify the public registry metadata and tarball with `npm view @xbibzlibrary/telebibz version dist.integrity dist.tarball` and a clean install into a new directory. Record the tarball integrity value with the release notes.
29
-
30
- ## Organization permissions
31
-
32
- Only maintainers with publish permission in the `xbibzlibrary` organization may publish. Enable two-factor authentication or organization-level publish controls where available. Use granular access tokens and rotate them immediately if they are pasted into chat, logs, source, or any untrusted system.
package/SECURITY.md DELETED
@@ -1,47 +0,0 @@
1
- # Security Policy
2
-
3
- ## Supported versions
4
-
5
- Security fixes target the latest development branch and the latest published stable release. Older versions may not receive backports. Upgrade to the latest release before requesting a fix unless the issue prevents upgrading.
6
-
7
- | Version | Supported |
8
- |---|---|
9
- | `main` | Yes, subject to current development changes |
10
- | Latest `0.x` release | Yes |
11
- | Older releases | Best effort only |
12
-
13
- ## Reporting a vulnerability
14
-
15
- Do not publish tokens, sensitive payloads, exploit instructions, private chat content, or personal data in a public issue, pull request, discussion, or commit.
16
-
17
- Use GitHub's private vulnerability reporting or Security Advisory flow for this repository when available: [Report a private vulnerability](https://github.com/XbibzOfficial777/telebibz/security/advisories/new). If that flow is unavailable, contact the repository maintainers privately through an authenticated GitHub channel and request a secure reporting path. Do not create a public issue to ask where to report a vulnerability.
18
-
19
- A useful report includes the affected version or commit, Node.js version, impact, attack prerequisites, a minimal safe reproduction, affected subsystem, and a proposed mitigation if known. Redact credentials, personal information, private Telegram identifiers, and production payloads. Attachments should be sanitized before submission.
20
-
21
- ## What to report privately
22
-
23
- Report authentication bypasses, secret exposure, webhook verification failures, unsafe file or URL handling, arbitrary code execution, injection, cross-user state leakage, approval-gate bypasses, dependency supply-chain issues, release-workflow compromise, and vulnerabilities that can cause unauthorized Telegram actions or data disclosure.
24
-
25
- Ordinary bugs without a security impact should use the public [Bug Report template](.github/ISSUE_TEMPLATE/bug_report.yml). Documentation and support requests should use their dedicated templates.
26
-
27
- ## Response process
28
-
29
- Maintainers acknowledge a private report when practical, reproduce it in an isolated environment, assess severity and affected versions, coordinate a fix, and publish a security advisory or release note when disclosure is appropriate. Timelines depend on severity, reproducibility, maintainer availability, and coordination with affected users or upstream providers.
30
-
31
- Reporters should allow reasonable time for remediation and coordinated disclosure. Do not publicly disclose a vulnerability, proof of exploit, or affected production target before maintainers confirm that disclosure is safe.
32
-
33
- ## Security boundaries
34
-
35
- telebibz does not send telemetry to third parties automatically. Tokens must be supplied through environment variables or a secret manager and must never be committed to source control, issue text, logs, screenshots, package archives, or workflow output.
36
-
37
- Telegram input is untrusted. Callback data, file paths, URLs, JSON payloads, and user-provided text must be validated before being used as filesystem, network, database, shell, or authorization input. Webhook deployments must restrict access, verify the Telegram secret token, enforce body-size limits, and apply infrastructure-level rate limiting where appropriate.
38
-
39
- Storage adapters are security boundaries owned by the application. Configure Redis, SQL, Mongo, and file permissions according to the deployment threat model. Do not store secrets or unnecessary personal data in sessions, conversations, caches, queues, or approval records.
40
-
41
- ## Credential exposure and rotation
42
-
43
- If a Telegram or npm credential is exposed, revoke or rotate it immediately through the relevant provider, remove it from uncommitted files and logs, invalidate affected sessions, inspect release history, and report the exposure privately. Removing a secret from the latest commit does not remove it from history or external logs.
44
-
45
- ## Security updates
46
-
47
- Security fixes may change behavior or require a new immutable npm version. Follow [RELEASE_POLICY.md](RELEASE_POLICY.md) and [RELEASE_AUTOMATION.md](RELEASE_AUTOMATION.md) for the protected release path.
package/SHOWCASE.md DELETED
@@ -1,29 +0,0 @@
1
- # Telebibz showcase
2
-
3
- This page highlights projects built with Telebibz. If you are using Telebibz in a public project, open a pull request adding a short entry using the format below. Do not include bot tokens, private URLs, personal data, or confidential source code.
4
-
5
- ## Projects
6
-
7
- No community submissions yet. The first public project can be added here.
8
-
9
- ### Submission format
10
-
11
- ```markdown
12
- ### Project name
13
-
14
- - **Link:** https://example.com
15
- - **Description:** One sentence describing what the bot does.
16
- - **Telebibz features:** Commands, wizard, webhook, keyboard, plugin, or other features used.
17
- - **Maintainer:** @github-handle
18
- ```
19
-
20
- ## Why submit a project?
21
-
22
- A showcase entry helps other developers discover practical patterns and gives maintainers feedback about which parts of the framework are useful in real applications. Entries are reviewed for relevance, security, and respectful presentation. A listing is not an endorsement, and maintainers may remove entries that become unavailable or unsafe.
23
-
24
- ## Related resources
25
-
26
- - [Getting started](docs/GETTING_STARTED.md)
27
- - [Runnable examples](examples/README.md)
28
- - [Complete API reference](docs/API.md)
29
- - [Contribution guide](CONTRIBUTING.md)
package/SUPPORT.md DELETED
@@ -1,30 +0,0 @@
1
- # Support Policy
2
-
3
- ## Before requesting support
4
-
5
- Read the [English API reference](docs/API.md), the localized API references, [CONTRIBUTING.md](CONTRIBUTING.md), and the relevant release or security policy. Search existing issues and discussions before opening a new request.
6
-
7
- ## Where to ask
8
-
9
- | Need | Channel |
10
- |---|---|
11
- | Usage question or configuration help | GitHub issue using the Question/Support template |
12
- | Reproducible defect | GitHub issue using the Bug Report template |
13
- | New capability | GitHub issue using the Feature Request template |
14
- | Documentation error | GitHub issue using the Documentation template |
15
- | Security vulnerability | Private process described in [SECURITY.md](SECURITY.md); never a public issue |
16
- | Contribution or patch | Pull request following [CONTRIBUTING.md](CONTRIBUTING.md) |
17
-
18
- ## Information to include
19
-
20
- Provide the telebibz version, Node.js version, operating system where relevant, module system, minimal reproduction, expected behavior, actual behavior, stack trace with secrets removed, and the result of relevant quality gates. Include whether the behavior occurs with ESM, CommonJS, mocks, or a real Telegram environment.
21
-
22
- Never include Telegram bot tokens, npm tokens, private keys, cookies, authorization headers, real user identifiers, private chat content, or unredacted production payloads. Replace sensitive values with placeholders before posting.
23
-
24
- ## Response expectations
25
-
26
- This is a community-maintained project. Maintainers prioritize security reports, release blockers, data-loss risks, regressions, and reproducible runtime failures. Response and fix times are not guaranteed. A support request may be closed when it lacks a reproduction after reasonable follow-up, duplicates an existing issue, or asks for behavior outside the documented scope.
27
-
28
- ## Support boundaries
29
-
30
- Support does not include operating a user's production infrastructure, recovering deleted credentials, guaranteeing Telegram availability, or bypassing npm/GitHub permission controls. For Telegram platform behavior, verify the official Telegram Bot API documentation as well as the telebibz API reference.
@@ -1,75 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8">
5
- <title>telebibz README preview</title>
6
- <style>
7
- :root { color-scheme: dark; --bg:#07111f; --panel:#0d1b2d; --panel2:#11243a; --line:#24415f; --text:#f1f7ff; --muted:#9db1c8; --cyan:#42d9ff; --blue:#668cff; --green:#72e1ad; --orange:#ffbd6b; }
8
- * { box-sizing: border-box; }
9
- body { margin:0; width:1600px; min-height:1000px; font-family: Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, sans-serif; background: radial-gradient(circle at 10% 0%, #12345b 0, transparent 37%), linear-gradient(135deg,#06101d,#0a1728 55%,#071221); color:var(--text); }
10
- .wrap { padding:58px 74px 64px; }
11
- .top { display:flex; align-items:center; justify-content:space-between; margin-bottom:44px; }
12
- .brand { display:flex; align-items:center; gap:20px; }
13
- .mark { width:78px; height:78px; border-radius:22px; background:linear-gradient(145deg,#39d9ff,#637cff); display:grid; place-items:center; box-shadow:0 18px 45px #1e8bdc55; font-weight:900; font-size:31px; letter-spacing:-3px; color:#fff; }
14
- h1 { font-size:48px; line-height:1; margin:0 0 10px; letter-spacing:-2px; }
15
- .tag { color:var(--muted); font-size:20px; }
16
- .lang { border:1px solid var(--line); background:#0b1b2d; color:#dcecff; padding:12px 18px; border-radius:12px; font-weight:700; }
17
- .hero { display:grid; grid-template-columns: 1fr 1.15fr; gap:34px; align-items:stretch; }
18
- .hero-copy { padding:30px 0 10px; }
19
- .eyebrow { color:var(--cyan); text-transform:uppercase; letter-spacing:2px; font-size:13px; font-weight:800; }
20
- h2 { font-size:42px; line-height:1.08; letter-spacing:-1.5px; margin:14px 0 18px; max-width:630px; }
21
- .lead { color:#bfd0e4; font-size:20px; line-height:1.5; max-width:640px; }
22
- .pill-row { display:flex; flex-wrap:wrap; gap:10px; margin-top:26px; }
23
- .pill { border:1px solid #2d5277; background:#0c2035; color:#dcefff; padding:9px 13px; border-radius:999px; font-size:14px; }
24
- .code { border:1px solid var(--line); background:#071525; border-radius:20px; overflow:hidden; box-shadow:0 22px 70px #0006; }
25
- .code-head { display:flex; align-items:center; gap:8px; padding:15px 18px; background:#0d2137; border-bottom:1px solid var(--line); color:#91abc8; font-size:14px; }
26
- .dot { width:10px; height:10px; border-radius:50%; background:#fb7185; } .dot:nth-child(2){background:#fbbf24}.dot:nth-child(3){background:#34d399}
27
- pre { margin:0; padding:24px 28px 30px; font-family:"SFMono-Regular",Consolas,monospace; font-size:18px; line-height:1.62; color:#d9e8fa; white-space:pre-wrap; }
28
- .kw { color:#9b9dff; }.fn { color:#74e7ff; }.str { color:#8de8ae; }.cm { color:#6f8ba8; }
29
- .section-title { margin:56px 0 20px; display:flex; align-items:end; justify-content:space-between; }
30
- .section-title h3 { margin:0; font-size:26px; letter-spacing:-.5px; }.section-title span { color:var(--muted); font-size:14px; }
31
- .cards { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
32
- .card { min-height:150px; padding:21px; border:1px solid var(--line); background:linear-gradient(145deg,#0d2034,#0b1828); border-radius:16px; }
33
- .icon { color:var(--cyan); font-size:22px; font-weight:900; }.card strong { display:block; margin:12px 0 8px; font-size:17px; }.card p { margin:0; color:var(--muted); line-height:1.45; font-size:14px; }
34
- .footer { display:flex; justify-content:space-between; gap:20px; margin-top:40px; padding-top:20px; border-top:1px solid var(--line); color:var(--muted); font-size:14px; }
35
- .status { color:var(--green); font-weight:800; }
36
- </style>
37
- </head>
38
- <body>
39
- <main class="wrap">
40
- <header class="top">
41
- <div class="brand"><div class="mark">tb</div><div><h1>telebibz</h1><div class="tag">Telegram Bot Framework for Node.js &amp; TypeScript</div></div></div>
42
- <div class="lang">English &nbsp;·&nbsp; Bahasa Indonesia &nbsp;·&nbsp; 简体中文</div>
43
- </header>
44
- <section class="hero">
45
- <div class="hero-copy">
46
- <div class="eyebrow">Typed. Composable. Production-minded.</div>
47
- <h2>Build serious Telegram bots without fighting the API.</h2>
48
- <p class="lead">A full-scale framework with typed API access, routing, middleware, context helpers, keyboards, sessions, webhooks, queues, scheduling, plugins, colorful terminal logging, and test utilities.</p>
49
- <div class="pill-row"><span class="pill">Node.js ≥ 20</span><span class="pill">ESM + CommonJS</span><span class="pill">Telegram Bot API 10.2</span><span class="pill">TypeScript strict</span></div>
50
- </div>
51
- <div class="code"><div class="code-head"><span class="dot"></span><span class="dot"></span><span class="dot"></span><span style="margin-left:8px">examples/minimal.ts</span></div><pre><span class="kw">import</span> { <span class="fn">Bot</span>, <span class="fn">InlineKeyboard</span> } <span class="kw">from</span> <span class="str">"@xbibzlibrary/telebibz"</span>;
52
-
53
- <span class="kw">const</span> bot = <span class="kw">new</span> <span class="fn">Bot</span>(process.env.TELEGRAM_BOT_TOKEN!);
54
-
55
- bot.<span class="fn">command</span>(<span class="str">"start"</span>, (ctx) =&gt;
56
- ctx.<span class="fn">reply</span>(<span class="str">"Welcome to telebibz"</span>, {
57
- reply_markup: <span class="kw">new</span> <span class="fn">InlineKeyboard</span>()
58
- .<span class="fn">text</span>(<span class="str">"Explore API"</span>, <span class="str">"api"</span>)
59
- .<span class="fn">build</span>(),
60
- }),
61
- );
62
-
63
- <span class="kw">await</span> bot.<span class="fn">start</span>();</pre></div>
64
- </section>
65
- <div class="section-title"><h3>One framework, the whole bot lifecycle</h3><span>Designed around real Telegram primitives</span></div>
66
- <section class="cards">
67
- <article class="card"><div class="icon">01</div><strong>Typed API client</strong><p>Dynamic Telegram method access with typed core methods, errors, retry, timeout, JSON, multipart, and AbortSignal.</p></article>
68
- <article class="card"><div class="icon">02</div><strong>Router + context</strong><p>Commands, exact text, regex, callbacks, predicates, nested routes, middleware composition, and ergonomic replies.</p></article>
69
- <article class="card"><div class="icon">03</div><strong>Stateful workflows</strong><p>Sessions, forms, conversations, wizards, menus, pagination, queues, schedulers, caches, and plugins.</p></article>
70
- <article class="card"><div class="icon">04</div><strong>Release hardening</strong><p>runtime logging, webhook secret verification, ESM/CommonJS builds, tests, security checks, and npm provenance.</p></article>
71
- </section>
72
- <footer class="footer"><span>xbibzlibrary/telebibz · documented in three languages</span><span class="status">● API surface documented</span></footer>
73
- </main>
74
- </body>
75
- </html>
Binary file
Binary file
package/bin/telebibz.mjs DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- import { main } from "../dist/src/cli.js";
3
- await main();
@@ -1,13 +0,0 @@
1
- /** Generated from the official Telegram Bot API documentation. Do not edit manually. */
2
- export declare const TELEGRAM_API_VERSION: "10.2";
3
- export declare const TELEGRAM_METHOD_NAMES: readonly ["addStickerToSet", "answerCallbackQuery", "answerChatJoinRequestQuery", "answerGuestQuery", "answerInlineQuery", "answerPreCheckoutQuery", "answerShippingQuery", "answerWebAppQuery", "approveChatJoinRequest", "approveSuggestedPost", "banChatMember", "banChatSenderChat", "close", "closeForumTopic", "closeGeneralForumTopic", "convertGiftToStars", "copyMessage", "copyMessages", "createChatInviteLink", "createChatSubscriptionInviteLink", "createForumTopic", "createInvoiceLink", "createNewStickerSet", "declineChatJoinRequest", "declineSuggestedPost", "deleteAllMessageReactions", "deleteBusinessMessages", "deleteChatPhoto", "deleteChatStickerSet", "deleteEphemeralMessage", "deleteForumTopic", "deleteMessage", "deleteMessageReaction", "deleteMessages", "deleteMyCommands", "deleteStickerFromSet", "deleteStickerSet", "deleteStory", "deleteWebhook", "editChatInviteLink", "editChatSubscriptionInviteLink", "editEphemeralMessageCaption", "editEphemeralMessageMedia", "editEphemeralMessageReplyMarkup", "editEphemeralMessageText", "editForumTopic", "editGeneralForumTopic", "editMessageCaption", "editMessageChecklist", "editMessageLiveLocation", "editMessageMedia", "editMessageReplyMarkup", "editMessageText", "editStory", "editUserStarSubscription", "exportChatInviteLink", "forwardMessage", "forwardMessages", "getAvailableGifts", "getBusinessAccountGifts", "getBusinessAccountStarBalance", "getBusinessConnection", "getChat", "getChatAdministrators", "getChatGifts", "getChatMember", "getChatMemberCount", "getChatMenuButton", "getCustomEmojiStickers", "getFile", "getForumTopicIconStickers", "getGameHighScores", "getManagedBotAccessSettings", "getManagedBotToken", "getMe", "getMyCommands", "getMyDefaultAdministratorRights", "getMyDescription", "getMyName", "getMyShortDescription", "getMyStarBalance", "getStarTransactions", "getStickerSet", "getUpdates", "getUserChatBoosts", "getUserGifts", "getUserPersonalChatMessages", "getUserProfileAudios", "getUserProfilePhotos", "getWebhookInfo", "giftPremiumSubscription", "hideGeneralForumTopic", "leaveChat", "logOut", "pinChatMessage", "postStory", "promoteChatMember", "readBusinessMessage", "refundStarPayment", "removeBusinessAccountProfilePhoto", "removeChatVerification", "removeMyProfilePhoto", "removeUserVerification", "reopenForumTopic", "reopenGeneralForumTopic", "replaceManagedBotToken", "replaceStickerInSet", "repostStory", "restrictChatMember", "revokeChatInviteLink", "savePreparedInlineMessage", "savePreparedKeyboardButton", "sendAnimation", "sendAudio", "sendChatAction", "sendChatJoinRequestWebApp", "sendChecklist", "sendContact", "sendDice", "sendDocument", "sendGame", "sendGift", "sendInvoice", "sendLivePhoto", "sendLocation", "sendMediaGroup", "sendMessage", "sendMessageDraft", "sendPaidMedia", "sendPhoto", "sendPoll", "sendRichMessage", "sendRichMessageDraft", "sendSticker", "sendVenue", "sendVideo", "sendVideoNote", "sendVoice", "setBusinessAccountBio", "setBusinessAccountGiftSettings", "setBusinessAccountName", "setBusinessAccountProfilePhoto", "setBusinessAccountUsername", "setChatAdministratorCustomTitle", "setChatDescription", "setChatMemberTag", "setChatMenuButton", "setChatPermissions", "setChatPhoto", "setChatStickerSet", "setChatTitle", "setCustomEmojiStickerSetThumbnail", "setGameScore", "setManagedBotAccessSettings", "setMessageReaction", "setMyCommands", "setMyDefaultAdministratorRights", "setMyDescription", "setMyName", "setMyProfilePhoto", "setMyShortDescription", "setPassportDataErrors", "setStickerEmojiList", "setStickerKeywords", "setStickerMaskPosition", "setStickerPositionInSet", "setStickerSetThumbnail", "setStickerSetTitle", "setUserEmojiStatus", "setWebhook", "stopMessageLiveLocation", "stopPoll", "transferBusinessAccountStars", "transferGift", "unbanChatMember", "unbanChatSenderChat", "unhideGeneralForumTopic", "unpinAllChatMessages", "unpinAllForumTopicMessages", "unpinAllGeneralForumTopicMessages", "unpinChatMessage", "upgradeGift", "uploadStickerFile", "verifyChat", "verifyUser"];
4
- export type TelegramMethodName = typeof TELEGRAM_METHOD_NAMES[number];
5
- export type GeneratedMethodSpec = {
6
- params: Record<string, unknown>;
7
- result: unknown;
8
- };
9
- export type GeneratedTelegramMethodMap = {
10
- [K in TelegramMethodName]: GeneratedMethodSpec;
11
- };
12
- export declare const GENERATED_METHODS: Readonly<Record<"addStickerToSet" | "answerCallbackQuery" | "answerChatJoinRequestQuery" | "answerGuestQuery" | "answerInlineQuery" | "answerPreCheckoutQuery" | "answerShippingQuery" | "answerWebAppQuery" | "approveChatJoinRequest" | "approveSuggestedPost" | "banChatMember" | "banChatSenderChat" | "close" | "closeForumTopic" | "closeGeneralForumTopic" | "convertGiftToStars" | "copyMessage" | "copyMessages" | "createChatInviteLink" | "createChatSubscriptionInviteLink" | "createForumTopic" | "createInvoiceLink" | "createNewStickerSet" | "declineChatJoinRequest" | "declineSuggestedPost" | "deleteAllMessageReactions" | "deleteBusinessMessages" | "deleteChatPhoto" | "deleteChatStickerSet" | "deleteEphemeralMessage" | "deleteForumTopic" | "deleteMessage" | "deleteMessageReaction" | "deleteMessages" | "deleteMyCommands" | "deleteStickerFromSet" | "deleteStickerSet" | "deleteStory" | "deleteWebhook" | "editChatInviteLink" | "editChatSubscriptionInviteLink" | "editEphemeralMessageCaption" | "editEphemeralMessageMedia" | "editEphemeralMessageReplyMarkup" | "editEphemeralMessageText" | "editForumTopic" | "editGeneralForumTopic" | "editMessageCaption" | "editMessageChecklist" | "editMessageLiveLocation" | "editMessageMedia" | "editMessageReplyMarkup" | "editMessageText" | "editStory" | "editUserStarSubscription" | "exportChatInviteLink" | "forwardMessage" | "forwardMessages" | "getAvailableGifts" | "getBusinessAccountGifts" | "getBusinessAccountStarBalance" | "getBusinessConnection" | "getChat" | "getChatAdministrators" | "getChatGifts" | "getChatMember" | "getChatMemberCount" | "getChatMenuButton" | "getCustomEmojiStickers" | "getFile" | "getForumTopicIconStickers" | "getGameHighScores" | "getManagedBotAccessSettings" | "getManagedBotToken" | "getMe" | "getMyCommands" | "getMyDefaultAdministratorRights" | "getMyDescription" | "getMyName" | "getMyShortDescription" | "getMyStarBalance" | "getStarTransactions" | "getStickerSet" | "getUpdates" | "getUserChatBoosts" | "getUserGifts" | "getUserPersonalChatMessages" | "getUserProfileAudios" | "getUserProfilePhotos" | "getWebhookInfo" | "giftPremiumSubscription" | "hideGeneralForumTopic" | "leaveChat" | "logOut" | "pinChatMessage" | "postStory" | "promoteChatMember" | "readBusinessMessage" | "refundStarPayment" | "removeBusinessAccountProfilePhoto" | "removeChatVerification" | "removeMyProfilePhoto" | "removeUserVerification" | "reopenForumTopic" | "reopenGeneralForumTopic" | "replaceManagedBotToken" | "replaceStickerInSet" | "repostStory" | "restrictChatMember" | "revokeChatInviteLink" | "savePreparedInlineMessage" | "savePreparedKeyboardButton" | "sendAnimation" | "sendAudio" | "sendChatAction" | "sendChatJoinRequestWebApp" | "sendChecklist" | "sendContact" | "sendDice" | "sendDocument" | "sendGame" | "sendGift" | "sendInvoice" | "sendLivePhoto" | "sendLocation" | "sendMediaGroup" | "sendMessage" | "sendMessageDraft" | "sendPaidMedia" | "sendPhoto" | "sendPoll" | "sendRichMessage" | "sendRichMessageDraft" | "sendSticker" | "sendVenue" | "sendVideo" | "sendVideoNote" | "sendVoice" | "setBusinessAccountBio" | "setBusinessAccountGiftSettings" | "setBusinessAccountName" | "setBusinessAccountProfilePhoto" | "setBusinessAccountUsername" | "setChatAdministratorCustomTitle" | "setChatDescription" | "setChatMemberTag" | "setChatMenuButton" | "setChatPermissions" | "setChatPhoto" | "setChatStickerSet" | "setChatTitle" | "setCustomEmojiStickerSetThumbnail" | "setGameScore" | "setManagedBotAccessSettings" | "setMessageReaction" | "setMyCommands" | "setMyDefaultAdministratorRights" | "setMyDescription" | "setMyName" | "setMyProfilePhoto" | "setMyShortDescription" | "setPassportDataErrors" | "setStickerEmojiList" | "setStickerKeywords" | "setStickerMaskPosition" | "setStickerPositionInSet" | "setStickerSetThumbnail" | "setStickerSetTitle" | "setUserEmojiStatus" | "setWebhook" | "stopMessageLiveLocation" | "stopPoll" | "transferBusinessAccountStars" | "transferGift" | "unbanChatMember" | "unbanChatSenderChat" | "unhideGeneralForumTopic" | "unpinAllChatMessages" | "unpinAllForumTopicMessages" | "unpinAllGeneralForumTopicMessages" | "unpinChatMessage" | "upgradeGift" | "uploadStickerFile" | "verifyChat" | "verifyUser", "addStickerToSet" | "answerCallbackQuery" | "answerChatJoinRequestQuery" | "answerGuestQuery" | "answerInlineQuery" | "answerPreCheckoutQuery" | "answerShippingQuery" | "answerWebAppQuery" | "approveChatJoinRequest" | "approveSuggestedPost" | "banChatMember" | "banChatSenderChat" | "close" | "closeForumTopic" | "closeGeneralForumTopic" | "convertGiftToStars" | "copyMessage" | "copyMessages" | "createChatInviteLink" | "createChatSubscriptionInviteLink" | "createForumTopic" | "createInvoiceLink" | "createNewStickerSet" | "declineChatJoinRequest" | "declineSuggestedPost" | "deleteAllMessageReactions" | "deleteBusinessMessages" | "deleteChatPhoto" | "deleteChatStickerSet" | "deleteEphemeralMessage" | "deleteForumTopic" | "deleteMessage" | "deleteMessageReaction" | "deleteMessages" | "deleteMyCommands" | "deleteStickerFromSet" | "deleteStickerSet" | "deleteStory" | "deleteWebhook" | "editChatInviteLink" | "editChatSubscriptionInviteLink" | "editEphemeralMessageCaption" | "editEphemeralMessageMedia" | "editEphemeralMessageReplyMarkup" | "editEphemeralMessageText" | "editForumTopic" | "editGeneralForumTopic" | "editMessageCaption" | "editMessageChecklist" | "editMessageLiveLocation" | "editMessageMedia" | "editMessageReplyMarkup" | "editMessageText" | "editStory" | "editUserStarSubscription" | "exportChatInviteLink" | "forwardMessage" | "forwardMessages" | "getAvailableGifts" | "getBusinessAccountGifts" | "getBusinessAccountStarBalance" | "getBusinessConnection" | "getChat" | "getChatAdministrators" | "getChatGifts" | "getChatMember" | "getChatMemberCount" | "getChatMenuButton" | "getCustomEmojiStickers" | "getFile" | "getForumTopicIconStickers" | "getGameHighScores" | "getManagedBotAccessSettings" | "getManagedBotToken" | "getMe" | "getMyCommands" | "getMyDefaultAdministratorRights" | "getMyDescription" | "getMyName" | "getMyShortDescription" | "getMyStarBalance" | "getStarTransactions" | "getStickerSet" | "getUpdates" | "getUserChatBoosts" | "getUserGifts" | "getUserPersonalChatMessages" | "getUserProfileAudios" | "getUserProfilePhotos" | "getWebhookInfo" | "giftPremiumSubscription" | "hideGeneralForumTopic" | "leaveChat" | "logOut" | "pinChatMessage" | "postStory" | "promoteChatMember" | "readBusinessMessage" | "refundStarPayment" | "removeBusinessAccountProfilePhoto" | "removeChatVerification" | "removeMyProfilePhoto" | "removeUserVerification" | "reopenForumTopic" | "reopenGeneralForumTopic" | "replaceManagedBotToken" | "replaceStickerInSet" | "repostStory" | "restrictChatMember" | "revokeChatInviteLink" | "savePreparedInlineMessage" | "savePreparedKeyboardButton" | "sendAnimation" | "sendAudio" | "sendChatAction" | "sendChatJoinRequestWebApp" | "sendChecklist" | "sendContact" | "sendDice" | "sendDocument" | "sendGame" | "sendGift" | "sendInvoice" | "sendLivePhoto" | "sendLocation" | "sendMediaGroup" | "sendMessage" | "sendMessageDraft" | "sendPaidMedia" | "sendPhoto" | "sendPoll" | "sendRichMessage" | "sendRichMessageDraft" | "sendSticker" | "sendVenue" | "sendVideo" | "sendVideoNote" | "sendVoice" | "setBusinessAccountBio" | "setBusinessAccountGiftSettings" | "setBusinessAccountName" | "setBusinessAccountProfilePhoto" | "setBusinessAccountUsername" | "setChatAdministratorCustomTitle" | "setChatDescription" | "setChatMemberTag" | "setChatMenuButton" | "setChatPermissions" | "setChatPhoto" | "setChatStickerSet" | "setChatTitle" | "setCustomEmojiStickerSetThumbnail" | "setGameScore" | "setManagedBotAccessSettings" | "setMessageReaction" | "setMyCommands" | "setMyDefaultAdministratorRights" | "setMyDescription" | "setMyName" | "setMyProfilePhoto" | "setMyShortDescription" | "setPassportDataErrors" | "setStickerEmojiList" | "setStickerKeywords" | "setStickerMaskPosition" | "setStickerPositionInSet" | "setStickerSetThumbnail" | "setStickerSetTitle" | "setUserEmojiStatus" | "setWebhook" | "stopMessageLiveLocation" | "stopPoll" | "transferBusinessAccountStars" | "transferGift" | "unbanChatMember" | "unbanChatSenderChat" | "unhideGeneralForumTopic" | "unpinAllChatMessages" | "unpinAllForumTopicMessages" | "unpinAllGeneralForumTopicMessages" | "unpinChatMessage" | "upgradeGift" | "uploadStickerFile" | "verifyChat" | "verifyUser">>;
13
- //# sourceMappingURL=api.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../generated/api.ts"],"names":[],"mappings":"AACA,wFAAwF;AACxF,eAAO,MAAM,oBAAoB,EAAG,MAAe,CAAC;AACpD,eAAO,MAAM,qBAAqB,y7HA0LxB,CAAC;AACX,MAAM,MAAM,kBAAkB,GAAG,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACtE,MAAM,MAAM,mBAAmB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AACvF,MAAM,MAAM,0BAA0B,GAAG;KAAG,CAAC,IAAI,kBAAkB,GAAG,mBAAmB;CAAE,CAAC;AAC5F,eAAO,MAAM,iBAAiB,8tQAAyI,CAAC"}
@@ -1,192 +0,0 @@
1
- /* eslint-disable */
2
- /** Generated from the official Telegram Bot API documentation. Do not edit manually. */
3
- export const TELEGRAM_API_VERSION = "10.2";
4
- export const TELEGRAM_METHOD_NAMES = [
5
- "addStickerToSet",
6
- "answerCallbackQuery",
7
- "answerChatJoinRequestQuery",
8
- "answerGuestQuery",
9
- "answerInlineQuery",
10
- "answerPreCheckoutQuery",
11
- "answerShippingQuery",
12
- "answerWebAppQuery",
13
- "approveChatJoinRequest",
14
- "approveSuggestedPost",
15
- "banChatMember",
16
- "banChatSenderChat",
17
- "close",
18
- "closeForumTopic",
19
- "closeGeneralForumTopic",
20
- "convertGiftToStars",
21
- "copyMessage",
22
- "copyMessages",
23
- "createChatInviteLink",
24
- "createChatSubscriptionInviteLink",
25
- "createForumTopic",
26
- "createInvoiceLink",
27
- "createNewStickerSet",
28
- "declineChatJoinRequest",
29
- "declineSuggestedPost",
30
- "deleteAllMessageReactions",
31
- "deleteBusinessMessages",
32
- "deleteChatPhoto",
33
- "deleteChatStickerSet",
34
- "deleteEphemeralMessage",
35
- "deleteForumTopic",
36
- "deleteMessage",
37
- "deleteMessageReaction",
38
- "deleteMessages",
39
- "deleteMyCommands",
40
- "deleteStickerFromSet",
41
- "deleteStickerSet",
42
- "deleteStory",
43
- "deleteWebhook",
44
- "editChatInviteLink",
45
- "editChatSubscriptionInviteLink",
46
- "editEphemeralMessageCaption",
47
- "editEphemeralMessageMedia",
48
- "editEphemeralMessageReplyMarkup",
49
- "editEphemeralMessageText",
50
- "editForumTopic",
51
- "editGeneralForumTopic",
52
- "editMessageCaption",
53
- "editMessageChecklist",
54
- "editMessageLiveLocation",
55
- "editMessageMedia",
56
- "editMessageReplyMarkup",
57
- "editMessageText",
58
- "editStory",
59
- "editUserStarSubscription",
60
- "exportChatInviteLink",
61
- "forwardMessage",
62
- "forwardMessages",
63
- "getAvailableGifts",
64
- "getBusinessAccountGifts",
65
- "getBusinessAccountStarBalance",
66
- "getBusinessConnection",
67
- "getChat",
68
- "getChatAdministrators",
69
- "getChatGifts",
70
- "getChatMember",
71
- "getChatMemberCount",
72
- "getChatMenuButton",
73
- "getCustomEmojiStickers",
74
- "getFile",
75
- "getForumTopicIconStickers",
76
- "getGameHighScores",
77
- "getManagedBotAccessSettings",
78
- "getManagedBotToken",
79
- "getMe",
80
- "getMyCommands",
81
- "getMyDefaultAdministratorRights",
82
- "getMyDescription",
83
- "getMyName",
84
- "getMyShortDescription",
85
- "getMyStarBalance",
86
- "getStarTransactions",
87
- "getStickerSet",
88
- "getUpdates",
89
- "getUserChatBoosts",
90
- "getUserGifts",
91
- "getUserPersonalChatMessages",
92
- "getUserProfileAudios",
93
- "getUserProfilePhotos",
94
- "getWebhookInfo",
95
- "giftPremiumSubscription",
96
- "hideGeneralForumTopic",
97
- "leaveChat",
98
- "logOut",
99
- "pinChatMessage",
100
- "postStory",
101
- "promoteChatMember",
102
- "readBusinessMessage",
103
- "refundStarPayment",
104
- "removeBusinessAccountProfilePhoto",
105
- "removeChatVerification",
106
- "removeMyProfilePhoto",
107
- "removeUserVerification",
108
- "reopenForumTopic",
109
- "reopenGeneralForumTopic",
110
- "replaceManagedBotToken",
111
- "replaceStickerInSet",
112
- "repostStory",
113
- "restrictChatMember",
114
- "revokeChatInviteLink",
115
- "savePreparedInlineMessage",
116
- "savePreparedKeyboardButton",
117
- "sendAnimation",
118
- "sendAudio",
119
- "sendChatAction",
120
- "sendChatJoinRequestWebApp",
121
- "sendChecklist",
122
- "sendContact",
123
- "sendDice",
124
- "sendDocument",
125
- "sendGame",
126
- "sendGift",
127
- "sendInvoice",
128
- "sendLivePhoto",
129
- "sendLocation",
130
- "sendMediaGroup",
131
- "sendMessage",
132
- "sendMessageDraft",
133
- "sendPaidMedia",
134
- "sendPhoto",
135
- "sendPoll",
136
- "sendRichMessage",
137
- "sendRichMessageDraft",
138
- "sendSticker",
139
- "sendVenue",
140
- "sendVideo",
141
- "sendVideoNote",
142
- "sendVoice",
143
- "setBusinessAccountBio",
144
- "setBusinessAccountGiftSettings",
145
- "setBusinessAccountName",
146
- "setBusinessAccountProfilePhoto",
147
- "setBusinessAccountUsername",
148
- "setChatAdministratorCustomTitle",
149
- "setChatDescription",
150
- "setChatMemberTag",
151
- "setChatMenuButton",
152
- "setChatPermissions",
153
- "setChatPhoto",
154
- "setChatStickerSet",
155
- "setChatTitle",
156
- "setCustomEmojiStickerSetThumbnail",
157
- "setGameScore",
158
- "setManagedBotAccessSettings",
159
- "setMessageReaction",
160
- "setMyCommands",
161
- "setMyDefaultAdministratorRights",
162
- "setMyDescription",
163
- "setMyName",
164
- "setMyProfilePhoto",
165
- "setMyShortDescription",
166
- "setPassportDataErrors",
167
- "setStickerEmojiList",
168
- "setStickerKeywords",
169
- "setStickerMaskPosition",
170
- "setStickerPositionInSet",
171
- "setStickerSetThumbnail",
172
- "setStickerSetTitle",
173
- "setUserEmojiStatus",
174
- "setWebhook",
175
- "stopMessageLiveLocation",
176
- "stopPoll",
177
- "transferBusinessAccountStars",
178
- "transferGift",
179
- "unbanChatMember",
180
- "unbanChatSenderChat",
181
- "unhideGeneralForumTopic",
182
- "unpinAllChatMessages",
183
- "unpinAllForumTopicMessages",
184
- "unpinAllGeneralForumTopicMessages",
185
- "unpinChatMessage",
186
- "upgradeGift",
187
- "uploadStickerFile",
188
- "verifyChat",
189
- "verifyUser"
190
- ];
191
- export const GENERATED_METHODS = Object.freeze(Object.fromEntries(TELEGRAM_METHOD_NAMES.map((name) => [name, name])));
192
- //# sourceMappingURL=api.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../generated/api.ts"],"names":[],"mappings":"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"}
@@ -1,62 +0,0 @@
1
- import { type TelegramMethodName } from "../../generated/api.js";
2
- import type { ApiCallArgs, ApiParams, ApiResult, TelegramResponse } from "./types.js";
3
- import type { Transport } from "./transport.js";
4
- export interface ApiHookContext {
5
- method: string;
6
- payload: unknown;
7
- startedAt: number;
8
- durationMs?: number;
9
- response?: TelegramResponse<unknown>;
10
- error?: unknown;
11
- }
12
- export interface ApiClientOptions {
13
- transport: Transport;
14
- hooks?: {
15
- onRequest?: (context: ApiHookContext) => void | Promise<void>;
16
- onResponse?: (context: ApiHookContext) => void | Promise<void>;
17
- onError?: (context: ApiHookContext) => void | Promise<void>;
18
- };
19
- }
20
- export type ApiMethods = {
21
- [M in TelegramMethodName]: (...args: ApiCallArgs<M>) => Promise<ApiResult<M>>;
22
- };
23
- /** A Telegram file downloaded through `getFile` + the transport download endpoint. */
24
- export interface DownloadedFile {
25
- /** Telegram `File` object as returned by `getFile`. */
26
- file: import("./types.js").File;
27
- /** Raw file bytes. Telegram currently caps downloads at 20 MB. */
28
- bytes: Uint8Array;
29
- /** The `file_path` used for the download; guaranteed for at least one hour. */
30
- filePath: string;
31
- /** Direct download URL (`https://api.telegram.org/file/bot<token>/<file_path>`). */
32
- url: string;
33
- /** Last path segment of `filePath`, e.g. `report.pdf`. */
34
- fileName: string;
35
- /** Byte length of `bytes`. */
36
- sizeBytes: number;
37
- /** Set when the caller asked Bot.downloadFile to persist the bytes to disk. */
38
- savedTo?: string;
39
- }
40
- export declare class ApiClient {
41
- readonly methods: ApiMethods;
42
- private readonly transport;
43
- private readonly hooks;
44
- constructor(options: ApiClientOptions);
45
- call<M extends TelegramMethodName>(method: M, ...args: ApiCallArgs<M>): Promise<ApiResult<M>>;
46
- request<M extends TelegramMethodName>(method: M, payload?: ApiParams<M>, signal?: AbortSignal, options?: {
47
- timeoutMs?: number;
48
- }): Promise<ApiResult<M>>;
49
- raw(method: string, payload?: Record<string, unknown>, signal?: AbortSignal): Promise<unknown>;
50
- /** Direct download URL for a `file_path` returned by `getFile`; undefined when the transport cannot download files. */
51
- fileUrl(filePath: string): string | undefined;
52
- /**
53
- * Resolves a `file_id` through `getFile` and downloads the bytes behind the
54
- * returned `file_path`. Throws a `TelegramError` (kind `validation`) when
55
- * Telegram returns no `file_path`, and a `TelegramNetworkError` when the
56
- * download itself fails.
57
- */
58
- downloadFile(fileId: string, options?: {
59
- signal?: AbortSignal;
60
- }): Promise<DownloadedFile>;
61
- }
62
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/client.ts"],"names":[],"mappings":"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"}