import { Button } from '@heroui/button'; import { Card, CardBody, CardHeader } from '@heroui/card'; import { Popover, PopoverContent, PopoverTrigger } from '@heroui/popover'; import { Snippet } from '@heroui/snippet'; import { motion } from 'motion/react'; import { IoCode } from 'react-icons/io5'; import OneBotDisplayMeta from '@/components/onebot/display_card/meta'; import { getEventName, isOB11Event } from '@/utils/onebot'; import { timestampToDateString } from '@/utils/time'; import type { AllOB11WsResponse, OB11AllEvent, OB11Request, } from '@/types/onebot'; import OneBotMessage from './message'; import OneBotNotice from './notice'; import OneBotDisplayResponse from './response'; const itemVariants = { hidden: { opacity: 0, scale: 0.8, y: 50 }, visible: { opacity: 1, scale: 1, y: 0, transition: { type: 'spring' as const, stiffness: 300, damping: 20 }, }, }; function RequestComponent ({ data: _ }: { data: OB11Request }) { return
Request消息,暂未适配
; } export interface OneBotItemRenderProps { data: AllOB11WsResponse[] index: number style: React.CSSProperties } export const getItemSize = (event: OB11AllEvent['post_type']) => { if (event === 'meta_event') { return 100; } if (event === 'message') { return 180; } if (event === 'request') { return 100; } if (event === 'notice') { return 100; } if (event === 'message_sent') { return 250; } return 100; }; const renderDetail = (data: AllOB11WsResponse) => { if (isOB11Event(data)) { switch (data.post_type) { case 'meta_event': return ; case 'message': return ; case 'request': return ; case 'notice': return ; case 'message_sent': return ; default: return
未知类型的消息
; } } return ; }; const OneBotItemRender = ({ data, index, style }: OneBotItemRenderProps) => { const msg = data[index]; const isEvent = isOB11Event(msg); return (
{isEvent ? getEventName(msg.post_type) : '请求响应'}
{isEvent && timestampToDateString(msg.time)}
{JSON.stringify(msg, null, 2) .split('\n') .map((line, i) => ( {line} ))}
{renderDetail(msg)}
); }; export default OneBotItemRender;