class Clacky::Channel::Adapters::Feishu::WSClient

def handle_data_frame(frame, headers)

def handle_data_frame(frame, headers)
  return unless headers["type"] == "event"
  payload_bytes = frame[:payload]
  return unless payload_bytes && !payload_bytes.empty?
  event_json = payload_bytes.force_encoding("UTF-8")
  event_data = JSON.parse(event_json)
  # Send ACK response
  send_frame(
    seq_id: frame[:seq_id],
    log_id: frame[:log_id],
    service: frame[:service],
    method: 1,
    headers: frame[:headers],
    payload: JSON.generate({ code: 200 })
  )
  event_type = event_data.dig("header", "event_type") || event_data["type"]
  Clacky::Logger.info("[feishu-ws] Dispatching event: #{event_type}")
  @on_event&.call(event_data)
rescue JSON::ParserError => e
  Clacky::Logger.warn("[feishu-ws] Failed to parse event payload: #{e.message}")
end