虽然还有另一个按纽,但是今天我想先来玩玩内联模式
还记得 Day04 - Telegram 机器人的设定 文章中间有看到过的那个 Inline mode 吗,这个设定在 Bot Settings 中,找到它并点进去
然後按下 Turn inline mode on,开启後会像底下这样:
中间那颗 Edit inline placeholder 是设定显示的浮水印文字
按下按钮後,它会请你输入一段文字用来提示使用者
另外还会多两个设定,点一下 Back to Settings,你会发现多了两个按纽
Inline Location Data
开启的话,就会在使用者查询时传送他的位置,如果你是要做与位置相关的查询功能的话可以开启。其他的就不建议了,因为使用者不一定愿意提供位置给你,开了反而会增加使用的门槛
Inline Feedback
这个是设定有多少机率发送使用者的选择讯息给机器人,机率越高机器人要处理的讯息就越多,如果没有需要知道使用者按了哪个选项就设成 0% 吧
https://core.telegram.org/bots/api#inline-mode
恩恩,这个我们刚刚设定好了
https://core.telegram.org/bots/api#inlinequery
这个是从 TG 服务器传过来的讯息格式
参数 | 说明 |
---|---|
id |
这个查询的唯一 id |
from |
使用者的资讯 |
query |
输入的文字 |
offset |
查询的页数 |
chat_type |
聊天室的类型 |
location |
使用者的位置 |
我们来看看是不是真的长这样,先打开你的程序,然後在这中间加上 print_r($update);
,把服务器传过来的讯息印出来
按下执行後,在随便一个聊天室中打上你机器人的 username
之後你就会看到终端机出现了一坨讯息,确实跟官方写得差不多,不过缺少了 chat_type
这坨错误讯息是因为现在 $update
阵列里面没有叫做 message 的东东,只要在处理讯息的函式外面再加一个 if 就行了,如果这个东东存在我才执行这段程序
另外我们要来处理 inline_query
,所以要再加个 elseif,还有一个新的函式 processInlineQuery()
https://core.telegram.org/bots/api#answerinlinequery
这个是要回应给服务器的格式
参数 | 说明 |
---|---|
inline_query_id |
指定要回应的 id |
results |
查询的结果放在这里 |
cache_time |
快取时间,在这时间内不会再次查询不会通知机器人,而是直接拿刚刚的结果 |
is_personal |
如果设为 true,快取就会是相对於个人的,而不同人输入相同讯息时也会通知机器人 |
next_offset |
下一页的标记。如果查询结果很多,使用者往下滑时,服务器就会以这个 offset 再通知机器人。如果这是最後一页的话就填空字串 |
switch_pm_text |
显示在列表最上方的文字,点下後会转到私讯机器人,并且发送 /start |
switch_pm_parameter |
接在 /start 後的参数,只有机器人看的到 |
我们要在函式里回应服务器,告诉它查询的结果,先试试回应没有任何查询结果,记得打完这段先在按 Ctrl + C
终止程序,重新执行
再次在输入框使用机器人,就会看到刚刚设定的回应
https://core.telegram.org/bots/api#inlinequeryresult
查询的结果有多达 20 种的格式可以选择,我就示范一种就好了
https://core.telegram.org/bots/api#inlinequeryresultarticle
以文章的的格式来填查询结果
参数 | 说明 |
---|---|
type |
这个阵列内容的种类,必须填 article |
id |
这个查询结果的唯一 id |
title |
文章的标题 |
input_message_content |
按下选项後会发送的文字 |
reply_markup |
发送文字下方的按纽,这个明天会讲 |
url |
文章的连结 |
hide_url |
设定为 true 会在查询结果隐藏连结 |
description |
文章的说明 |
thumb_url |
文章缩图的 url |
thumb_width |
图片的宽度 |
thumb_height |
图片的高度 |
把这个东东填进 results 後就会像这样子:
查询时显示的样子:
如果有好几个查询结果的话就写成这样,记得 id 是唯一的,每个查询结果都不一样不可以重复
重新执行程序再查询就会变成一长串
>>: [经典回顾]网路异常疑机房失火,老板:「不是有防火墙?」
1.开启自己手机的解析度面板 安卓计算: 495ppi-->对应的dpi范围为480以上--&...
tags: ItIron2021 Javascript 前言 昨天我们用很粗略的方式简单说明了什麽是...
下图演示了针对生物识别系统的九个攻击点。从传感器到特徵提取器的生物特徵数据的回放是其中之一。 . “...
Python - 修正 python pandas 模组的 runtimeError: packag...
//兴趣记录一下~希望退休以後可以回味,各位别嫌弃,感谢各位!! /// //VLAN的重要性,实作...