本帖最后由 riyad 于 2025-2-22 20:27 编辑 % d9 y$ l" }& L+ E: ~% ^/ F9 {0 L5 \
2 z8 D, r% A& r# S( s$ ^% z1 Y此软件包只能在 Telegram 应用程序中使用。 由于非 Telegram 环境缺乏 Telegram 特有的特性,调用 retrieveLaunchParams 或 [postEvent 等方法将导致 错误。 不过,该软件包提供的实用工具可以帮助开发人员在 Telegram 之外开发应用程序 ,或者确定当前环境是否根本不是 Telegram 迷你应用程序。 isTMA要检查当前环境是否为 Telegram 迷你应用程序,开发人员可以使用 isTMA 函数。 它有两种工作模式:简单 和 完整。 简单在这种模式下,函数会尝试从环境中获取启动参数。 如果提取成功,该环境将被视为 Telegram 迷你应用程序。 简单模式是同步模式,返回一个布尔值。 - import { isTMA } from '@telegram-apps/bridge';% F/ L6 t5 |/ f( {9 ?
- 1 N- f% B+ y3 k U
- if (isTMA('simple')) {+ J/ G l2 D$ y) l9 E7 ^
- console.log('It\'s Telegram Mini Apps');' c3 i8 s9 o$ n6 T0 H4 z" K
- }
复制代码这种模式略显肤浅,但仍可满足大多数应用的需要。 要进行更 可靠的检查,请使用 [color=var(--vp-c-brand-1)]complete 模式。 完整在这种模式下,函数会调用 Telegram Mini Apps 特有的方法,并等待 方法特有的事件发生。 - import { isTMA } from '@telegram-apps/bridge';( f4 e( p6 ~( N- H" u! K
- ' I4 }" b. a0 K1 w- y
- if (await isTMA()) {
/ [& T4 L4 \7 T" ~ C- u8 M - console.log('It\'s Telegram Mini Apps');7 v9 @+ G9 X- ]0 ?; w; P
- }
复制代码 函数等待事件的时间为 100 毫秒,但开发人员可以通过传递带有 timeout: number 属性的对象来更改时间 。- if (await isTMA({ timeout: 50 })) {
6 u) ] w- O0 Y - console.log('It\'s Telegram Mini Apps');
; a3 ]' C2 `9 X - }
复制代码 mockTelegramEnv该软件包提供了 mockTelegramEnv 函数,可模仿 Telegram 提供的环境。 它可以帮助开发人员在 [color=var(--vp-c-brand-1)]BotFather 中创建小应用程序记录,甚至无需创建记录即可开始构建应用程序。 该函数接受原始或解析格式的发射参数。 下面就是一个例子: - mockTelegramEnv({
) G' O$ ~) K! n1 b* D( D* e - themeParams: {* j* L( @7 h" }/ D+ E
- accentTextColor: '#6ab2f2',. X& C+ t2 \$ m. I$ I( g$ b% q
- bgColor: '#17212b',) c1 Y1 R# p& F: H/ ]0 j7 |; d# q/ H
- buttonColor: '#5288c1',
( C8 }9 Q7 Q! }) d - buttonTextColor: '#ffffff',8 C+ L2 d* C \# h4 `) q
- destructiveTextColor: '#ec3942',1 P$ @6 d& V" P& Z f/ x+ W
- headerBgColor: '#17212b',
# q" U% B2 m$ W' ]4 m$ N( N& E! j - hintColor: '#708499',
! Z) H' \, m; i - linkColor: '#6ab3f3',
5 F# f9 v) E: L. \/ h3 J i - secondaryBgColor: '#232e3c',& A7 Y( }- M' v
- sectionBgColor: '#17212b',
2 m. w3 [! W* l% B8 i - sectionHeaderTextColor: '#6ab3f3',/ h0 T" s) F1 W7 H! f
- subtitleTextColor: '#708499',
, u0 Z' g' x7 s+ O5 L - textColor: '#f5f5f5',; n" y7 V6 u/ {
- },
4 F- H) O. k5 E* M- f$ ^ - initData: {8 A( o, R! a+ V$ v+ q
- user: {, g8 Y2 E5 f& h2 c
- id: 99281932,9 i t# `4 o [& h
- firstName: 'Andrew',. f7 f% B& B. c9 E( l4 I2 u8 T
- lastName: 'Rogue',
3 e+ [! }0 Y! S5 S* [- x - username: 'rogue',4 S: j# D' c0 V; `6 j' O
- languageCode: 'en',( _4 Y/ H; \) Y6 V, {
- isPremium: true,
. L4 V, Y" L {% B# |8 N - allowsWriteToPm: true,- z: p" h6 C# M9 d. P1 q( Q
- },2 ]" r# Y% A6 y4 ?5 j% {0 a
- hash: '89d6079ad6762351f38c6dbbc41bb53048019256a9443988af7a48bcad16ba31',
( v5 A0 m7 o8 L - authDate: new Date(1716922846000),5 B Y+ a6 g3 F7 }* g, \: h
- startParam: 'debug',
) }9 u) {+ L& Q - chatType: 'sender',
. ]) w% t3 v$ w: o( I3 i1 Y- k! K( n - chatInstance: '8428209589180549439',
. w% Y+ T8 O+ ^ - },0 M9 n5 {4 O- W* L7 K" a4 a5 w; v
- initDataRaw: new URLSearchParams([
7 ~: N; |+ K4 n& A7 @ - ['user', JSON.stringify({
. ^% y6 Z6 e1 g# l" d! U - id: 99281932,' h, ]/ K2 Z, E/ I- d( k2 ^
- first_name: 'Andrew',
1 k8 k R" N; [) W& B& T - last_name: 'Rogue',
# L, a: D# x0 N8 G, v$ J - username: 'rogue',, T( h" y+ i+ e/ Y$ O
- language_code: 'en',
- E& l2 U5 u; L3 p3 [ - is_premium: true,
& n6 R8 d% g9 ~. Z - allows_write_to_pm: true,
' K" u1 r5 `& w5 G - })],, B# s; H( k$ r
- ['hash', '89d6079ad6762351f38c6dbbc41bb53048019256a9443988af7a48bcad16ba31'],3 O3 `3 Z. q2 B$ I/ k1 }- J
- ['auth_date', '1716922846'],. G- t( X/ w" X4 k2 p% i
- ['start_param', 'debug'],* }; Y$ W* Y3 d8 s" k
- ['chat_type', 'sender'],
# g3 a: L$ S$ w8 S; \) r+ z - ['chat_instance', '8428209589180549439'],
) c1 |: {8 x8 E6 x7 _$ ?$ S - ]).toString(),: a' }3 |* [' {( E7 m+ B
- version: '7.2',2 s0 C$ r- p" J- Z
- platform: 'tdesktop',
H) {2 W& X7 }7 J. u7 a( u$ o+ h - });
复制代码WARNING 该函数仅模仿 Telegram 环境行为。 它不会发送任何真正的 请求,也不会执行只能在 Telegram 应用程序中看到的操作。 2 K4 o/ ]8 ?! i& _1 P
|