$server, "connection" => $conn, "fd" => $fd]); $dispatcher1 = new EventDispatcher(OnCloseEvent::class); $dispatcher1->setRuleFunction(function ($v) { return $v->connect_type == ctx()->getConnection()->getName() && eval("return " . $v->getRule() . ";"); }); $dispatcher = new EventDispatcher(OnSwooleEvent::class); $dispatcher->setRuleFunction(function ($v) { if ($v->getRule() == '') { return strtolower($v->type) == 'close'; } else { /** @noinspection PhpUnreachableStatementInspection */ if (strtolower($v->type) == 'close' && eval("return " . $v->getRule() . ";")) return true; else return false; } }); try { $obb_onebot = ZMConfig::get("global", "onebot") ?? ZMConfig::get("global", "modules")["onebot"] ?? ["status" => true, "single_bot_mode" => false, "message_level" => 99999]; if ($conn->getName() === 'qq' && $obb_onebot["status"] === true) { if ($obb_onebot["single_bot_mode"]) { LightCacheInside::set("connect", "conn_fd", -1); } } $dispatcher1->dispatchEvents($conn); $dispatcher->dispatchEvents($conn); } catch (Exception $e) { $error_msg = $e->getMessage() . " at " . $e->getFile() . "(" . $e->getLine() . ")"; Console::error(zm_internal_errcode("E00016") . "Uncaught exception " . get_class($e) . " when calling \"close\": " . $error_msg); Console::trace(); } catch (Error $e) { $error_msg = $e->getMessage() . " at " . $e->getFile() . "(" . $e->getLine() . ")"; Console::error(zm_internal_errcode("E00016") . "Uncaught " . get_class($e) . " when calling \"close\": " . $error_msg); Console::trace(); } ManagerGM::popConnect($fd); } }