fuc/src/Controllers/CallbackController.php
2025-02-23 13:30:57 +08:00

49 lines
1.4 KiB
PHP
Executable File

<?php
declare(strict_types=1);
namespace App\Controllers;
use App\Models\Config;
use App\Services\Bot\Telegram\Telegram;
use GuzzleHttp\Exception\GuzzleException;
use MaxMind\Db\Reader\InvalidDatabaseException;
use Psr\Http\Message\ResponseInterface;
use Slim\Http\Response;
use Slim\Http\ServerRequest;
use Smarty\Exception as SmartyException;
use Telegram\Bot\Exceptions\TelegramSDKException;
final class CallbackController extends BaseController
{
/**
* @throws InvalidDatabaseException
* @throws SmartyException
* @throws TelegramSDKException|GuzzleException
*/
public function index(ServerRequest $request, Response $response, array $args): ResponseInterface
{
return match ($args['type']) {
'telegram' => $this->telegram($request, $response, $args),
default => $response->withStatus(404)->write($this->view()->fetch('404.tpl')),
};
}
/**
* @throws TelegramSDKException
* @throws InvalidDatabaseException|GuzzleException
*/
public function telegram(ServerRequest $request, Response $response, array $args): ResponseInterface
{
$token = $request->getQueryParam('token');
if (Config::obtain('enable_telegram') && $token === Config::obtain('telegram_request_token')) {
Telegram::process($request);
return $response->withStatus(204);
}
return $response->withStatus(400);
}
}