class DemoBot extends WolfDispatcher { /** * Для відсилання зображень, локація, звідки ми їх шлемо повинна бути доступною з вебу. */ const IMG_SAVE_PATH = 'tmp/'; const IMG_URL = 'https://наш_хост/dev/demobot/'; /** * Catches and returns processed image to user * * @return void */ protected function actionProcessImage() { // Якусь фоточку зловлено? Насправді PhotoHandler метод відбудеться тільки за цієї умови // так, що ця перевірка надлишкова тут. Просто як ілюстрація. if ($this->isPhotoReceived()) { // Зберігаємо зображення до тимчасової директорії. Також ми могли б використати getPhoto() // задля того, щоб просто отримати в змінну вміст самого зображеня, а потім з ним щось робити, // але навіщо, якщо є швидкий savePhoto()? $photoSaveResult = $this->savePhoto(self::IMG_SAVE_PATH . $this->messageId . '.jpg'); // перевіряємо чи воно взагалі збереглось? if ($photoSaveResult) { //завантажуємо зображення $image = imagecreatefromjpeg($photoSaveResult); //робимо з зображенням різні штуки imagefilter($image, IMG_FILTER_BRIGHTNESS, 70); imagefilter($image, IMG_FILTER_GRAYSCALE); imagefilter($image, IMG_FILTER_MEAN_REMOVAL, 10); imagefilter($image, IMG_FILTER_SCATTER, 3, 5); imagefilter($image, IMG_FILTER_NEGATE); //перезберігаємо вже оброблене зображення $newImageName = $photoSaveResult . '_processed.jpg'; imagejpeg($image, $newImageName); $fullImageUrl = self::IMG_URL . $newImageName; //збираємо повідомлення $message = 'sendPhoto:[' . $fullImageUrl . ']{все тлєн}'; //відповідаємо ним в чатік $this->reply($message); } } } } $bot = new DemoBot($ubillingConfig->getAlterParam('DEMOBOT_TOKEN')); $bot->setPhotoHandler('actionProcessImage'); $bot->listen();