English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE คนไทย Français русский

回答

收藏

Telegram 小程序 | TypeScript @telegram-apps/bridge | 环境

开源社区 开源社区 8082 人阅读 | 0 人回复 | 2025-02-22

本帖最后由 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 迷你应用程序。 简单模式是同步模式,返回一个布尔值。

  1. import { isTMA } from '@telegram-apps/bridge';0 [3 V# }7 h2 g: k' p$ ]! Z

  2. 1 z3 X% n( a* Z* R  \. x' ?0 T' y
  3. if (isTMA('simple')) {: G' e  h6 Q0 `
  4.   console.log('It\'s Telegram Mini Apps');7 i3 t# E9 Q2 g+ h9 ^% |1 i
  5. }
复制代码

这种模式略显肤浅,但仍可满足大多数应用的需要。 要进行更 可靠的检查,请使用 [color=var(--vp-c-brand-1)]complete 模式。

完整

在这种模式下,函数会调用 Telegram Mini Apps 特有的方法,并等待 方法特有的事件发生。

  1. import { isTMA } from '@telegram-apps/bridge';. @4 G. c/ W( d7 `
  2. 9 |$ N1 A/ {% K$ E/ k& q3 B
  3. if (await isTMA()) {
    3 {4 M$ h9 ~# R0 M7 G% d
  4.   console.log('It\'s Telegram Mini Apps');: R  U( [( u! X' B, V1 m- i+ y7 ^# k
  5. }
复制代码
函数等待事件的时间为 100 毫秒,但开发人员可以通过传递带有 timeout: number 属性的对象来更改时间 。
  1. if (await isTMA({ timeout: 50 })) {+ M- n) W. A8 E5 M
  2.   console.log('It\'s Telegram Mini Apps');0 k/ [0 h: Z# {, S- v8 U* ?
  3. }
复制代码
mockTelegramEnv

该软件包提供了 mockTelegramEnv 函数,可模仿 Telegram 提供的环境。 它可以帮助开发人员在 [color=var(--vp-c-brand-1)]BotFather 中创建小应用程序记录,甚至无需创建记录即可开始构建应用程序。

该函数接受原始或解析格式的发射参数。 下面就是一个例子:

  1. mockTelegramEnv({7 A& y1 S; l5 K1 \3 U
  2.   themeParams: {/ d2 T  i2 {/ P7 C, p
  3.     accentTextColor: '#6ab2f2',  ?: t; ?. j: Y! _0 }4 h6 N
  4.     bgColor: '#17212b',
    " S1 q: \4 K7 c7 o
  5.     buttonColor: '#5288c1',
    $ ^$ t- a: I2 ~5 ~# G
  6.     buttonTextColor: '#ffffff',+ C% @" x4 v" {: r: M& [
  7.     destructiveTextColor: '#ec3942',
    ; R' ^& ^) a6 c; Y
  8.     headerBgColor: '#17212b',
    8 ^: x. l7 f* D& a/ T
  9.     hintColor: '#708499',0 ^8 P! g1 Z$ `* B+ U9 Q
  10.     linkColor: '#6ab3f3',
    ) a5 e% E" [7 D( I7 Q: A
  11.     secondaryBgColor: '#232e3c',% }8 V. L* U5 O
  12.     sectionBgColor: '#17212b',+ N/ v3 T, @( s& J: c8 `: G/ h! S  g
  13.     sectionHeaderTextColor: '#6ab3f3',0 y9 }' ~/ w( j1 m" [$ j: d# r
  14.     subtitleTextColor: '#708499',
    7 o2 n' N! E: ]4 n, |+ O: _4 Y0 v6 O3 U
  15.     textColor: '#f5f5f5',0 r# _; X; M1 D/ J( @
  16.   },1 B2 c; m, s" K6 w* }# ~2 e
  17.   initData: {; w/ m  o' F3 j) k0 H
  18.     user: {/ i% d8 H0 s5 r. O5 e/ H
  19.       id: 99281932,! a: Z5 Z# ]$ z8 h  f4 d0 t
  20.       firstName: 'Andrew',
    & ^( a# F) _) U* B" Z- a
  21.       lastName: 'Rogue',+ p7 [! S4 F% p3 ]) @4 g
  22.       username: 'rogue',
    + x$ n9 ?! f( v3 n
  23.       languageCode: 'en',! u+ t7 M6 Z: y
  24.       isPremium: true,
    ) B! z8 o0 Z" c1 A) Z
  25.       allowsWriteToPm: true,3 t+ r& d2 F- M. |1 |4 |
  26.     },
    % P5 U+ ~& Y$ S' |
  27.     hash: '89d6079ad6762351f38c6dbbc41bb53048019256a9443988af7a48bcad16ba31',
    6 v. G( \5 D9 P! i. [
  28.     authDate: new Date(1716922846000),
    ! }2 x$ P1 O6 b% I. t, o
  29.     startParam: 'debug',
    8 C1 Y1 M2 n- d( R; K* Q8 [3 r
  30.     chatType: 'sender',+ _# ~, T! ?, i. a7 F9 k
  31.     chatInstance: '8428209589180549439',+ U- z1 ^8 ~2 l6 b
  32.   },
    & I1 C# R' n7 b) e+ ]' r' Z
  33.   initDataRaw: new URLSearchParams([
    " J% n" I7 ]- r* l
  34.     ['user', JSON.stringify({
    ' T* p. q2 \+ N2 G' o
  35.       id: 99281932,* k; o; u1 [! C" R% q  A7 A6 R8 _# ?
  36.       first_name: 'Andrew',* q: C0 Y0 A1 {: b
  37.       last_name: 'Rogue',
    0 v; \; X- y8 |7 w4 j3 Q7 U, [! H
  38.       username: 'rogue',9 r  B* ]$ w5 T( Z& Y( m# {" s
  39.       language_code: 'en',
    / J/ D! Z1 X: {) P
  40.       is_premium: true,, @8 y. Q  D) E
  41.       allows_write_to_pm: true,' F5 h* C- @' u
  42.     })],' h* g1 n' _7 T. G& m9 t
  43.     ['hash', '89d6079ad6762351f38c6dbbc41bb53048019256a9443988af7a48bcad16ba31'],
    + K. H+ c4 R3 y2 I7 [4 k* L
  44.     ['auth_date', '1716922846'],. K7 V8 G" _" E- _: R3 T
  45.     ['start_param', 'debug'],
    9 u2 Q$ a4 l0 y8 @& o
  46.     ['chat_type', 'sender'],3 E8 F3 w% B* i3 s$ x/ S/ [
  47.     ['chat_instance', '8428209589180549439'],8 b2 U: L3 k/ {6 N1 ^
  48.   ]).toString(),) t) f  b8 @, `. S% o: Q
  49.   version: '7.2',
    ) D: ^* a4 e  c/ J7 P1 [
  50.   platform: 'tdesktop',
    1 M2 N6 g: v$ U( d" z
  51. });
复制代码

WARNING

该函数仅模仿 Telegram 环境行为。 它不会发送任何真正的 请求,也不会执行只能在 Telegram 应用程序中看到的操作。

0 p! G" G4 ?: q/ i3 V
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则