"use client" import { useState } from "react" import { Card, CardContent } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Switch } from "@/components/ui/switch" import { Slider } from "@/components/ui/slider" import { Checkbox } from "@/components/ui/checkbox" import { Plus, Trash2, Clock } from "lucide-react" import { Badge } from "@/components/ui/badge" import { useViewMode } from "@/app/components/LayoutWrapper" export interface LikeRulesData { enableAutoLike: boolean likeInterval: number maxLikesPerDay: number likeOldContent: boolean contentTypes: string[] keywordFilters: string[] friendGroups: string[] excludedGroups: string[] timeRanges: { id: string; start: string; end: string }[] randomizeInterval: boolean minInterval: number maxInterval: number } interface LikeRulesProps { initialData: LikeRulesData onSave: (data: LikeRulesData) => void } export function LikeRules({ initialData, onSave }: LikeRulesProps) { const [formData, setFormData] = useState(initialData) const [newKeyword, setNewKeyword] = useState("") const { viewMode } = useViewMode() const handleContentTypeToggle = (type: string) => { const updatedTypes = formData.contentTypes.includes(type) ? formData.contentTypes.filter((t) => t !== type) : [...formData.contentTypes, type] setFormData({ ...formData, contentTypes: updatedTypes }) } const addKeywordFilter = () => { if (newKeyword.trim() && !formData.keywordFilters.includes(newKeyword.trim())) { setFormData({ ...formData, keywordFilters: [...formData.keywordFilters, newKeyword.trim()], }) setNewKeyword("") } } const removeKeywordFilter = (keyword: string) => { setFormData({ ...formData, keywordFilters: formData.keywordFilters.filter((k) => k !== keyword), }) } const addTimeRange = () => { const newId = String(formData.timeRanges.length + 1) setFormData({ ...formData, timeRanges: [...formData.timeRanges, { id: newId, start: "09:00", end: "18:00" }], }) } const updateTimeRange = (id: string, field: "start" | "end", value: string) => { setFormData({ ...formData, timeRanges: formData.timeRanges.map((range) => (range.id === id ? { ...range, [field]: value } : range)), }) } const removeTimeRange = (id: string) => { if (formData.timeRanges.length > 1) { setFormData({ ...formData, timeRanges: formData.timeRanges.filter((range) => range.id !== id), }) } } return (

开启后,系统将按照设定的规则自动点赞

setFormData({ ...formData, enableAutoLike: checked })} />

选择需要自动点赞的内容类型

handleContentTypeToggle("text")} />
handleContentTypeToggle("image")} />
handleContentTypeToggle("video")} />

设置每日最多点赞次数,建议不超过100次

setFormData({ ...formData, maxLikesPerDay: value[0] })} className="flex-1" />
{formData.maxLikesPerDay}次

设置点赞之间的时间间隔(分钟)

setFormData({ ...formData, likeInterval: value[0] })} className="flex-1" />
{formData.likeInterval}分钟

开启后,系统将在设定范围内随机选择点赞间隔

setFormData({ ...formData, randomizeInterval: checked })} />
{formData.randomizeInterval && (
setFormData({ ...formData, minInterval: Number.parseInt(e.target.value) || 1 })} min={1} className="mt-1" />
setFormData({ ...formData, maxInterval: Number.parseInt(e.target.value) || 1 })} min={formData.minInterval + 1} className="mt-1" />
)}

设置自动点赞的时间段

{formData.timeRanges.map((range) => (
updateTimeRange(range.id, "start", e.target.value)} className="w-32" /> updateTimeRange(range.id, "end", e.target.value)} className="w-32" />
))}

添加包含特定关键词的内容才会被点赞

setNewKeyword(e.target.value)} placeholder="输入关键词" className="flex-1" onKeyDown={(e) => e.key === "Enter" && addKeywordFilter()} />
{formData.keywordFilters.length === 0 && ( 未设置关键词过滤 )} {formData.keywordFilters.map((keyword) => ( {keyword} ))}

开启后,系统会点赞朋友圈中较旧的内容

setFormData({ ...formData, likeOldContent: checked })} />
) }