littleshop/TeleBot/TeleBot/CAROUSEL_FEATURE.md
SysAdmin e1b377a042 Initial commit of LittleShop project (excluding large archives)
- BTCPay Server integration
- TeleBot Telegram bot
- Review system
- Admin area
- Docker deployment configuration

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-17 15:07:38 +01:00

145 lines
5.0 KiB
Markdown

# Product Image Carousel Feature
## Overview
The TeleBot now supports displaying products with images in beautiful carousel format, making the shopping experience more visual and engaging.
## Features
### 🖼️ Image Carousels
- **Product Images**: Automatically displays product images from the API
- **Media Groups**: Groups up to 10 products per carousel for optimal viewing
- **Image Caching**: Downloads and caches images locally for faster loading
- **Fallback Support**: Gracefully falls back to text-only display if images fail
### 🛍️ Enhanced Browsing
- **New Command**: `/products` - Browse all products with images
- **Category Support**: `/products <categoryId>` - Browse specific category with images
- **Pagination**: Navigate through multiple pages of products
- **Single Product View**: Individual products shown with high-quality images
### 🎨 User Experience
- **Visual Appeal**: Products displayed with images, names, prices, and descriptions
- **Interactive Buttons**: Easy navigation and product selection
- **Responsive Design**: Optimized for mobile and desktop viewing
- **Fast Loading**: Cached images load instantly
## Usage
### Commands
```
/products - View all products with images
/products <categoryId> - View products in specific category
/browse - Browse categories (existing functionality)
```
### Menu Options
- **🖼️ View Products with Images** - Main menu option for image browsing
- **🛍️ Browse Categories** - Traditional category browsing
### Callback Data Format
```
products:page:<pageNumber> - Pagination for all products
products:<categoryId>:<page> - Pagination for specific category
product:<productId> - View individual product with image
```
## Technical Implementation
### Services
- **ProductCarouselService**: Handles image downloading, caching, and carousel generation
- **Image Caching**: Local file system caching in `image_cache/` directory
- **HTTP Client**: Configured for downloading product images
- **Error Handling**: Graceful fallback to text-only display
### Image Processing
- **Format Support**: JPG, PNG, WebP, and other common formats
- **Validation**: Checks image URLs before downloading
- **Caching Strategy**: Files cached with product and photo IDs
- **Memory Management**: Streams images efficiently
### Telegram Integration
- **Media Groups**: Uses `SendMediaGroupAsync` for carousels
- **Photo Messages**: Individual products with `SendPhotoAsync`
- **Inline Keyboards**: Navigation and interaction buttons
- **Error Recovery**: Fallback to text messages if media fails
## Configuration
### Required Settings
```json
{
"LittleShop": {
"ApiUrl": "https://your-api-url.com"
}
}
```
### Optional Settings
```json
{
"Features": {
"EnableQRCodes": true
}
}
```
## File Structure
```
TeleBot/
├── Services/
│ └── ProductCarouselService.cs # Main carousel service
├── Handlers/
│ ├── CommandHandler.cs # Updated with /products command
│ └── CallbackHandler.cs # Updated with carousel callbacks
├── UI/
│ ├── MenuBuilder.cs # Updated with new menu options
│ └── MessageFormatter.cs # Updated with carousel support
└── image_cache/ # Local image cache directory
```
## Benefits
### For Users
- **Visual Shopping**: See products before buying
- **Better Experience**: More engaging than text-only browsing
- **Faster Navigation**: Quick access to product images
- **Mobile Friendly**: Optimized for mobile devices
### For Business
- **Higher Conversion**: Visual products increase sales
- **Professional Look**: Modern, polished appearance
- **User Engagement**: More time spent browsing
- **Competitive Edge**: Stand out from text-only bots
## Future Enhancements
### Planned Features
- **Image Optimization**: Automatic resizing and compression
- **Lazy Loading**: Load images on demand
- **Multiple Images**: Support for product galleries
- **Image Search**: Search products by visual similarity
- **Video Support**: Product videos in carousels
### Performance Improvements
- **CDN Integration**: Use CDN for image delivery
- **Progressive Loading**: Show low-res images first
- **Batch Processing**: Optimize multiple image downloads
- **Memory Optimization**: Better memory management
## Troubleshooting
### Common Issues
1. **Images Not Loading**: Check API image URLs and network connectivity
2. **Slow Performance**: Clear image cache or check disk space
3. **Memory Usage**: Monitor cache size and implement cleanup
4. **API Errors**: Verify LittleShop API configuration
### Debug Information
- Check logs for image download errors
- Monitor cache directory size
- Verify product photo data from API
- Test with different image formats
## Support
For issues or questions about the carousel feature, check the logs or contact the development team.