如何配置Telegram Mini-App?

准备工作:tg账号,H5页面(需要https)

官方文档:core.telegram.org/bots/webapp...

1. 新建tg机器人

接入miniapp需要有tg的机器人,所以第一步需要创建机器人

1.1.1. 搜索BotFather

1.1.2. 输入/newbot新建机器人

  • 根据提示输入即可

    1. 输入昵称。
    2. 输入机器人账号,全平台唯一,且需要以 bot 结尾。

1.1.3. 通过机器人账号即可搜索到当前机器人

2. 新建mini app

新建app完成后,后续可以通过 /editapp 进行修改

2.1.1. 在BotFather中输入/newapp,绑定机器人

2.1.2. 根据提示绑定其他信息

  • 网页title,显示在网页顶部
  • app描述
  • 图片
  • GIF动图

2.1.3. 绑定URL地址

  • 绑定部署好的页面

3. 在列表显示open按钮

在列表显示open按钮,需要给机器人绑定miniapp

3.1.1. 在bot setting中启用MiniApp

4. 配置菜单按钮 /setmenubutton

4.1.1. 在BotFather输入/setmenubutton

  • 选择机器人
  • 根据提示设置menu
  • 设置成功检查机器人

5. 编辑开始时机器人的描述

5.1.1. 选择机器人 /mybot

5.1.2. 编辑机器人

5.1.3. 编辑描述文本和图片

6. 监听用户发送

  • 以go语言为例
go 复制代码
package main

import (
	"log"

	tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
)

func main() {
	bot, err := tgbotapi.NewBotAPI("YourBotToken")
	if err != nil {
		log.Panic(err)
	}

	bot.Debug = true

	log.Printf("Authorized on account %s", bot.Self.UserName)

	u := tgbotapi.NewUpdate(0)
	u.Timeout = 60

	updates := bot.GetUpdatesChan(u)

	for update := range updates {
		if update.Message != nil {
			log.Printf("[%s] %s", update.Message.From.UserName, update.Message.Text)

			if update.Message.IsCommand() {
				switch update.Message.Command() {
				case "start":
					msg := tgbotapi.NewMessage(update.Message.Chat.ID, "欢迎使用本机器人!")
					bot.Send(msg)
				case "help":
					msg := tgbotapi.NewMessage(update.Message.Chat.ID, "本机器人可以帮你做一些事情,例如...")
					bot.Send(msg)
				default:
					msg := tgbotapi.NewMessage(update.Message.Chat.ID, "未知命令,请输入 /start 或 /help")
					bot.Send(msg)
				}
			} else {
				msg := tgbotapi.NewMessage(update.Message.Chat.ID, "你发送的不是命令,我不太明白呢。")
				bot.Send(msg)
			}
		}
	}
}
  • 运行
go 复制代码
go run main.go

7. 前端在miniapp中获取用户信息

7.1. 直接引入script

7.1.1. 引入api

xml 复制代码
<script src="https://telegram.org/js/telegram-web-app.js"></script>

7.1.2. 获取用户信息

javascript 复制代码
window.Telegram.WebApp.initDataUnsafe.user

7.2. npm下载sdk

7.2.1. 下载

css 复制代码
npm i @telegram-apps/sdk

7.2.2. 使用

kotlin 复制代码
import { init, retrieveLaunchParams } from '@telegram-apps/sdk'
// TG SDK init
init()
var data = retrieveLaunchParams();
console.log("Launch data:", data);

8. 显示TG返回按钮

8.1.1. 挂载

  • App.vue
ts 复制代码
onMounted(() => {
  backButton.mount() // 挂载返回按钮
  // 监听返回按钮点击
  backButton.onClick(() => {
    router.back();
  })
})

8.1.2. 显示返回按钮

  • 导航路由中判断是否需要显示按钮
ts 复制代码
const notBackButton = ['/wallet', '/login']
router.beforeEach(async (to, from, next) => {
  // 更新返回按钮
  if (!import.meta.env.DEV) {
    if (notBackButton.includes(to.path)) {
      hideBackButton()
    } else {
      showBackButton()
    }
  }
)

9. 调试app

  • 以macos为例,快速点击设置按钮5次,开启debug web app
  • 在miniapp中右键即可选择检查元素
相关推荐
IT_陈寒6 分钟前
JavaScript性能优化:7个被低估的V8引擎技巧让你的代码提速50%
前端·人工智能·后端
bigHead-6 分钟前
前端双屏显示与通信
开发语言·前端·javascript
顾安r12 分钟前
1.1 脚本网页 战推棋
java·前端·游戏·html·virtualenv
一颗小青松13 分钟前
vue 腾讯地图经纬度转高德地图经纬度
前端·javascript·vue.js
Justin3go8 小时前
HUNT0 上线了——尽早发布,尽早发现
前端·后端·程序员
怕浪猫9 小时前
第一章 JSX 增强特性与函数组件入门
前端·javascript·react.js
铅笔侠_小龙虾9 小时前
Emmet 常用用法指南
前端·vue
钦拆大仁9 小时前
跨站脚本攻击XSS
前端·xss
VX:Fegn089510 小时前
计算机毕业设计|基于springboot + vue校园社团管理系统(源码+数据库+文档)
前端·数据库·vue.js·spring boot·后端·课程设计
ChangYan.11 小时前
直接下载源码但是执行npm run compile后报错
前端·npm·node.js