Skip to main content

Overview

The /settings command provides a comprehensive interface to configure your HoYoVista preferences, including notifications, privacy, automation, and data collection.

Usage

/settings
```text

<ParamField path="None" type="none">
  This command takes no parameters
</ParamField>

## Settings Categories

The settings interface is organized into 4 main categories:

<CardGroup cols={2}>
  <Card title="General Settings" icon="sliders">
    Notifications, privacy, and analytics preferences
  </Card>
  
  <Card title="Check-in Settings" icon="calendar-check">
    Auto check-in and notifications per game
  </Card>
  
  <Card title="Code Redemption Settings" icon="ticket">
    Auto-redeem and notifications per game
  </Card>
  
  <Card title="Reset Settings" icon="rotate-right">
    Restore all settings to defaults
  </Card>
</CardGroup>

## General Settings

### Update Notifications

<ParamField path="subscribed" type="boolean" default={true}>
  **Description**: Receive updates and alerts from the bot including new features, bug fixes, and announcements.
  
  **Default**: Enabled
</ParamField>

### Privacy Blur

<ParamField path="private" type="boolean" default={false}>
  **Description**: Hide sensitive information like UIDs from other users. Adds extra privacy protection beyond defaults.
  
  **Example**:
  - OFF: `600123456` (full UID)
  - ON: `600******6` (censored)
  
  **Default**: Disabled
</ParamField>

### Collect Analytics Data

<ParamField path="collectData" type="boolean" default={true}>
  **Description**: Allow anonymized usage data collection to help improve the bot. Enables personalized end-of-year wrapped reports.
  
  **Collected Data**:
  - Command usage patterns
  - Feature interactions
  - Error occurrences (for debugging)
  
  **Default**: Enabled
</ParamField>

## Check-in Settings

### DM Notifications

<ParamField path="notifyCheckin" type="boolean" default={true}>
  **Description**: Receive DM notifications when automatic check-ins occur.
  
  **Requirement**: Discord DMs must be enabled
  
  **Default**: Enabled
</ParamField>

### Per-Game Auto Check-in

Each linked game has its own auto check-in toggle:

```markdown
🎮 Genshin Impact (600123456)
Check-ins are currently `Enabled`
[Disable Button]

 Honkai: Star Rail (700123456)
Check-ins are currently `Disabled`
[Enable Button]
```text

<Info>
  **Automatic Schedule**: Daily between `<t:1735751100:t>` and `<t:1735754400:t>` (server time)
</Info>

## Code Redemption Settings

### DM Notifications

<ParamField path="notifyRedeem" type="boolean" default={true}>
  **Description**: Receive DM notifications when codes are automatically redeemed.
  
  **Requirement**: Discord DMs must be enabled
  
  **Default**: Enabled
</ParamField>

### Per-Game Auto Redeem

Each supported game has its own auto-redeem toggle:

```markdown
🎮 Genshin Impact (600123456)
Redemptions are currently `Enabled`
[Disable Button]

🌟 Zenless Zone Zero (1001234567)
Redemptions are currently `Disabled`
[Enable Button]
```text

<Note>
  Auto-redeem fetches codes from an external API by seria_ati and redeems them automatically when available.
</Note>

## Reset Settings

<Warning>
  **Destructive Action**: Resetting settings **cannot be reversed**.
</Warning>

Resetting will:
- Restore all settings to default values
- Keep your linked games intact
- Preserve your HoYoLAB connection

Confirmation required:

```markdown
## Reset Settings
Are you sure you want to reset your settings?
**This action cannot be reversed.**

[Confirm Reset Button]
```text

## Navigation

Use the dropdown menu to switch between categories:

```text
📋 Select a category
├─ General Settings
├─ Check-in Settings  
├─ Code Redemption Settings
└─ Reset Settings
```text

## Caching & Performance

<Accordion title="Technical Implementation">
  **Cache Duration**: 5 minutes
  
  Settings are cached to reduce database queries:
  - User settings cached for 5 minutes
  - Linked games cached for 5 minutes
  - Cache automatically invalidated on updates
  
  **Rate Limiting**: 5 attempts per 30 seconds
  
  Prevents spam and ensures stability:
  - Max 5 setting updates per 30 seconds
  - Automatic cooldown message if exceeded
  - Reset confirmation bypasses rate limit
</Accordion>

## Rate Limit Protection

If you update settings too quickly:

```markdown
⏱️ Whoa, you're updating settings too quickly!
Please wait 15 seconds before trying again.
```text

## Ownership Verification

<Info>
  Only the user who initiated the settings command can interact with the buttons and menus. Others will be ignored.
</Info>

## Example Settings Flow

<Steps>
  <Step title="Open Settings">
    Run `/settings` - defaults to General Settings
  </Step>
  
  <Step title="Enable Privacy Blur">
    Click "Enable" next to Privacy Blur
  </Step>
  
  <Step title="Navigate to Check-in">
    Use dropdown → select "Check-in Settings"
  </Step>
  
  <Step title="Enable Auto Check-in">
    Toggle auto check-in for desired games
  </Step>
  
  <Step title="Save Automatically">
    Changes save instantly - no confirmation needed
  </Step>
</Steps>

## Technical Details

<ParamField path="Cooldown" type="number">
  10 seconds
</ParamField>

<ParamField path="Integration Types" type="array">
  - 0 (Guild Install)
  - 1 (User Install)
</ParamField>

<ParamField path="Contexts" type="array">
  - 0 (Guild)
  - 1 (Bot DM)
  - 2 (Private Channel)
</ParamField>

<ParamField path="Response" type="string">
  Ephemeral (only visible to you)
</ParamField>

## Source Reference

- **File**: `src/commands/settings.js:121-125`
- **Cooldown**: `src/commands/settings.js:120`
- **General Settings**: `src/commands/settings.js:210-268`
- **Auto Settings**: `src/commands/settings.js:277-367`
- **Cache Duration**: `src/commands/settings.js:34`
- **Rate Limiter**: `src/commands/settings.js:35-47`

## Related Commands

<CardGroup cols={2}>
  <Card title="Check-in" icon="calendar-check" href="/commands/check-in">
    Manual daily check-in command
  </Card>
  
  <Card title="Redeem" icon="ticket" href="/commands/redeem">
    Manual code redemption command
  </Card>
  
  <Card title="Data" icon="database" href="/commands/data">
    View your stored account data
  </Card>
  
  <Card title="HoYoLink" icon="link" href="/commands/hoyolink">
    Manage your HoYoLAB connection
  </Card>
</CardGroup>

Build docs developers (and LLMs) love