本帖最后由 riyad 于 2025-2-22 20:27 编辑 9 }+ y' q- E" Y
4 o. S0 \. d( k/ n, ]
此软件包只能在 Telegram 应用程序中使用。 由于非 Telegram 环境缺乏 Telegram 特有的特性,调用 retrieveLaunchParams 或 [postEvent 等方法将导致 错误。 不过,该软件包提供的实用工具可以帮助开发人员在 Telegram 之外开发应用程序 ,或者确定当前环境是否根本不是 Telegram 迷你应用程序。 isTMA要检查当前环境是否为 Telegram 迷你应用程序,开发人员可以使用 isTMA 函数。 它有两种工作模式:简单 和 完整。 简单在这种模式下,函数会尝试从环境中获取启动参数。 如果提取成功,该环境将被视为 Telegram 迷你应用程序。 简单模式是同步模式,返回一个布尔值。 - import { isTMA } from '@telegram-apps/bridge';$ u0 w P& N3 M3 k" F0 m% u
- $ p' A( ?7 C0 }# o- N3 U0 X4 B5 c% g
- if (isTMA('simple')) {2 n' i" \) r. ]
- console.log('It\'s Telegram Mini Apps');4 v: n7 H% f9 k7 D( Q- d$ M
- }
复制代码这种模式略显肤浅,但仍可满足大多数应用的需要。 要进行更 可靠的检查,请使用 [color=var(--vp-c-brand-1)]complete 模式。 完整在这种模式下,函数会调用 Telegram Mini Apps 特有的方法,并等待 方法特有的事件发生。 - import { isTMA } from '@telegram-apps/bridge';
9 b% g# u% S! b5 T4 q R/ _% h - ' L2 F+ p; B' L$ m4 _
- if (await isTMA()) {+ M$ U& x$ N4 E" S9 ?7 D' m) Q1 P, o# [
- console.log('It\'s Telegram Mini Apps');
# N, _( V( c6 M! d6 k2 O/ w - }
复制代码 函数等待事件的时间为 100 毫秒,但开发人员可以通过传递带有 timeout: number 属性的对象来更改时间 。- if (await isTMA({ timeout: 50 })) {
% O v2 ]. k0 i. C- q: X6 j: V6 X - console.log('It\'s Telegram Mini Apps');
) e7 G1 y g* `6 x - }
复制代码 mockTelegramEnv该软件包提供了 mockTelegramEnv 函数,可模仿 Telegram 提供的环境。 它可以帮助开发人员在 [color=var(--vp-c-brand-1)]BotFather 中创建小应用程序记录,甚至无需创建记录即可开始构建应用程序。 该函数接受原始或解析格式的发射参数。 下面就是一个例子: - mockTelegramEnv({
+ [* r* a q7 W9 I0 x - themeParams: {
4 n* O# ^3 e2 ^, V - accentTextColor: '#6ab2f2',* y4 A9 ]/ p" h& }" z: _- G$ D
- bgColor: '#17212b',* A2 B5 A3 u7 ] b6 P
- buttonColor: '#5288c1',7 Z6 F5 ] m% D4 k; e
- buttonTextColor: '#ffffff',
: O" v# _' n9 z; N* u3 S4 C; a - destructiveTextColor: '#ec3942',
7 N0 X- A& p* o. i - headerBgColor: '#17212b',5 Z4 ~# N+ f7 W/ ]4 Q Y% b
- hintColor: '#708499',: H2 ]& X; }4 ]- Z
- linkColor: '#6ab3f3',
2 D0 m! M; A4 A9 H0 P - secondaryBgColor: '#232e3c',4 g5 ^5 S3 N, x. w& b5 h6 h
- sectionBgColor: '#17212b',
+ C2 T1 M$ n( O$ T+ e4 ^2 \8 ?- _ - sectionHeaderTextColor: '#6ab3f3',* v) E+ A$ L) [& B/ Z, G+ S
- subtitleTextColor: '#708499',- m3 L! }8 k+ j) c7 ?! N2 C, @4 c
- textColor: '#f5f5f5',! D" i6 o B. @7 k+ j; |' l
- },
3 }, i2 j. y! M0 u" `1 ]. m0 V - initData: {1 m) g+ V% z: n# m3 E% Q
- user: {
2 M7 S ?6 G) d - id: 99281932,) S4 F4 u0 m1 M! I1 g9 v% Q" @; O7 W
- firstName: 'Andrew',6 M4 d2 O g4 e+ J, H
- lastName: 'Rogue',
" Q8 Q2 d: p# x3 P) t - username: 'rogue',
0 b& B/ G9 E$ g$ ^ - languageCode: 'en',
# V* n* k. \% s" X - isPremium: true,- Q& R, T7 M4 Z' m# M
- allowsWriteToPm: true,- @3 Z3 ]" D( S% _. `& P& v4 r& I" h
- },
4 w$ o5 G* v0 Y. P - hash: '89d6079ad6762351f38c6dbbc41bb53048019256a9443988af7a48bcad16ba31',
& t0 _' |" A' {' N - authDate: new Date(1716922846000),$ E0 u4 B b$ C: W( h
- startParam: 'debug',
# G) z' I3 p/ [( D( e% w - chatType: 'sender',* ]- k+ ]. U1 Y9 W
- chatInstance: '8428209589180549439',
3 ~: }/ [" w2 p y - },' T8 ?5 H) P; O
- initDataRaw: new URLSearchParams([5 ~4 C1 g$ |0 } |1 |. Z
- ['user', JSON.stringify({5 k8 }& c$ E/ k/ Q3 T% Y
- id: 99281932,
) j2 N0 s4 R1 J - first_name: 'Andrew',
8 Z& j4 f' k. d( K$ H - last_name: 'Rogue',3 e& N2 x. z. F9 w: @# f* I' \" |$ \
- username: 'rogue',
& J- E9 j% S+ ^- D: B: n - language_code: 'en',. ]7 }! ^# S1 V2 w. S3 ^* R
- is_premium: true,
7 |: N: W1 q; {, U" w - allows_write_to_pm: true,9 F U2 T( x6 F- I4 d
- })],1 {* M/ V, X- P @9 Z+ m1 g, D+ f
- ['hash', '89d6079ad6762351f38c6dbbc41bb53048019256a9443988af7a48bcad16ba31'],2 B2 d# {4 W; B# l
- ['auth_date', '1716922846'],/ ]- b+ m& C8 [
- ['start_param', 'debug'],* N. @; a7 Z; i* v' R: u
- ['chat_type', 'sender'],
! H, b9 X5 O: z" ? - ['chat_instance', '8428209589180549439'],
. y: J$ N4 F) T* I6 {- V& ]8 ~ - ]).toString(),
3 V9 X; P4 C9 t9 n1 m t! R - version: '7.2',6 P3 F/ {' a* x \
- platform: 'tdesktop',
0 z) `' x% V( _8 w* i* ^/ m- W - });
复制代码WARNING 该函数仅模仿 Telegram 环境行为。 它不会发送任何真正的 请求,也不会执行只能在 Telegram 应用程序中看到的操作。
, Q, T2 Q! ~: ?. M" X1 B |