本帖最后由 riyad 于 2025-2-22 20:27 编辑
' z/ L; Z9 C* G
4 S ~# p- ~" M" ?! B# V此软件包只能在 Telegram 应用程序中使用。 由于非 Telegram 环境缺乏 Telegram 特有的特性,调用 retrieveLaunchParams 或 [postEvent 等方法将导致 错误。 不过,该软件包提供的实用工具可以帮助开发人员在 Telegram 之外开发应用程序 ,或者确定当前环境是否根本不是 Telegram 迷你应用程序。 isTMA要检查当前环境是否为 Telegram 迷你应用程序,开发人员可以使用 isTMA 函数。 它有两种工作模式:简单 和 完整。 简单在这种模式下,函数会尝试从环境中获取启动参数。 如果提取成功,该环境将被视为 Telegram 迷你应用程序。 简单模式是同步模式,返回一个布尔值。 - import { isTMA } from '@telegram-apps/bridge';0 [3 V# }7 h2 g: k' p$ ]! Z
1 z3 X% n( a* Z* R \. x' ?0 T' y- if (isTMA('simple')) {: G' e h6 Q0 `
- console.log('It\'s Telegram Mini Apps');7 i3 t# E9 Q2 g+ h9 ^% |1 i
- }
复制代码这种模式略显肤浅,但仍可满足大多数应用的需要。 要进行更 可靠的检查,请使用 [color=var(--vp-c-brand-1)]complete 模式。 完整在这种模式下,函数会调用 Telegram Mini Apps 特有的方法,并等待 方法特有的事件发生。 - import { isTMA } from '@telegram-apps/bridge';. @4 G. c/ W( d7 `
- 9 |$ N1 A/ {% K$ E/ k& q3 B
- if (await isTMA()) {
3 {4 M$ h9 ~# R0 M7 G% d - console.log('It\'s Telegram Mini Apps');: R U( [( u! X' B, V1 m- i+ y7 ^# k
- }
复制代码 函数等待事件的时间为 100 毫秒,但开发人员可以通过传递带有 timeout: number 属性的对象来更改时间 。- if (await isTMA({ timeout: 50 })) {+ M- n) W. A8 E5 M
- console.log('It\'s Telegram Mini Apps');0 k/ [0 h: Z# {, S- v8 U* ?
- }
复制代码 mockTelegramEnv该软件包提供了 mockTelegramEnv 函数,可模仿 Telegram 提供的环境。 它可以帮助开发人员在 [color=var(--vp-c-brand-1)]BotFather 中创建小应用程序记录,甚至无需创建记录即可开始构建应用程序。 该函数接受原始或解析格式的发射参数。 下面就是一个例子: - mockTelegramEnv({7 A& y1 S; l5 K1 \3 U
- themeParams: {/ d2 T i2 {/ P7 C, p
- accentTextColor: '#6ab2f2', ?: t; ?. j: Y! _0 }4 h6 N
- bgColor: '#17212b',
" S1 q: \4 K7 c7 o - buttonColor: '#5288c1',
$ ^$ t- a: I2 ~5 ~# G - buttonTextColor: '#ffffff',+ C% @" x4 v" {: r: M& [
- destructiveTextColor: '#ec3942',
; R' ^& ^) a6 c; Y - headerBgColor: '#17212b',
8 ^: x. l7 f* D& a/ T - hintColor: '#708499',0 ^8 P! g1 Z$ `* B+ U9 Q
- linkColor: '#6ab3f3',
) a5 e% E" [7 D( I7 Q: A - secondaryBgColor: '#232e3c',% }8 V. L* U5 O
- sectionBgColor: '#17212b',+ N/ v3 T, @( s& J: c8 `: G/ h! S g
- sectionHeaderTextColor: '#6ab3f3',0 y9 }' ~/ w( j1 m" [$ j: d# r
- subtitleTextColor: '#708499',
7 o2 n' N! E: ]4 n, |+ O: _4 Y0 v6 O3 U - textColor: '#f5f5f5',0 r# _; X; M1 D/ J( @
- },1 B2 c; m, s" K6 w* }# ~2 e
- initData: {; w/ m o' F3 j) k0 H
- user: {/ i% d8 H0 s5 r. O5 e/ H
- id: 99281932,! a: Z5 Z# ]$ z8 h f4 d0 t
- firstName: 'Andrew',
& ^( a# F) _) U* B" Z- a - lastName: 'Rogue',+ p7 [! S4 F% p3 ]) @4 g
- username: 'rogue',
+ x$ n9 ?! f( v3 n - languageCode: 'en',! u+ t7 M6 Z: y
- isPremium: true,
) B! z8 o0 Z" c1 A) Z - allowsWriteToPm: true,3 t+ r& d2 F- M. |1 |4 |
- },
% P5 U+ ~& Y$ S' | - hash: '89d6079ad6762351f38c6dbbc41bb53048019256a9443988af7a48bcad16ba31',
6 v. G( \5 D9 P! i. [ - authDate: new Date(1716922846000),
! }2 x$ P1 O6 b% I. t, o - startParam: 'debug',
8 C1 Y1 M2 n- d( R; K* Q8 [3 r - chatType: 'sender',+ _# ~, T! ?, i. a7 F9 k
- chatInstance: '8428209589180549439',+ U- z1 ^8 ~2 l6 b
- },
& I1 C# R' n7 b) e+ ]' r' Z - initDataRaw: new URLSearchParams([
" J% n" I7 ]- r* l - ['user', JSON.stringify({
' T* p. q2 \+ N2 G' o - id: 99281932,* k; o; u1 [! C" R% q A7 A6 R8 _# ?
- first_name: 'Andrew',* q: C0 Y0 A1 {: b
- last_name: 'Rogue',
0 v; \; X- y8 |7 w4 j3 Q7 U, [! H - username: 'rogue',9 r B* ]$ w5 T( Z& Y( m# {" s
- language_code: 'en',
/ J/ D! Z1 X: {) P - is_premium: true,, @8 y. Q D) E
- allows_write_to_pm: true,' F5 h* C- @' u
- })],' h* g1 n' _7 T. G& m9 t
- ['hash', '89d6079ad6762351f38c6dbbc41bb53048019256a9443988af7a48bcad16ba31'],
+ K. H+ c4 R3 y2 I7 [4 k* L - ['auth_date', '1716922846'],. K7 V8 G" _" E- _: R3 T
- ['start_param', 'debug'],
9 u2 Q$ a4 l0 y8 @& o - ['chat_type', 'sender'],3 E8 F3 w% B* i3 s$ x/ S/ [
- ['chat_instance', '8428209589180549439'],8 b2 U: L3 k/ {6 N1 ^
- ]).toString(),) t) f b8 @, `. S% o: Q
- version: '7.2',
) D: ^* a4 e c/ J7 P1 [ - platform: 'tdesktop',
1 M2 N6 g: v$ U( d" z - });
复制代码WARNING 该函数仅模仿 Telegram 环境行为。 它不会发送任何真正的 请求,也不会执行只能在 Telegram 应用程序中看到的操作。 0 p! G" G4 ?: q/ i3 V
|