Sorielle
Sorielle (hereinafter the “Application”) is a Discord bot that automatically deletes messages from a venting channel after a configurable timeout period, providing a safe space for users to express themselves with temporary visibility.
1. User Documentation
Section titled “1. User Documentation”This section is for those interacting with a live instance of the Application.
Adding Sorielle to Your Server
Section titled “Adding Sorielle to Your Server”You can add Sorielle to your Discord server using this invitation link.
Getting Started
Section titled “Getting Started”-
Purchase Server Subscription: Before configuring Sorielle, you need to purchase the server subscription from the Discord store.
-
Configure Your Venting Channel: Use the
/configcommand to set up your venting channel:- Select the text channel where messages should be automatically deleted
- Set the timeout duration (in seconds) after which messages will be deleted
- Ensure Sorielle has the necessary permissions:
Manage Messages,View Channel, andRead Message History
-
Using the Venting Channel: Once configured, any message sent to the designated venting channel will be automatically deleted after the specified timeout period.
Available Commands
Section titled “Available Commands”/config <channel> <timeout>: Configure the venting channel and deletion timeout/about: Learn more about Sorielle and get help information
Getting Help
Section titled “Getting Help”If you need assistance or encounter issues:
- Visit our Discord community
- Contact via email: [email protected]
2. Technical Documentation
Section titled “2. Technical Documentation”This section is for those interested in running their own instance of the Application.
System Requirements
Section titled “System Requirements”- Node.js (compatible with Discord.js 14.21.0)
- MongoDB database (via Prisma)
- Discord bot token
- Environment variables for configuration
Architecture Overview
Section titled “Architecture Overview”Sorielle is built using:
- Discord.js: Discord API interaction and bot framework
- Prisma: Database ORM for MongoDB
- Fastify: Web server for health monitoring and landing page
- TypeScript: Type-safe development
Key Components
Section titled “Key Components”- Main Bot Logic (
src/index.ts): Core Discord client setup and event handling - Message Handler (
src/events/messageCreate.ts): Processes messages in venting channels and schedules deletions - Commands (
src/commands/): Slash command implementations - Database Models: Prisma-managed MongoDB schema for storing server configurations
- Web Server (
src/server/serve.ts): Health monitoring endpoint on port 5019 - Entitlement System (
src/utils/checkEntitlement.ts): Validates server subscriptions
Installation & Setup
Section titled “Installation & Setup”- Clone the repository
- Install dependencies:
pnpm install - Set up environment variables (Discord token, database URL)
- Generate Prisma client:
prisma generate - Build the project:
pnpm run build - Start the application:
pnpm start
Database Schema
Section titled “Database Schema”The application uses a vents table to store:
serverId: Discord server IDchannelId: Configured venting channel IDttl: Time-to-live for messages (in seconds)
Development
Section titled “Development”- Linting:
pnpm run lint - Building:
pnpm run build - Testing:
pnpm run test(currently placeholder)
3. Legal Documentation
Section titled “3. Legal Documentation”This section is for expansions to our legal policies specific to the Application.
License
Section titled “License”This software is licensed under Naomi’s Public Licence. Full license terms are available at docs.spellware.dev.
Copyright
Section titled “Copyright”Copyright held by Naomi Carrigan.
Privacy & Data Handling
Section titled “Privacy & Data Handling”- Sorielle stores minimal server configuration data (server ID, channel ID, timeout settings)
- Messages are automatically deleted according to configured timeouts
- No message content is permanently stored or logged
- For detailed privacy policies, refer to PRIVACY.md
Terms of Service
Section titled “Terms of Service”For complete terms of service, refer to TERMS.md.
Security
Section titled “Security”For security-related concerns, please review SECURITY.md for our security policy and reporting procedures.
4. Contributing Documentation
Section titled “4. Contributing Documentation”This section is for documentation related to contributing to the Application’s codebase.
Contributing Guidelines
Section titled “Contributing Guidelines”Complete contributing guidelines are available at docs.spellware.dev.
Code of Conduct
Section titled “Code of Conduct”Before interacting with our community, please read our Code of Conduct.
Development Environment
Section titled “Development Environment”- Language: TypeScript
- Framework: Discord.js v14
- Database: MongoDB with Prisma ORM
- Package Manager: pnpm
- Linting: ESLint with @nhcarrigan/eslint-config
Code Structure
Section titled “Code Structure”src/commands/: Slash command implementationssrc/events/: Discord event handlerssrc/interfaces/: TypeScript interface definitionssrc/modules/: Reusable modules and utilitiessrc/utils/: Utility functions (logging, error handling, entitlements)src/config/: Configuration filessrc/server/: Web server implementation
Submitting Changes
Section titled “Submitting Changes”- Fork the repository
- Create a feature branch
- Make your changes following existing code patterns
- Ensure linting passes:
pnpm run lint - Test your changes thoroughly
- Submit a pull request
Getting Help
Section titled “Getting Help”For development questions or support:
- Discord Server
- Discord forum channels (#bug-reports or #feature-requests) for bug reports and feature requests