【发布时间】:2018-08-29 21:35:35
【问题描述】:
我有一个类似于@pic 的内联机器人,它工作正常,当我输入查询词时,我可以看到图片出现,所以我可以选择一个并发送到聊天室。问题是当我这样做时 - 发送了 2 个相同结果的副本。这只发生在 iOS 客户端上。在 Android、PC 和其他平台上,只发送一张图片。我检查了所有日志(机器人在 Node.js 中完成)并且对于每个请求我都有一个响应。尽管@pic bot 工作正常,但这似乎是一个 iOS 客户端错误。有人遇到过这个错误或知道是什么原因造成的吗?
answerInlineQuery 响应对象示例
{
"inline_query_id": "817150058382989968",
"results": [
{
"type": "photo",
"id": "se090",
"photo_url": "http://www.shadowera.com/secardbot361/se090.jpg",
"thumb_url": "http://www.shadowera.com/secardbot361/se090.jpg",
"photo_width": 344,
"photo_height": 480,
"title": "Tracking Gear",
"description": "You can view the hands of opposing players.",
"caption": "king"
},
{...
更新: 因此,我在 node.js @iosinlinebot 中创建了一个最简单的内联机器人(您可以尝试一下),并且您具有相同的行为:仅在 iOS 设备上,一旦点击结果,您将向聊天发送 2 张图像。 代码如下:
exports.handler = function(event, context) {
console.log(event);
const https = require("https");
let answer = {
inline_query_id: event.inline_query.id,
results: [{
type: "photo",
id: "abcd",
photo_url: "https://lh3.googleusercontent.com/jVXglyWWL5J2y1vRN-7Jy3_ozvvZc4w5486IAkbAIrWcNN_vn7YuIvhc1JDtGq43BqGl=s180",
thumb_url: "https://lh3.googleusercontent.com/jVXglyWWL5J2y1vRN-7Jy3_ozvvZc4w5486IAkbAIrWcNN_vn7YuIvhc1JDtGq43BqGl=s180",
photo_width: 180,
photo_height: 180,
title: "title",
description: "description",
caption: "test"
}],
cache_time:1
};
let postBody = JSON.stringify(answer);
let options = {
hostname: "api.telegram.org",
port: 443,
path: "/bot" + process.env.TOKEN + "/answerInlineQuery",
method: "POST",
headers: {
'Content-Type': 'application/json',
'Content-Length': postBody.length
}
};
let postreq = https.request(options, (res) => {
res.setEncoding('utf8');
const body = [];
res.on('data', (chunk) => body.push(chunk));
res.on('end', () => {
let j = body.join('');
console.log(j);
//context.done(JSON.parse(j));
});
});
postreq.write(postBody);
postreq.end();
};
这是一个事件对象(来自电报):
{
"update_id": 12345678,
"inline_query": {
"id": "123456789123456789",
"from": {
"id": 123456789,
"is_bot": false,
"first_name": "Firstname",
"username": "username",
"language_code": "it-IT"
},
"query": "test",
"offset": ""
}
}
更新:
感谢 Sedric Heidarizarei,我们能够找到问题所在。这是一个电报 iOS 客户端错误。如果InlineQueryResultPhoto 对象包含 caption 字段,您的用户将在聊天中发布 2 张图片。
【问题讨论】:
标签: ios client inline telegram telegram-bot