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', 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