'群主', self::STATUS_ADMINISTRATOR => '管理员', self::STATUS_MEMBER => '成员', self::STATUS_RESTRICTED => '受限成员', self::STATUS_LEFT => '已离开', self::STATUS_KICKED => '被踢出', default => '未知', }; } public static function updateOrCreateFromTelegram(array $chatMemberData, int|string $chatId): self { // 改进的安全判断方式 if ( !isset($chatMemberData['user']) || !is_array($chatMemberData['user']) || !isset($chatMemberData['user']['id']) || !isset($chatMemberData['status']) ) { throw new \InvalidArgumentException('无效的 Telegram ChatMember 数据结构'); } $user = $chatMemberData['user']; return self::updateOrCreate( [ 'chat_id' => $chatId, 'user_id' => $user['id'], ], [ 'first_name' => $user['first_name'] ?? null, 'last_name' => $user['last_name'] ?? null, 'username' => $user['username'] ?? null, 'status' => $chatMemberData['status'], 'is_bot' => $user['is_bot'] ?? false, 'language_code' => $user['language_code'] ?? null, 'raw_data' => json_encode($chatMemberData, JSON_UNESCAPED_UNICODE), ] ); } }