Image Command Discord bot. Store images & gifs dynamically as 'commands' and retrieve them by the same name. Utilizing Sapphire.js/Discord.js, Prisma, AWS S3, and CloudFront.
Images are hoisted into an S3 bucket - so there's no fear of images being deleted or lost when a discord message is deleted. You are in full control of the data.
- Accessible: Upload images and GIFs through Discord commands
- Slash command, message command support
- Direct upload & direct link support
- Reliable Storage: AWS S3 backend for secure media storage
- Fast Delivery: CloudFront CDN integration for content delivery
- Server-Specific: Dedicated storage per Discord server
ImgClio consists of four main components:
- Discord Bot: Built with Sapphire.js/Discord.js, handles user interactions and commands
- Storage Layer: AWS S3 + CloudFront for media storage and delivery
- Database: PostgreSQL for storing media metadata
- API Layer: Manages communication between the bot, database, and AWS services
-
Clone the repository
git clone https://github.com/yourusername/imgclio.git cd imgclio
-
Install dependencies
bun install
-
Configure environment variables
cp .env.example .env
Edit the
.env
file with your configuration -
Setup database
bun prisma generate bun prisma migrate dev
-
Start the bot
bun run dev
- See
.env.example
for the required environment variables
- Create an S3 bucket
- Set up a CloudFront distribution pointing to your S3 bucket
- Create an IAM user with S3 permissions
- Generate access keys for the IAM user
- Update
.env
with AWS credentials and URLs
- Create a new application in the Discord Developer Portal
- Create a bot for your application
- Enable necessary bot permissions
- Copy the bot token to your
.env
file - Invite the bot to your server
Tech stack:
Contributions welcome❗
Review CONTRIBUTING.md for more information.
This project is licensed under the MIT License - see the LICENSE file for details.
For problems or questions, please open an issue.