【问题标题】:Why Telegram bot answerInlineQuery response Bad Request: STICKER_DOCUMENT_INVALID?为什么电报机器人 answerInlineQuery 响应错误请求:S​​TICKER_DOCUMENT_INVALID?
【发布时间】:2020-08-01 18:13:48
【问题描述】:

尝试使用贴纸回答内联查询导致错误 400 Bad Request: STICKER_DOCUMENT_INVALID

我的回复如下所示

const sticker = {
  type: 'sticker',
  id: '0',
  sticker_file_id: 'file_id_obtained_from_upload_sticker_method'
};

ctx.telegram.answerInlineQuery(query.id, [sticker]);

根据 Telegram 文档 here 和 Telegraf 文档 here,一切似乎都是正确的。实际上:

{
  code: 400,
  response: {
    ok: false,
    error_code: 400,
    description: 'Bad Request: STICKER_DOCUMENT_INVALID'
  },
  description: 'Bad Request: STICKER_DOCUMENT_INVALID',
  parameters: {},
  on: {
    method: 'answerInlineQuery',
    payload: { inline_query_id: '3997901566750938248', results: [Array] }
  }
}

谷歌或官方文档中没有答案。有人有类似经历吗?

之前使用uploadStickerFile方法提供了请求图片文件的url成功上传了贴纸。

【问题讨论】:

  • 您是否尝试使用存储在电报贴纸集中的sticker_id,也许它只是用电报贴纸集中的贴纸回答。 As uploadstickerfile in Telegram official doc "使用此方法上传带有贴纸的 .PNG 文件,以供以后在 createNewStickerSetaddStickerToSet 方法中使用"
  • 好点,似乎合乎逻辑。我尝试了两种情况: A: 1. 上传 png -> 接收 file_id。 2.直接回答,不加set(不成功)。 3.添加到由id设置(成功)。 B:1 上传 png -> 接收 file_id。 2.添加贴纸设置(成功)。 3 回答带有贴纸文件 ID(未成功)...

标签: node.js telegram


【解决方案1】:

上传 png 并将其添加到贴纸只需返回一个 file_id 用于 png 文件。但是您必须使用sendSticker 方法或使用getStickerSet 方法获取贴纸集中的.WEBP 并获取file_unique_id。看看Sticker in Telegram Doc 以及file_idfile_unique_id 之间的区别。

【讨论】:

  • 以前使用的方法uploadStickerFile 也得到了我file_unique_id,但是当我在 answerInlineQuery 中将它用作sticker_id 时,我得到了不同但错误TelegramError: 400: Bad Request: wrong remote file identifier specified: can't unserialize it. Wrong last symbol
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-12
  • 2023-03-17
相关资源
最近更新 更多