Skip to content

弹窗交互

Mini App 提供多种弹窗和交互方法,用于显示消息、扫描二维码、读取剪贴板、处理支付等。

弹窗

showPopup

javascript
Telegram.WebApp.showPopup(params, callback)

显示自定义弹窗。

参数类型必填描述
paramsObject弹窗参数
params.titleString弹窗标题,最多 64 个字符
params.messageString弹窗消息文本,最多 256 个字符
params.buttonsArray按钮列表,最多 3 个按钮
callbackFunction关闭回调,参数为按钮 ID

按钮对象

字段类型必填描述
idString按钮 ID,最多 64 个字符,默认为空字符串
typeString按钮类型:"default""ok""close""cancel""destructive"
textString条件按钮文字(type"default""destructive" 时必填)
javascript
Telegram.WebApp.showPopup({
  title: '确认操作',
  message: '确定要执行此操作吗?',
  buttons: [
    { id: 'confirm', type: 'default', text: '确认' },
    { id: 'cancel', type: 'cancel' }
  ]
}, (buttonId) => {
  if (buttonId === 'confirm') {
    // 用户点击了确认
  }
});

showAlert

javascript
Telegram.WebApp.showAlert(message, callback)

显示警告弹窗,包含一个"确定"按钮。

参数类型必填描述
messageString警告消息文本
callbackFunction用户点击"确定"后的回调
javascript
Telegram.WebApp.showAlert('操作成功!', () => {
  console.log('用户已确认');
});

showConfirm

javascript
Telegram.WebApp.showConfirm(message, callback)

显示确认弹窗,包含"确定"和"取消"两个按钮。

参数类型必填描述
messageString确认消息文本
callbackFunction回调函数,参数 confirmed(Boolean)表示用户是否点击了确定
javascript
Telegram.WebApp.showConfirm('确定要删除吗?', (confirmed) => {
  if (confirmed) {
    deleteItem();
  }
});

QR 码扫描

showScanQrPopup

javascript
Telegram.WebApp.showScanQrPopup(params, callback)

显示 QR 码扫描弹窗。Bot API 6.9+

参数类型必填描述
paramsObject扫描参数
params.textString扫描界面的提示文字
callbackFunction扫描成功回调,参数为扫描到的文本。返回 true 关闭弹窗
javascript
Telegram.WebApp.showScanQrPopup({ text: '扫描二维码' }, (text) => {
  console.log('扫描结果:', text);
  return true; // 关闭扫描弹窗
});

closeScanQrPopup

javascript
Telegram.WebApp.closeScanQrPopup()

关闭 QR 码扫描弹窗。Bot API 6.9+

剪贴板

readTextFromClipboard

javascript
Telegram.WebApp.readTextFromClipboard(callback)

读取剪贴板中的文本内容。Bot API 6.9+

参数类型必填描述
callbackFunction回调函数,参数 text(String | null)为剪贴板内容
javascript
Telegram.WebApp.readTextFromClipboard((text) => {
  if (text) {
    console.log('剪贴板内容:', text);
  }
});

发票与支付

openInvoice

javascript
Telegram.WebApp.openInvoice(url, callback)

打开发票支付界面。

参数类型必填描述
urlString发票链接
callbackFunction支付完成回调,参数 status 为支付状态
javascript
Telegram.WebApp.openInvoice('https://t.me/$invoice_id', (status) => {
  if (status === 'paid') {
    showSuccess('支付成功');
  } else if (status === 'cancelled') {
    showInfo('支付已取消');
  }
});

支付状态值:

状态描述
paid支付成功
cancelled用户取消支付
failed支付失败
pending支付处理中

分享

shareToStory

javascript
Telegram.WebApp.shareToStory(media_url, params)

分享内容到故事。Bot API 7.8+

参数类型必填描述
media_urlString媒体文件 URL
paramsObject分享参数
params.textString附加文字
params.widget_linkObject小组件链接
params.widget_link.urlString链接 URL
params.widget_link.nameString显示名称

shareMessage

javascript
Telegram.WebApp.shareMessage(msg_id, callback)

分享 Bot 预先准备的消息。Bot API 8.0+

参数类型必填描述
msg_idString预先准备的消息 ID
callbackFunction回调函数,参数 sent(Boolean)

Emoji 状态

setEmojiStatus

javascript
Telegram.WebApp.setEmojiStatus(custom_emoji_id, params, callback)

为用户设置自定义 emoji 状态。Bot API 8.0+

参数类型必填描述
custom_emoji_idString自定义 emoji ID
paramsObject参数
params.durationInteger持续时间(秒)
callbackFunction回调函数,参数 set(Boolean)

requestEmojiStatusAccess

javascript
Telegram.WebApp.requestEmojiStatusAccess(callback)

请求设置 emoji 状态的权限。Bot API 8.0+

参数类型必填描述
callbackFunction回调函数,参数 granted(Boolean)

文件下载

downloadFile

javascript
Telegram.WebApp.downloadFile(params, callback)

请求下载文件。Bot API 8.0+

参数类型必填描述
paramsObject下载参数
params.urlString文件 URL
params.file_nameString建议的文件名
callbackFunction回调函数,参数 accepted(Boolean)
javascript
Telegram.WebApp.downloadFile({
  url: 'https://example.com/report.pdf',
  file_name: 'report.pdf'
}, (accepted) => {
  if (accepted) {
    console.log('用户已同意下载');
  }
});

权限请求

requestWriteAccess

javascript
Telegram.WebApp.requestWriteAccess(callback)

请求向用户发送消息的写入权限。Bot API 6.9+

参数类型必填描述
callbackFunction回调函数,参数 granted(Boolean)

requestContact

javascript
Telegram.WebApp.requestContact(callback)

请求用户的联系人信息(手机号)。Bot API 6.9+

参数类型必填描述
callbackFunction回调函数,参数 sent(Boolean)