今天的东东是个超多层的阵列,足以让脑袋死机,请做好心理准备再服用
又回到 apiRequestJson()
啦,昨天因为阵列只有一层,所以不需要 json_encode()
,但第两层以上的阵列就需要自己转成 JSON
foreach ($parameters as &$val) {
if (is_array($val)) {
$val = json_encode($val);
}
}
在中间加上这坨东东就能把第二层以上的阵列转成 JSON 了
https://core.telegram.org/bots/api#replykeyboardmarkup
这个是一个用来装按钮的阵列,里面有很多选项可以用,我来一个个介绍
keyboard
先看到 keyboard
这格,你可以发现是两层的阵列再加上叫做 KeyboardButton 的东东
这两层阵列分别代表着「列」跟「栏」,「列」可以填很多个阵列,「栏」也可以填很多个阵列
keyboard
里装着很多列,列里面又有很多栏,最後栏里面放着 KeyboardButton
如果你觉得挤在一起写你会看不懂,你也可以写成这样
resize_keyboard
这个选项会调整这个装按钮的区域高度,原本预设这个区域是固定高度的,按钮会去补满高度变得很肥
设成 true 以後,就会是这个区域配合按钮调整高度
不过按钮多到了原本的高度,设定这个选项就没用了
因为最高的高度就是这样,这个区域会变成滑动的方式
one_time_keyboard
如果把这个选项设成 true,使用者按下按钮後,这个区域就会自动收起来
input_field_placeholder
这个选项可以修改输入框的浮水印文字
selective
这个比较有趣,设定为 true 之後可以指定某个人,让整个群组里只有某个人有按钮可以按
有三种方式可以指定
使用 username 标记
我的画面:
其他人的画面:
回覆讯息
我的画面:
其他人的画面:
使用 Deep Link 标记
我的画面:
其他人的画面:
https://core.telegram.org/bots/api#replykeyboardremove
这个东东是 ReplyKeyboardMarkup 反面,把按钮区域移除
而且也可以指定人,官方说明是说可以用在投票时,已投票的人就移除他的按纽区域
用回覆指定的话就像这样:
不指定人的话,就是移除所有人的按钮区域
https://core.telegram.org/bots/api#keyboardbutton
这个是按纽本体,也是一个阵列,而且又有一堆选项
这次就一次写出来,然後每个都按按看吧
text
不用我解释吧,就是按纽上的文字
request_contact
这个选项设成 true 的话,那颗按纽就会变成发送使用者的电话号码
如果有需要用电话号码验证的话,用这个会很方便
但是要注意,使用者是可以不透过这颗按纽发送电话号码的,而且可以发送别人的电话号码
如果有需要限定只能发送那个帐号的号码,那就要在机器人收到讯息後,检查 uid 是否相符
request_location
设成 true 的话,按纽就会变成发送使用者的位置
这个不一定是真的位置,不适合做为验证地区用
因为机器人无法分辨你是按下方按纽发送的,还是用发送位置发送的,而且位置也很好伪造
有需要请使用者填地址的话还是请他用输入的比较好,用座标很容易变成别人家的地址
request_poll
这个选项里面要放一个叫做 KeyboardButtonPollType 的阵列,如果直接填 quiz
regular
会出错
Request has failed with error 400: Bad Request: can't parse keyboard button: Field "request_poll" must be of type Object
'request_poll' => 'quiz' // X
'request_poll' => ['type' => 'quiz'] // O
设定成 quiz 会限制使用者「透过这颗按纽」只能建立测验
设定成 regular 会限制使用者「透过这颗按纽」只能建立投票
如果填其他东西或是空字串,就会两个都可以建立
不过这个也是可以不透过按钮发送的
所以机器人在收到讯息後还是要检查讯息是不是正确的格式
<<: Re: 新手让网页 act 起来: Day16 - 探索 useState (2)
>>: [DAY 26] 用google sheet 做简易UI介面(1/3)
NestJs - Guard 验证分为两种,登入权限验证以及角色验证 举例说明:我们将 API 分为...
CheatSheet 小技巧 因为大家其实不太会被指令 所以在网路上有一个小小的P5 cheatsh...
Q_Q .. styled.div 产生一个 div,写 css style,放进变数里变成 co...
接续昨天 我们在按钮的action里加入这段程序码, 变数tag-1的部分就是按下1时呈现的数字是刚...
今天上班搞一整天,只解出一个BUG,结果下班以後脑袋比较灵光? 总之今天是顺利解出来了 题号:129...