"use client"; import React, { useState } from "react"; import Link from "next/link"; import { Book, Bot, LayoutDashboard, MessageSquare, Shield, Terminal, Zap, Menu, X, ChevronRight, Sparkles } from "lucide-react"; import { cn } from "@/lib/utils"; const sections = [ { id: "getting-started", title: "Getting Started", icon: , items: [ { id: "introduction", title: "Introduction" }, { id: "inviting-bot", title: "Inviting the Bot" }, ], }, { id: "commands", title: "Commands", icon: , items: [ { id: "leveling-commands", title: "Leveling" }, { id: "utility-commands", title: "Utility" }, { id: "fun-commands", title: "Fun & AI" }, ], }, { id: "dashboard", title: "Dashboard", icon: , items: [ { id: "leaderboard", title: "Leaderboard" }, { id: "leveling-system", title: "Leveling System" }, ], }, ]; export default function DocsPage() { const [mobileMenuOpen, setMobileMenuOpen] = useState(false); const [activeSection, setActiveSection] = useState("introduction"); React.useEffect(() => { const observer = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { setActiveSection(entry.target.id); } }); }, { rootMargin: "-100px 0px -80% 0px", } ); const ids = sections.flatMap((section) => section.items.map((item) => item.id)); ids.forEach((id) => { const element = document.getElementById(id); if (element) { observer.observe(element); } }); return () => observer.disconnect(); }, []); const scrollToSection = (id: string) => { const element = document.getElementById(id); if (element) { element.scrollIntoView({ behavior: "smooth" }); setActiveSection(id); setMobileMenuOpen(false); } }; return (
{/* Mobile Header */}
Void Sentinel Logo Void Sentinel
{/* Sidebar Navigation */} {/* Main Content */}
{/* Getting Started */}

Documentation

Welcome to the official documentation for Void Sentinel. A powerful, modern Discord bot designed to elevate your server's engagement through advanced leveling, utility tools, and AI-powered interactions.

Inviting the Bot

Currently, Void Sentinel is in Beta. Access is restricted to approved servers.

Restricted Access

To invite Void Sentinel to your server, you must request access by sending a DM to _void_x_ on Discord. Once approved, you can use the invite link provided in the dashboard.

{/* Commands */}

Leveling Commands

Utility Commands

Fun & AI Commands

Note: AI-powered features are currently experimental and restricted.

{/* Dashboard Guide */}

Leaderboard

View your server's leveling leaderboard through the dashboard. This list displays all members ranked by their accumulated XP and current level.

Leaderboard Example

Leveling System Setup

The dashboard allows you to configure multi-track leveling systems. Here's how to set it up:

1 Create Leveling Roles

  • Create all the level roles you intend to use in your Discord server first.

2 Add to Multi-Track Leveling System

  • Go to the dashboard and click on Leveling in the sidebar.
  • In the Level Tracks section, click on Add New Track.
  • Give your track a unique name (e.g., "Mage", "Warrior").
  • Select an Initial Role. This role identifies which track a user belongs to.
  • Add your level roles and assign the specific levels they unlock at.
  • Click Save Changes to apply your configuration.
Free servers can have up to 4 tracks. Premium servers support up to 10 tracks.

3 Set Level Bridgers

Level Bridgers help restrict users to their initial track and integrate seamlessly with Discord onboarding or reaction roles.

  • Select a Recruit Role (the role given by onboarding/reaction).
  • Select the corresponding Initial Role defined in your Level Track.
  • Click on Add Bridger.

Changing Tracks

If a user wants to switch to a different track, they must rest their progress. Use the command /level reset. This will reset their level and XP to 0 and remove all roles associated with their current level track.

); } function CommandCard({ command, description, args, permission, tag }: { command: string, description: string, args?: string[], permission?: string, tag?: string }) { return (
{command} {permission && ( {permission} )}
{tag && ( {tag} )}

{description}

{args && args.length > 0 && (

Parameters

    {args.map((arg, i) => (
  • {arg}
  • ))}
)}
) }