PHP Longman电报机器人无法通过Webhooks下载文件

问题描述

我在Yii2项目中使用的是longman / telegram-bot软件包。

class GenericmessageCommand extends SystemCommand
{
    /**
     * @var string
     */
    protected $name = 'genericmessage';

    /**
     * @var string
     */
    protected $description = 'Handle generic message';

    /**
     * @var string
     */
    protected $version = '1.0.0';

    /**
     * Main command execution
     *
     * @return ServerResponse
     */
    public function execute(): ServerResponse
    {
        $message = $this->getMessage();

        if (in_array($message->getType(),['audio','document','photo','video','voice'])) {

            $doc = call_user_func([$message,'get' . $message->getType()]);
            ($message->getType() === 'photo') && $doc = end($doc);

            $photoId = $doc->file_id;

            $download_path = $this->telegram->getDownloadpath();
            $file    = Request::getFile(['file_id' => $photoId]);
            if ($file->isOk() && Request::downloadFile($file->getResult())) {
                return $this->replytochat(' file is located at: ' . $download_path . '/' . $file->getResult()->getFilePath());
            } else {
                return $this->replytochat('Failed to download.');
            }
        }
    }
}

就是这样

当我使用getUpdates方法https://github.com/php-telegram-bot/core#getupdates-installation时工作正常

但是当我使用WebHooks时它不起作用。即使我从我的机器人程序中得到了相同的答案,它也说“确定”并且“文件位于...”,但是没有这样的文件

解决方法

由于webhook使用Yii2 Advanced的后端....它将所有文件存储在后端(因为我的webhook在后端查看),但是我在前端搜索它们(因为我很愚蠢)。