无意中发现telegram上居然也能发布小程序和游戏了,感觉发现了新大陆一样,自己好玩试了下。
参考教程
要在telegram上开发一个mini App
或者game
,创建一个专属于你的机器人就必不可少了。
创建bot机器人
在telegram上搜索@BotFather
或者点击该这里BotFather。
如下图:
进入对话框后,我们可以选择菜单
-> /newbot
。或者在输入栏直接输入/newbot
来创建机器人,只需要根据它的回复一步一步操作就可以了。
创建miniApp或者game
创建好机器人后,再创建miniApp或者game,看你的个人需求。
方法和上面创建bot一样,给@BotFather
发消息就行了。上面给出的参考教程中也有。
部署开发环境
这里的开发环境不是你的miniApp或者game的开发环境,而是用来对bot机器人的。这里可以用Node.js
和Deno
两种方式开发,我这里用的是Deno
。
部署方法参考链接
Deno教程
剩下的看教程,这里不多说,直接说重点
机器人回复用户一个游戏
1、 创建一个ts脚本,复制粘贴下面内容,注意:TOKEN
和GAME_SHORT_NAME
需要换成你自己的。
1 | import {Bot} from "https://deno.land/x/grammy@v1.25.0/mod.ts"; |
2、打开终端,输入下面命令执行脚本
1 | deno run --allow-net ts脚本.ts |
3、回到tg,给你自己的机器人,注意,不是BotFather
,是你自己创建的机器人,发送/start
消息,这个时候你就会看到你的机器人给你回了一个游戏的对话框,如下图:
;
这个时候你会发现,你点击游戏下面的play
按钮没有任何反应,这个时候我们需要在上面代码中给按钮添加回调事件。
4、给按钮添加回调
在上面脚本中加入下面代码:
1 | const GAME_URL = "https://lengmo714.top"; |
保存代码后重新执行脚本,再给机器人发送/start
,这个时候再点play
按钮,你就会发现跳转到你自己提前准备好的游戏链接了。
机器人回复用户一个miniApp
1、 创建一个ts脚本,复制粘贴下面内容,注意:TOKEN
和跳转到mini app的链接需要换成你自己的。
1 | import {Bot} from "https://deno.land/x/grammy@v1.25.0/mod.ts"; |
2、打开终端,输入下面命令执行脚本
1 | deno run --allow-net ts脚本.ts |
3、回到tg,给你自己的机器人,注意,不是BotFather
,是你自己创建的机器人,发送/start
消息,这个时候你就会看到你的机器人给你回了一个miniapp的对话框,如下图:
;
4、点击打开应用,就会跳转到你之前设置好的mini app
添加内联按钮
比我们在发送/start
,需要机器人回复我们一些可选的操作,这个时候我们可以在机器人的回复中添加几个选择按钮,这个就是内联按钮。
示例代码:
1 | import {Bot,InlineKeyboard} from "https://deno.land/x/grammy@v1.25.0/mod.ts"; |
运行脚本后出现如下图:
我们可以发现,这三个按钮时垂直排列,如果我们需要让这三个按钮排成一排,修改上面keyboard
中的row()
即可,如下代码
1 | const keyboard = new InlineKeyboard().text("开始游戏1", "one") |
注意:这里的添加的按钮有好几种类型:.text
、.game
、.url
、webApp
目前我只用到这四种,可能还有其他的。
机器人回复的内容为图片+文字+按钮
今天在telegram上看见一个非常喜欢的回复,如下图,这是别人的。
是由一个gif动画+文字+三个按钮组成,而且还能获取到发送用户的id。感觉非常nice,于是自己也参考这个做了个类似的,代码如下:
1 | import { Bot,InlineKeyboard } from "https://deno.land/x/grammy@v1.25.0/mod.ts"; |
最后运行如下图:
优化
从上图可以看到我们已经创建了3个内联按钮,但是按钮都是用的url方式,按钮的右上角是一个箭头的标识。这里用起来没有什么问题,但是和我找的参考不一样。人家按钮的右上角是两个窗口的标识,这里需要对按钮的类型就行修改就行了,代码如下:
1 | const keyboard = new InlineKeyboard() |
修改后就可以看到效果如下:
这才是我们最终想要的效果。