MCPcopy Create free account
hub / github.com/Epic0522/Codex-Remote-Contact / normalizeOneBotEvent

Function normalizeOneBotEvent

src/server.js:5662–5699  ·  view source on GitHub ↗
(payload)

Source from the content-addressed store, hash-verified

5660}
5661
5662function normalizeOneBotEvent(payload) {
5663 const segments = Array.isArray(payload.message) ? payload.message : [];
5664 const hasAudioSegment = segments.some((segment) => ["record", "voice", "audio"].includes(String(segment?.type || "").toLowerCase()));
5665 const textFromSegments = segments
5666 .filter((segment) => segment?.type === "text")
5667 .map((segment) => segment.data?.text ?? "")
5668 .join("")
5669 .trim();
5670 const hasAtSegment = segments.some((segment) => segment?.type === "at");
5671 const hasSelfAtSegment = segments.some((segment) => isSelfAtSegment(segment, payload.self_id));
5672 const atTargets = segments
5673 .filter((segment) => segment?.type === "at")
5674 .map((segment) => segment.data?.qq ?? segment.data?.id ?? segment.data?.uin)
5675 .filter((target) => target != null)
5676 .map(String);
5677 const replySegment = segments.find((segment) => segment?.type === "reply");
5678 const replyMessageId = replySegment?.data?.id || replySegment?.data?.message_id;
5679 const messageType = payload.message_type === "private" ? "private_message" : "group_message";
5680 const images = extractOneBotImageInputs(payload);
5681
5682 return {
5683 type: payload.message_type === "group" && hasSelfAtSegment ? "group_at" : messageType,
5684 selfId: payload.self_id == null ? undefined : String(payload.self_id),
5685 groupId: payload.group_id == null ? undefined : String(payload.group_id),
5686 senderId: payload.user_id == null ? undefined : String(payload.user_id),
5687 senderName: payload.sender?.card || payload.sender?.nickname || String(payload.user_id || "群友"),
5688 text: payload.raw_message || textFromSegments,
5689 images,
5690 hasAudioSegment,
5691 hasAtSegment,
5692 hasSelfAtSegment,
5693 atTargets,
5694 hasReplySegment: Boolean(replySegment),
5695 replyMessageId: replyMessageId == null ? undefined : String(replyMessageId),
5696 isReplyToSelf: false,
5697 raw: payload
5698 };
5699}
5700
5701function isSelfAtSegment(segment, selfId) {
5702 if (segment?.type !== "at" || selfId == null) return false;

Callers 1

handleApiFunction · 0.85

Calls 2

isSelfAtSegmentFunction · 0.85
extractOneBotImageInputsFunction · 0.85

Tested by

no test coverage detected