Initial commit: Telegram Management System
Some checks failed
Deploy / deploy (push) Has been cancelled

Full-stack web application for Telegram management
- Frontend: Vue 3 + Vben Admin
- Backend: NestJS
- Features: User management, group broadcast, statistics

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
你的用户名
2025-11-04 15:37:50 +08:00
commit 237c7802e5
3674 changed files with 525172 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
import { logger } from '../utils/logger.js';
export const errorHandler = (err, req, res, next) => {
// Log error
logger.error('Error occurred:', {
error: err.message,
stack: err.stack,
url: req.url,
method: req.method,
body: req.body,
params: req.params,
query: req.query
});
// Mongoose validation error
if (err.name === 'ValidationError') {
const errors = Object.values(err.errors).map(e => e.message);
return res.status(400).json({
error: 'Validation failed',
details: errors
});
}
// Mongoose duplicate key error
if (err.code === 11000) {
const field = Object.keys(err.keyPattern)[0];
return res.status(400).json({
error: 'Duplicate value',
field,
message: `${field} already exists`
});
}
// Mongoose cast error
if (err.name === 'CastError') {
return res.status(400).json({
error: 'Invalid ID format',
field: err.path,
value: err.value
});
}
// JWT errors
if (err.name === 'JsonWebTokenError') {
return res.status(401).json({
error: 'Invalid token'
});
}
if (err.name === 'TokenExpiredError') {
return res.status(401).json({
error: 'Token expired'
});
}
// Custom business logic errors
if (err.message.includes('not found')) {
return res.status(404).json({
error: err.message
});
}
if (err.message.includes('already exists')) {
return res.status(409).json({
error: err.message
});
}
if (err.message.includes('Cannot') || err.message.includes('Invalid')) {
return res.status(400).json({
error: err.message
});
}
// Default error
res.status(err.status || 500).json({
error: err.message || 'Internal server error',
...(process.env.NODE_ENV === 'development' && { stack: err.stack })
});
};