$server, 'connection' => $conn, 'fd' => $fd]); container()->instance(ConnectionObject::class, $conn); $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'; } if (strtolower($v->type) == 'close' && eval('return ' . $v->getRule() . ';')) { return true; } 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); } }