Complete Command Guide
This guide provides detailed usage instructions and troubleshooting for every command in the Soluna Assistant v1.8.1.
📋 Table of Contents
- Profile Commands
- Flight Commands
- Salary Management Commands
- LOA Management Commands
- Strike Commands
- Utility Commands
- Owner Commands
👤 Profile Commands
/profile - View Staff Profile
Usage:
/profile
/profile @username
Description: View your profile or another staff member's profile including flights, certifications, and current LOA status.
Examples:
/profile- View your own profile/profile @johnsmith- View John's profile
Common Issues:
- ❌ "User not found" - User doesn't have a profile in the database
- Solution: Use
/manageprofileto add them first
- Solution: Use
- ❌ "No permissions" - You're not in the Staff role
- Solution: Ask an HR member to add you to the Staff role
- ❌ "Database error" - Google Sheets connection issue
- Solution: Check if credentials.json is correct and Google Sheet is shared
Tips:
- ✅ Shows real-time flight counts and certifications
- ✅ Displays current LOA status if active
- ✅ Includes strike count and department info
/manageprofile - Add/Remove Staff Profiles
Usage:
/manageprofile action:@user discord_id:"123456789" roblox_username:"PlayerName" roblox_id:"987654321" rank_category:"Executive Leadership" rank_order:1 position:"CEO" department:"Management"
Description: Add or remove staff profiles from the database (HRD only).
Parameters:
action: "add" or "remove"user: Discord user to add/removediscord_id: User's Discord IDroblox_username: Roblox usernameroblox_id: Roblox user IDrank_category: Rank category from available ranksrank_order: Rank order number (1=highest)position: Job position titledepartment: Department name
Examples:
/manageprofile action:add @johnsmith discord_id:"123456789" roblox_username:"JohnSmith" roblox_id:"987654321" rank_category:"Executive Leadership" rank_order:1 position:"CEO" department:"Management"/manageprofile action:remove @johnsmith
Common Issues:
- ❌ "Invalid rank category" - Rank category doesn't exist
- Solution: Use
/addrankto add the rank category first
- Solution: Use
- ❌ "Discord ID already exists" - User already has a profile
- Solution: Use
/updateprofileto modify existing profile
- Solution: Use
- ❌ "Permission denied" - You're not in HRD role
- Solution: Ask an HRD member to perform the action
- ❌ "Google Sheets error" - Failed to update database
- Solution: Check Google Sheets permissions and service account access
Tips:
- ✅ Always use quotes for text parameters
- ✅ Rank order determines position in staff list
- ✅ Department helps organize staff by teams
/updateprofile - Update Staff Profile
Usage:
/updateprofile @user field:roblox_username value:"NewName"
Description: Update specific fields in a staff member's profile (HRD only).
Parameters:
user: Discord user to updatefield: Field to update (roblox_username, roblox_id, position, department, timezone)value: New value for the field
Examples:
/updateprofile @johnsmith field:position value:"Senior Manager"/updateprofile @johnsmith field:timezone value:"EST"
Common Issues:
- ❌ "Field not found" - Invalid field name
- Solution: Use valid field names: roblox_username, roblox_id, position, department, timezone
- ❌ "User not found" - User doesn't have a profile
- Solution: Use
/manageprofileto add them first
- Solution: Use
- ❌ "Permission denied" - You're not in HRD role
- Solution: Ask an HRD member to perform the action
Tips:
- ✅ Cannot update rank category/order (use rank management commands)
- ✅ Use quotes for values with spaces
- ✅ Updates are immediately reflected in all commands
/managecertifications - Manage Staff Certifications
Usage:
/managecertifications action:add @user certification:"Flight Host Certificate"
/managecertifications action:remove @user certification:"Flight Host Certificate"
Description: Add or remove certifications from a staff member (HRD only).
Parameters:
action: "add" or "remove"user: Discord user to modifycertification: Certification name from available list
Examples:
/managecertifications action:add @johnsmith certification:"Flight Host Certificate"/managecertifications action:remove @johnsmith certification:"Ground Operations"
Common Issues:
- ❌ "Certification not found" - Certification doesn't exist
- Solution: Use
/addcertificationto add it first
- Solution: Use
- ❌ "Already has certification" - User already has this certification
- Solution: No action needed, or remove then re-add
- ❌ "Permission denied" - You're not in HRD role
- Solution: Ask an HRD member to perform the action
Tips:
- ✅ Certifications are stored as JSON in Google Sheets
- ✅ Multiple certifications can be added to one user
- ✅ Use exact certification names (case-sensitive)
✈️ Flight Commands
/addflight - Add Flight Attendance
Usage:
/addflight @user flight_type:attended count:5
/addflight @user flight_type:hosted count:3
Description: Add flight attendance or hosting records to a staff member (Flight Dispatcher only).
Parameters:
user: Discord user to add flights toflight_type: "attended" or "hosted"count: Number of flights to add
Examples:
/addflight @johnsmith flight_type:attended count:5/addflight @johnsmith flight_type:hosted count:2
Common Issues:
- ❌ "User not found" - User doesn't have a profile
- Solution: Use
/manageprofileto add them first
- Solution: Use
- ❌ "Permission denied" - You're not in Flight Dispatcher role
- Solution: Ask a Flight Dispatcher to perform the action
- ❌ "Invalid flight type" - Must be "attended" or "hosted"
- Solution: Use exact flight type names
Tips:
- ✅ Flights add to existing count (don't replace)
- ✅ Affects salary calculations immediately
- ✅ Use reasonable flight counts to avoid errors
/removeflight - Remove Flight Attendance
Usage:
/removeflight @user flight_type:attended count:2
/removeflight @user flight_type:hosted count:1
Description: Remove flight attendance or hosting records from a staff member (Flight Dispatcher only).
Parameters:
user: Discord user to remove flights fromflight_type: "attended" or "hosted"count: Number of flights to remove
Examples:
/removeflight @johnsmith flight_type:attended count:2/removeflight @johnsmith flight_type:hosted count:1
Common Issues:
- ❌ "Cannot remove more flights than exist" - Trying to remove too many flights
- Solution: Check current flight count with
/profile
- Solution: Check current flight count with
- ❌ "Flight count would go negative" - Same as above
- Solution: Use smaller count or check current flights
- ❌ "Permission denied" - You're not in Flight Dispatcher role
- Solution: Ask a Flight Dispatcher to perform the action
Tips:
- ✅ Cannot go below 0 flights
- ✅ Affects salary calculations immediately
- ✅ Use for correcting errors or adjustments
💰 Salary Management Commands
/setsalary - Set Salary Configuration
Usage:
/setsalary salary_type:flight_attended_salary value:20
/setsalary salary_type:flight_hosted_salary value:40
/setsalary salary_type:executive_multiplier value:2.0
Description: Set salary rates and multipliers (Executive Board only).
Parameters:
salary_type: Type of salary setting to modifyvalue: New numeric value
Examples:
/setsalary salary_type:flight_attended_salary value:20/setsalary salary_type:executive_multiplier value:1.8
Common Issues:
- ❌ "Invalid value" - Value must be a positive number
- Solution: Use valid numbers (15, 30, 1.5, etc.)
- ❌ "Permission denied" - You're not in Executive Board role
- Solution: Ask an Executive Board member to perform the action
- ❌ "Salary config sheet not found" - Missing Salary Config sheet
- Solution: Create the Salary Config sheet with proper headers
Tips:
- ✅ Changes affect all future salary calculations
- ✅ Use decimal values for multipliers
- ✅ View current settings with
/salaryconfig
/calculatesalary - Calculate Salary
Usage:
/calculatesalary
/calculatesalary @username
Description: Calculate salary earnings based on flights and rank multipliers.
Examples:
/calculatesalary- Calculate your own salary/calculatesalary @johnsmith- Calculate John's salary (requires HRD role)
Common Issues:
- ❌ "User not found" - User doesn't have a profile
- Solution: Use
/manageprofileto add them first
- Solution: Use
- ❌ "Permission denied" - Trying to view other's salary without HRD role
- Solution: Only HRD can view other staff salaries
- ❌ "Salary config not loaded" - Missing salary configuration
- Solution: Set up Salary Config sheet or use defaults
Tips:
- ✅ Shows base salary and multiplier breakdown
- ✅ Uses current flight counts from profile
- ✅ Updates in real-time with flight changes
/salaryconfig - View Salary Configuration
Usage:
/salaryconfig
Description: View current salary rates and multipliers (Executive Board only).
Common Issues:
- ❌ "Permission denied" - You're not in Executive Board role
- Solution: Ask an Executive Board member to view settings
- ❌ "No salary config found" - Missing configuration
- Solution: Use
/setsalaryto set initial values
- Solution: Use
Tips:
- ✅ Shows all current salary settings
- ✅ Helps verify recent changes
- ✅ Useful for planning salary adjustments
📄 LOA Management Commands
/requestloa - Request Leave of Absence
Usage:
/requestloa start_date:"2026-02-10" end_date:"2026-02-15" reason:"Family vacation"
Description: Submit a Leave of Absence request with dates and reason.
Parameters:
start_date: Start date (YYYY-MM-DD format)end_date: End date (YYYY-MM-DD format)reason: Reason for LOA request
Examples:
/requestloa start_date:"2026-02-10" end_date:"2026-02-15" reason:"Family vacation"/requestloa start_date:"2026-03-01" end_date:"2026-03-07" reason:"Medical appointment"
Common Issues:
- ❌ "Invalid date format" - Must use YYYY-MM-DD
- Solution: Use correct format: "2026-02-15"
- ❌ "Start date cannot be in the past" - Date already passed
- Solution: Use future dates only
- ❌ "LOA duration exceeds 90 days" - Maximum duration exceeded
- Solution: Keep LOA under 90 days
- ❌ "Already have active LOA" - Current LOA still active
- Solution: Wait for current LOA to end or expire
Tips:
- ✅ Maximum 90 days duration
- ✅ Auto-expires after end date
- ✅ Logged in LOA channel for tracking
- ✅ Requires Executive Board approval
/approveloa - Approve/Deny LOA Request
Usage:
/approveloa @username action:approve reason:"Approved for family emergency"
/approveloa @username action:deny reason:"Insufficient notice"
Description: Approve or deny pending LOA requests (Executive Board only).
Parameters:
user: Discord user with pending LOAaction: "approve" or "deny"reason: Optional reason for decision
Examples:
/approveloa @johnsmith action:approve reason:"Approved for family emergency"/approveloa @johnsmith action:deny reason:"Insufficient notice period"
Common Issues:
- ❌ "No pending LOA request" - User has no pending request
- Solution: Check
/loastatusfor pending requests
- Solution: Check
- ❌ "LOA already processed" - Request already approved/denied
- Solution: No action needed, already processed
- ❌ "Permission denied" - You're not in Executive Board role
- Solution: Ask an Executive Board member to perform the action
Tips:
- ✅ User gets automatic DM notification
- ✅ Decision logged in LOA channel
- ✅ Can include optional approval/denial reason
- ✅ Only pending requests can be processed
/loastatus - View All LOA Requests
Usage:
/loastatus
Description: View all current LOA requests (Executive Board only).
Common Issues:
- ❌ "Permission denied" - You're not in Executive Board role
- Solution: Ask an Executive Board member to view status
- ❌ "No LOA requests found" - No current requests
- Solution: No action needed, or check back later
Tips:
- ✅ Shows all pending, approved, and denied requests
- ✅ Limited to 10 requests to avoid embed limits
- ✅ Shows request IDs and status
- ✅ Useful for managing multiple requests
/myloa - View Personal LOA Status
Usage:
/myloa
Description: View your personal LOA status and history.
Common Issues:
- ❌ "No LOA requests found" - You have no LOA history
- Solution: Use
/requestloato submit a request
- Solution: Use
- ❌ "Profile not found" - You don't have a staff profile
- Solution: Ask HRD to add your profile first
Tips:
- ✅ Shows current LOA if active
- ✅ Displays request history
- ✅ Shows approval status and timestamps
- ✅ Private response only visible to you
⚠️ Strike Commands
/addstrike - Issue Strike
Usage:
/addstrike @user reason:"Violation of company policy"
Description: Issue a strike to a staff member (HRD only).
Parameters:
user: Discord user to strikereason: Reason for the strike
Examples:
/addstrike @johnsmith reason:"Violation of company policy"/addstrike @johnsmith reason:"Unexcused absence from mandatory training"
Common Issues:
- ❌ "User not found" - User doesn't have a profile
- Solution: Use
/manageprofileto add them first
- Solution: Use
- ❌ "Permission denied" - You're not in HRD role
- Solution: Ask an HRD member to perform the action
- ❌ "Reason cannot be empty" - Must provide a reason
- Solution: Always include a detailed reason
Tips:
- ✅ Strikes are stored as JSON with timestamps
- ✅ Multiple strikes can be issued
- ✅ View strikes with
/viewstrikes - ✅ Can be removed with
/removestrike
/removestrike - Remove Strike
Usage:
/removestrike @user reason:"Appeal accepted"
Description: Remove a strike from a staff member (HRD only).
Parameters:
user: Discord user to remove strike fromreason: Reason for removal
Examples:
/removestrike @johnsmith reason:"Appeal accepted"/removestrike @johnsmith reason:"Mistakenly issued"
Common Issues:
- ❌ "No strikes to remove" - User has no strikes
- Solution: Check current strikes with
/viewstrikes
- Solution: Check current strikes with
- ❌ "Permission denied" - You're not in HRD role
- Solution: Ask an HRD member to perform the action
Tips:
- ✅ Removes the most recent strike
- ✅ Requires removal reason for audit trail
- ✅ Updates strike count immediately
- ✅ Logged for accountability
/viewstrikes - View Strikes
Usage:
/viewstrikes
/viewstrikes @username
Description: View strikes for yourself or another staff member.
Examples:
/viewstrikes- View your own strikes/viewstrikes @johnsmith- View John's strikes
Common Issues:
- ❌ "User not found" - User doesn't have a profile
- Solution: Use
/manageprofileto add them first
- Solution: Use
- ❌ "No strikes found" - User has no strikes
- Solution: This is normal, no action needed
Tips:
- ✅ Shows strike count and details
- ✅ Includes timestamps and reasons
- ✅ Anyone can view their own strikes
- ✅ HRD can view anyone's strikes
🛠️ Utility Commands
/dm - Send Direct Message
Usage:
/dm @username message:"Your message here"
Description: Send a direct message to a user (HRD only).
Parameters:
user: Discord user to messagemessage: Message content
Examples:
/dm @johnsmith message:"Please attend the mandatory staff meeting at 3 PM"/dm @johnsmith message:"Your LOA request has been approved"
Common Issues:
- ❌ "Cannot send DM" - User has DMs disabled
- Solution: Ask user to enable DMs or use alternative communication
- ❌ "Permission denied" - You're not in HRD role
- Solution: Ask an HRD member to send the message
- ❌ "Message cannot be empty" - Must provide message content
- Solution: Always include a message
Tips:
- ✅ Useful for important announcements
- ✅ Bypasses server notification limits
- ✅ Private communication channel
- ✅ Use for sensitive information
/dmrole - DM Role Members
Usage:
/dmrole @StaffRole message:"Important announcement for all staff"
Description: Send a DM to all users with a specific role (HRD only).
Parameters:
role: Discord role to messagemessage: Message content
Examples:
/dmrole @Staff message:"Reminder: Monthly report due by Friday"/dmrole @FlightTeam message:"New flight procedures effective immediately"
Common Issues:
- ❌ "Role not found" - Invalid role name or mention
- Solution: Use exact role name or @mention
- ❌ "No users found" - No users have this role
- Solution: Check if role is assigned to anyone
- ❌ "Rate limited" - Too many messages sent too quickly
- Solution: Wait a few minutes and try again
Tips:
- ✅ Great for mass announcements
- ✅ Respects Discord rate limits
- ✅ Shows delivery count
- ✅ Use for urgent communications
/flightformats - Generate Flight Formats
Usage:
/flightformats
Description: Generate flight announcement formats (Flight Dispatcher only).
Common Issues:
- ❌ "Permission denied" - You're not in Flight Dispatcher role
- Solution: Ask a Flight Dispatcher to use this command
Tips:
- ✅ Provides templates for flight announcements
- ✅ Includes standard format examples
- ✅ Useful for consistent messaging
- ✅ Copy and paste ready formats
/activitycheck - Activity Check Results
Usage:
/activitycheck message_id:"123456789012345678"
Description: Get list of members who didn't react to activity check (HRD only).
Parameters:
message_id: ID of the activity check message
Examples:
/activitycheck message_id:"123456789012345678"
Common Issues:
- ❌ "Message not found" - Invalid message ID
- Solution: Right-click message → Copy Message ID
- ❌ "No reactions found" - Message has no reactions
- Solution: Ensure message has emoji reactions
- ❌ "Permission denied" - You're not in HRD role
- Solution: Ask an HRD member to perform the check
Tips:
- ✅ Useful for tracking staff activity
- ✅ Shows non-responsive members
- ✅ Helps with staff management
- ✅ Exportable list for follow-up
/stafflist - View All Staff
Usage:
/stafflist
Description: View all staff members organized by rank.
Common Issues:
- ❌ "No staff found" - No profiles in database
- Solution: Use
/manageprofileto add staff members
- Solution: Use
Tips:
- ✅ Organized by rank categories
- ✅ Shows total staff count
- ✅ Useful for organization overview
- ✅ Updates in real-time
👑 Owner Commands
/debugcommands - Debug Commands
Usage:
/debugcommands
Description: Debug command registration (Bot owner only).
Tips:
- ✅ Shows registered command count
- ✅ Lists first 10 commands
- ✅ Useful for troubleshooting
- ✅ Bot owner exclusive
/sync - Sync Commands
Usage:
/sync
Description: Sync slash commands with Discord (Bot owner only).
Tips:
- ✅ Updates command registry
- ✅ Fixes missing commands
- ✅ Required after adding new commands
- ✅ Bot owner exclusive
/shutdown - Shutdown Bot
Usage:
/shutdown
Description: Shutdown the bot (Bot owner only).
Tips:
- ✅ Graceful shutdown
- ✅ Saves current state
- ✅ Bot owner exclusive
- ✅ Use with caution
/botinfo - Bot Information
Usage:
/botinfo
Description: Display bot information (Bot owner only).
Tips:
- ✅ Shows bot statistics
- ✅ Displays latency and version
- ✅ Useful for monitoring
- ✅ Bot owner exclusive
🔧 General Troubleshooting
Common Issues Across Commands
"Permission denied"
- Cause: Wrong Discord role
- Solution: Ensure you have the required role (Staff, HRD, Flight Dispatcher, Executive Board)
"User not found"
- Cause: User doesn't have a profile
- Solution: Use
/manageprofileto add them to the database
"Database error"
- Cause: Google Sheets connection issue
- Solution: Check credentials.json and Google Sheet sharing settings
"Invalid format"
- Cause: Wrong parameter format
- Solution: Use quotes for text values, correct date format (YYYY-MM-DD)
Tips for Success
- Always use quotes for text parameters with spaces
- Check permissions before using commands
- Verify profiles exist before modifying user data
- Use exact names for certifications and ranks
- Check Google Sheets if database errors occur
- Ask for help if unsure about command usage
Need more help? Contact an HRD member or check the main documentation for detailed setup instructions.