'群主', 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 { $user = $chatMemberData['user'] ?? null; if (!$user || !isset($chatMemberData['status'])) { throw new \InvalidArgumentException('无效的 Telegram ChatMember 数据结构'); } 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), ] ); } }