本帖最后由 riyad 于 2025-2-22 20:27 编辑
1 W( R9 v; p" ~ M" B$ h
' {3 o6 v# b) V7 R5 m$ l8 `此软件包只能在 Telegram 应用程序中使用。 由于非 Telegram 环境缺乏 Telegram 特有的特性,调用 retrieveLaunchParams 或 [postEvent 等方法将导致 错误。 不过,该软件包提供的实用工具可以帮助开发人员在 Telegram 之外开发应用程序 ,或者确定当前环境是否根本不是 Telegram 迷你应用程序。 isTMA要检查当前环境是否为 Telegram 迷你应用程序,开发人员可以使用 isTMA 函数。 它有两种工作模式:简单 和 完整。 简单在这种模式下,函数会尝试从环境中获取启动参数。 如果提取成功,该环境将被视为 Telegram 迷你应用程序。 简单模式是同步模式,返回一个布尔值。 - import { isTMA } from '@telegram-apps/bridge';
/ K6 D! W& h* O; D1 p% X3 _
/ w" d( h& T7 B" ^* n* B- if (isTMA('simple')) {' L# _+ W. M& M z0 C) q
- console.log('It\'s Telegram Mini Apps');+ B8 i6 Y2 [1 F; q' T _+ v
- }
复制代码这种模式略显肤浅,但仍可满足大多数应用的需要。 要进行更 可靠的检查,请使用 [color=var(--vp-c-brand-1)]complete 模式。 完整在这种模式下,函数会调用 Telegram Mini Apps 特有的方法,并等待 方法特有的事件发生。 - import { isTMA } from '@telegram-apps/bridge';3 z: h9 d6 m0 i G% I5 A3 v
% d7 I" A- A( [( D* c- if (await isTMA()) {; k) V* P5 d6 \
- console.log('It\'s Telegram Mini Apps');" I6 W: @: n/ v8 ?5 V
- }
复制代码 函数等待事件的时间为 100 毫秒,但开发人员可以通过传递带有 timeout: number 属性的对象来更改时间 。- if (await isTMA({ timeout: 50 })) {
% E4 A2 q: O ?9 B - console.log('It\'s Telegram Mini Apps');! R5 b# S& Y% O1 y
- }
复制代码 mockTelegramEnv该软件包提供了 mockTelegramEnv 函数,可模仿 Telegram 提供的环境。 它可以帮助开发人员在 [color=var(--vp-c-brand-1)]BotFather 中创建小应用程序记录,甚至无需创建记录即可开始构建应用程序。 该函数接受原始或解析格式的发射参数。 下面就是一个例子: - mockTelegramEnv({
6 X# V/ k% S& _& \ - themeParams: {3 V: @4 k0 Q. [& Y& a1 z' F% w
- accentTextColor: '#6ab2f2',' S6 r. `- U# q% B& O
- bgColor: '#17212b',
) f) }/ Z9 I3 ]. P0 Y5 n* |7 {5 R - buttonColor: '#5288c1',3 I* ?; }7 r1 j% m2 _) k# g4 D
- buttonTextColor: '#ffffff',4 U) r6 \' |; T+ t" @% T. [
- destructiveTextColor: '#ec3942',
Z% E0 t& l5 x - headerBgColor: '#17212b',
1 f- \& j( }; v% k: k. j - hintColor: '#708499',
6 U0 v: \, Q( p8 N. r - linkColor: '#6ab3f3',7 @* w; A/ N/ |4 @ c4 D
- secondaryBgColor: '#232e3c', j1 y/ b( y' ]5 w# a: F* p
- sectionBgColor: '#17212b',0 ^; i5 c& V3 N, [: I5 x
- sectionHeaderTextColor: '#6ab3f3',/ E9 w5 Y$ l5 ?# t( B: h; p
- subtitleTextColor: '#708499',! E8 S( g3 Y) P, h9 [/ R- k- n! F5 C: R
- textColor: '#f5f5f5',
3 W" ]6 W3 u1 p T# E2 ] - },1 s) U4 s s6 p$ Z/ k4 S8 v
- initData: {
+ }0 s3 n$ s! v - user: {
# J0 ]! c# l: K% y' p ]" @ - id: 99281932,9 r! s$ q6 z, b+ `- @: y
- firstName: 'Andrew',$ k+ _. W. |+ @& p# ?
- lastName: 'Rogue',/ M" _& }4 i0 X8 p" {6 P" s& @% R
- username: 'rogue',
9 ^' ^4 x" B% x6 U- m% Y7 f - languageCode: 'en',
' b; ~5 _- y! ]. h - isPremium: true,
5 u$ `2 s0 x8 l5 H' X. M& P - allowsWriteToPm: true,
! \5 k1 q& X; @1 b @3 {/ K" H - },
7 S- J) s+ ^0 Y; V+ V% B - hash: '89d6079ad6762351f38c6dbbc41bb53048019256a9443988af7a48bcad16ba31',8 _9 G" U( S% a8 d
- authDate: new Date(1716922846000),4 [3 v8 ~! ]' R; J
- startParam: 'debug',
9 w' Q+ z( r# X! C0 @' i - chatType: 'sender',' z+ p# `+ R6 ?! g4 d! u# z& I7 \
- chatInstance: '8428209589180549439',- j9 M* i3 O1 H6 S8 s; p
- },9 C. i+ c, k/ E0 E& ^5 [" y+ l8 I
- initDataRaw: new URLSearchParams([# i( `' p6 c% F3 u$ o# O0 i, g
- ['user', JSON.stringify({- H5 t. w" g2 L1 V% }7 b
- id: 99281932,
2 f/ ]& e l4 {, Y( r. v - first_name: 'Andrew',
; Y; M+ b1 }2 ]) |7 c# H4 J; f - last_name: 'Rogue',6 `1 u- ~( n8 M: V- b8 Q3 J
- username: 'rogue',4 L' u- s3 C) G
- language_code: 'en',2 @& J: b- }. v# Y7 g
- is_premium: true,4 j# I2 w: k; f- ]
- allows_write_to_pm: true,) x/ u" ]' Z1 o$ f
- })],; s/ V4 X% v$ W% M+ |
- ['hash', '89d6079ad6762351f38c6dbbc41bb53048019256a9443988af7a48bcad16ba31'],
3 Y0 B1 i# V( x/ h( c; e! f - ['auth_date', '1716922846'],
2 m8 U( M/ b. V5 O - ['start_param', 'debug'],
9 n# Q( @( z& W2 w/ j. @. O - ['chat_type', 'sender'],: h* f/ B, ~% L: m! D/ h
- ['chat_instance', '8428209589180549439'],) Z' h* m# l5 J L0 h/ [
- ]).toString(),
6 f$ b3 @" x p4 w+ i2 I - version: '7.2',
" V' p% I( [0 V - platform: 'tdesktop',3 H: C. h2 ^. K! n8 d3 b& L7 P5 o2 A
- });
复制代码WARNING 该函数仅模仿 Telegram 环境行为。 它不会发送任何真正的 请求,也不会执行只能在 Telegram 应用程序中看到的操作。
3 e. j4 `6 a8 G |