---
title: Altaria
---

Altaria (hereinafter the "Application") is a Discord bot that provides gentle reminders to users when they upload images without alt-text descriptions, promoting accessibility and inclusion within Discord communities.

## 1. User Documentation

This section is for those interacting with a live instance of the Application.

### What is Altaria?

Altaria is a friendly Discord bot designed to encourage the use of alt-text (alternative text) for images in Discord servers. Alt-text helps make content accessible to users who rely on screen readers and assistive technologies.

### How to Add Altaria to Your Server

1. Use the official invitation link: [Add to Discord](https://discord.com/oauth2/authorise?client_id=1405356559214837860)
2. Select your server from the dropdown menu
3. Grant the necessary permissions:
   - Read Messages/View Channels
   - Send Messages
   - Use Slash Commands

### How Altaria Works

- **Automatic Monitoring**: Altaria monitors messages in channels where it has permissions
- **Image Detection**: When someone posts an image without alt-text, Altaria detects it automatically
- **Gentle Reminders**: The bot responds with one of 100 carefully crafted, encouraging messages
- **Educational Links**: Each reminder includes helpful resources about adding alt-text and writing descriptions

### Using Slash Commands

Altaria supports slash commands that provide information about the bot:
- Type `/` and select an Altaria command to learn more about the bot's features and purpose

### Reminder Message Categories

Altaria's reminders fall into five themed categories:
1. **Gentle Encouragement** (20 messages) - Soft, supportive reminders
2. **Playful/Cute** (20 messages) - Fun, anime-inspired messages with emoticons
3. **Educational** (20 messages) - Informative content about accessibility
4. **Community Vibes** (20 messages) - Emphasising collective responsibility
5. **Thematic/Fantasy** (20 messages) - Creative, story-driven reminders

### Getting Help

If you need assistance:
- Join the support server: [Discord Server](https://chat.nhcarrigan.com)
- Review Discord's guide: [How to add alt-text](https://support.discord.com/hc/en-us/articles/211866427-How-do-I-upload-images-and-GIFs)
- Use Cordelia for AI-generated descriptions: [Cordelia](https://cordelia.nhcarrigan.com)

## 2. Technical Documentation

This section is for those interested in running their own instance of the Application.

### Architecture Overview

Altaria is built using:
- **Node.js** with TypeScript
- **Discord.js** v14.21.0 for Discord API interaction
- **Fastify** v5.5.0 for the web server
- **@nhcarrigan/logger** for structured logging

### Project Structure

```
src/
├── index.ts                 # Main application entry point
├── modules/
│   └── checkAltText.ts     # Core alt-text detection logic
├── config/
│   ├── blocks.ts           # Discord UI blocks configuration
│   └── reminders.ts        # Collection of reminder messages
├── utils/
│   ├── errorHandler.ts     # Error handling utilities
│   ├── logger.ts          # Logger configuration
│   └── getRandomValue.ts  # Random selection utility
└── server/
    └── serve.ts           # Web server for health checks
```

### Core Functionality

#### Alt-Text Detection (`src/modules/checkAltText.ts:16`)
- Filters messages for image attachments
- Identifies images without descriptions
- Sends randomized gentle reminders with educational resources

#### Random Reminder Selection (`src/utils/getRandomValue.ts:15`)
- Securely selects random messages using Node.js crypto module
- Ensures variety in user experience

#### Web Server (`src/server/serve.ts:54`)
- Provides health monitoring endpoint on port 6022
- Serves informational landing page with bot details

### Installation Requirements

- Node.js (compatible with ES modules)
- pnpm package manager v10.14.0+
- TypeScript 5.9.2+

### Environment Variables

- `BOT_TOKEN`: Discord bot token (required)
- `LOG_TOKEN`: Logging service token (optional)

### Development Setup

1. Clone the repository
2. Install dependencies: `pnpm install`
3. Create environment file with required tokens
4. Build: `pnpm run build`
5. Start: `pnpm start`

### Deployment

- Production deployment uses 1Password CLI: `op run --env-file=./prod.env -- node prod/index.js`
- Web server runs on port 6022 for health monitoring
- Supports process monitoring and logging

### API Endpoints

- `GET /`: Landing page with bot information and invite link
- Health check endpoint for monitoring services

## 3. Legal Documentation

This section is for expansions to our legal policies specific to the Application.

### License

This software is licensed under Naomi's Public Licence. Full details available at: https://docs.nhcarrigan.com/#/license

### Copyright

Copyright held by Naomi Carrigan (@nhcarrigan).

### Privacy Considerations

- Altaria only processes message content to detect image attachments
- No message content or user data is stored permanently
- Bot interactions are logged for debugging purposes only
- Complies with Discord's Terms of Service and Developer Policy

### Data Processing

- **Message Scanning**: Bot analyses messages in real-time for image attachments
- **Temporary Processing**: Message data is processed only for alt-text detection
- **No Data Retention**: No user messages or personal data are stored
- **Logging**: Error logs may contain anonymized debugging information

### Terms of Use

By adding Altaria to your Discord server, you agree to:
- Allow the bot to read messages in authorised channels
- Accept that the bot will send reminder messages about alt-text
- Understand that the bot promotes accessibility and inclusion

## 4. Contributing Documentation

This section is for documentation related to contributing to the Application's codebase.

### Getting Started

1. Fork the repository on GitHub
2. Clone your fork locally
3. Install dependencies: `pnpm install`
4. Read the [Contributing Guidelines](CONTRIBUTING.md)
5. Review the [Code of Conduct](CODE_OF_CONDUCT.md)

### Development Workflow

1. Create a feature branch from `main`
2. Make your changes following the coding standards
3. Run linting: `pnpm run lint`
4. Build the project: `pnpm run build`
5. Test your changes thoroughly
6. Submit a Pull Request

### Code Style Guidelines

- **TypeScript**: Strict typing enabled
- **ESLint**: Uses `@nhcarrigan/eslint-config` with max 0 warnings
- **Formatting**: Consistent code style enforced
- **Comments**: JSDoc comments for functions and modules
- **Error Handling**: Comprehensive error handling with UUID tracking

### Adding New Reminder Messages

To add new reminder messages to `src/config/reminders.ts:9`:

1. Choose an appropriate category (gentle, playful, educational, community, thematic)
2. Follow the existing tone and length guidelines
3. Include accessibility-focused messaging
4. Test that messages display correctly in Discord
5. Maintain the current array structure

### Testing Guidelines

- Test Discord interactions manually in a development server
- Verify alt-text detection works for various image types
- Ensure reminder messages display correctly
- Test web server endpoints

### Submission Requirements

- All code must pass linting without warnings
- Changes should include appropriate JSDoc documentation
- Pull requests must include a clear description of changes
- Follow existing patterns and conventions

### Contact for Contributors

- **Discord**: [Chat Server](https://chat.nhcarrigan.com)
- **Email**: contact@nhcarrigan.com
- **Issues**: Post in the #bug-reports or #feature-requests forum channels on our Discord community

### Recognition

Contributors will be recognised in future releases and project documentation as appropriate.
