本帖最后由 riyad 于 2025-2-22 20:27 编辑
0 y1 v0 ]% C$ L _4 {$ Z# r1 d6 W! x0 T
此软件包只能在 Telegram 应用程序中使用。 由于非 Telegram 环境缺乏 Telegram 特有的特性,调用 retrieveLaunchParams 或 [postEvent 等方法将导致 错误。 不过,该软件包提供的实用工具可以帮助开发人员在 Telegram 之外开发应用程序 ,或者确定当前环境是否根本不是 Telegram 迷你应用程序。 isTMA要检查当前环境是否为 Telegram 迷你应用程序,开发人员可以使用 isTMA 函数。 它有两种工作模式:简单 和 完整。 简单在这种模式下,函数会尝试从环境中获取启动参数。 如果提取成功,该环境将被视为 Telegram 迷你应用程序。 简单模式是同步模式,返回一个布尔值。 - import { isTMA } from '@telegram-apps/bridge';
- Q' f3 k# _0 J- Z9 K; s - 5 N2 W# g- ~; Z
- if (isTMA('simple')) {( \$ `+ M3 e4 j2 I
- console.log('It\'s Telegram Mini Apps');! U: {; f! ?. }9 I
- }
复制代码这种模式略显肤浅,但仍可满足大多数应用的需要。 要进行更 可靠的检查,请使用 [color=var(--vp-c-brand-1)]complete 模式。 完整在这种模式下,函数会调用 Telegram Mini Apps 特有的方法,并等待 方法特有的事件发生。 - import { isTMA } from '@telegram-apps/bridge';8 b) e; V2 S) ^+ K$ F5 d7 e
9 z7 \9 c1 Y4 A* L* i- if (await isTMA()) {+ ?7 |% P1 `$ l$ R# H* C8 X- ]
- console.log('It\'s Telegram Mini Apps');
) `+ d# W, k7 A# W2 d; Y9 ] - }
复制代码 函数等待事件的时间为 100 毫秒,但开发人员可以通过传递带有 timeout: number 属性的对象来更改时间 。- if (await isTMA({ timeout: 50 })) {
) B* o$ f2 r& X- }' c6 q: m; h - console.log('It\'s Telegram Mini Apps');4 ]# a" i8 A* |& j7 f
- }
复制代码 mockTelegramEnv该软件包提供了 mockTelegramEnv 函数,可模仿 Telegram 提供的环境。 它可以帮助开发人员在 [color=var(--vp-c-brand-1)]BotFather 中创建小应用程序记录,甚至无需创建记录即可开始构建应用程序。 该函数接受原始或解析格式的发射参数。 下面就是一个例子: - mockTelegramEnv({
% u) ` R2 R% C9 c4 @ - themeParams: {
& |8 f& N [# v7 [$ P5 Y- P% M - accentTextColor: '#6ab2f2',
+ U1 d7 [0 H [( ]% Q: W - bgColor: '#17212b',
; D# D0 e2 L% Q - buttonColor: '#5288c1',
6 t' ~( h& M! h8 K - buttonTextColor: '#ffffff',
, }! P3 Z$ V' N( A - destructiveTextColor: '#ec3942',2 }8 @% f, O) k6 G& t) h
- headerBgColor: '#17212b',4 d( R3 W& J. B+ ^% k6 i3 V5 n; Q
- hintColor: '#708499',
9 h! b1 B/ c+ t( c7 _ - linkColor: '#6ab3f3',% }9 Z1 R2 Q. D3 [
- secondaryBgColor: '#232e3c',+ U3 x/ I' s1 G; ? r
- sectionBgColor: '#17212b',
) @) Y* U- M' q0 y$ f: p - sectionHeaderTextColor: '#6ab3f3',4 `2 N1 e% L: G* \* I! m7 d" A. I' K# f
- subtitleTextColor: '#708499',) s" O- U! s$ k$ B, U# g, r
- textColor: '#f5f5f5',
2 ^8 Y& M, o" d% K - },$ _' ]/ p7 U- ]% @+ r3 ^' B- H+ T
- initData: {8 S& B& X, r. \& N/ {+ _
- user: {
8 A8 T7 F5 r- A5 a - id: 99281932,
9 h' `9 K& \* q, T! e7 U5 u - firstName: 'Andrew',
% R3 M& z" p: X4 ]/ r - lastName: 'Rogue',
( Q" Y4 [; R2 O- j b6 d$ } - username: 'rogue',1 n& ]& S% r* J8 S% Z$ K# o+ ^
- languageCode: 'en',
: [0 z/ O* _0 l4 ?+ g - isPremium: true,; V8 U9 _+ ^: q w* e; q0 k- p. K7 U+ `
- allowsWriteToPm: true,
- `7 j$ A6 u# | - },, G$ i( b: G( o% k0 j, H
- hash: '89d6079ad6762351f38c6dbbc41bb53048019256a9443988af7a48bcad16ba31'," I% f/ O9 @& y
- authDate: new Date(1716922846000),
; v1 A+ w& t, t0 D& @ - startParam: 'debug',6 o5 Y( u. ^* u/ m5 u" G
- chatType: 'sender',
8 p/ `& [6 Y# Z; i) g6 j) y - chatInstance: '8428209589180549439',
1 x: }. @" a4 G% u1 |9 l - }, S3 E( F* @* K. t M6 E
- initDataRaw: new URLSearchParams([# S2 X- i4 u' q" c. l# |
- ['user', JSON.stringify({3 H [4 l4 j4 G4 u5 d3 B- r
- id: 99281932,
, b7 V( @7 N0 i2 @ o- ~ - first_name: 'Andrew',0 T e( e$ a2 D4 Y1 L: q1 O
- last_name: 'Rogue',
2 ]) O$ d$ q2 r2 Y4 W - username: 'rogue',6 {$ I+ \3 v% m1 X4 |% M' H
- language_code: 'en',
5 k- Q# p s% Q9 C6 Q - is_premium: true,( [- J8 y* b# {& |' R
- allows_write_to_pm: true,
6 ^9 E$ x: ?& Y7 G3 X+ G - })],
$ @ h6 X6 K$ M$ G- S6 ^ - ['hash', '89d6079ad6762351f38c6dbbc41bb53048019256a9443988af7a48bcad16ba31'],
& c4 f5 E: j, d0 D - ['auth_date', '1716922846'],& k% U( X4 X) q1 T0 e
- ['start_param', 'debug'],
; O* D3 X- {6 ^1 c - ['chat_type', 'sender'],
8 a7 Z3 l: T J! y - ['chat_instance', '8428209589180549439'],# _9 O& j9 A2 m! {
- ]).toString(),
9 ~& B E, J3 N% m4 D - version: '7.2',
" r# f8 B7 M( D' M( k+ N - platform: 'tdesktop',
/ y% q6 }4 Z7 C9 @! q7 y2 a - });
复制代码WARNING 该函数仅模仿 Telegram 环境行为。 它不会发送任何真正的 请求,也不会执行只能在 Telegram 应用程序中看到的操作。
, p4 Y9 ]0 S; y2 C4 r# _9 R |