# Discord Bots

### Prerequisites

* Node.js environment (for Discord.js)
* Your Discord bot project
* SunLicense API credentials

### Integration Steps

#### 1. Install Required Packages

```bash
npm install axios
```

#### 2. Create License Validator

```javascript
const axios = require('axios');

class LicenseValidator {
    constructor(licenseKey, productId) {
        this.licenseKey = licenseKey;
        this.productId = productId;
        this.apiUrl = 'YOUR_API_URL/api/v1/validate';
    }

    async validateLicense() {
        try {
            const response = await axios.post(this.apiUrl, {
                licenseKey: this.licenseKey,
                productId: this.productId,
                hwid: 'YOUR-HWID', // Optional
                productVersion: '1.0.0'
            });

            return response.status === 200;
        } catch (error) {
            console.error('License validation failed:', error.message);
            return false;
        }
    }
}
```

#### 3. Implement in Bot

```javascript
const { Client, GatewayIntentBits } = require('discord.js');
const LicenseValidator = require('./LicenseValidator');

const client = new Client({ 
    intents: [GatewayIntentBits.Guilds] 
});

const licenseValidator = new LicenseValidator('YOUR-LICENSE-KEY', YOUR_PRODUCT_ID);

client.once('ready', async () => {
    const isValid = await licenseValidator.validateLicense();
    if (!isValid) {
        console.error('Invalid license - Bot shutting down');
        client.destroy();
        process.exit(1);
    }
    console.log('Bot is ready!');
});

// Add periodic validation
setInterval(async () => {
    const isValid = await licenseValidator.validateLicense();
    if (!isValid) {
        console.error('License validation failed - Bot shutting down');
        client.destroy();
        process.exit(1);
    }
}, 24 * 60 * 60 * 1000); // Check every 24 hours

client.login('YOUR_BOT_TOKEN');
```

### Best Practices

1. **Startup Validation**
   * Validate before bot initialization
   * Implement graceful shutdown
   * Clear error logging
2. **Periodic Validation**
   * Regular license checks
   * Handle network issues
   * Graceful error handling
3. **Security**
   * Secure storage of license key
   * Environment variable usage
   * Proper error handling

### Common Issues

1. **Validation Failures**
   * Check license key validity
   * Verify network connectivity
   * Confirm product ID
2. **Runtime Issues**
   * Monitor bot logs
   * Check for API rate limits
   * Verify license status


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sunlicense.hapangama.com/product-integrations/discord-bots.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
