הגדרות תצורה
מדריך מפורט להגדרת Code Keeper Bot.
קובץ התצורה הראשי
הבוט משתמש בקובץ config.py להגדרות הראשיות:
- class config.BotConfig(BOT_TOKEN, MONGODB_URL, DATABASE_NAME='code_keeper_bot', REDIS_URL=None, CACHE_ENABLED=True, GITHUB_TOKEN=None, PASTEBIN_API_KEY=None, MAX_CODE_SIZE=100000, MAX_FILES_PER_USER=1000, SUPPORTED_LANGUAGES=None, PUBLIC_BASE_URL=None, WEBAPP_URL=None, MAINTENANCE_MODE=False, MAINTENANCE_MESSAGE='🚀 אנחנו מעלים עדכון חדש!\\nהבוט יחזור לפעול ממש בקרוב (1 - 3 דקות)', MAINTENANCE_AUTO_WARMUP_SECS=180, HIGHLIGHT_THEME='github-dark', GIT_CHECKPOINT_PREFIX='checkpoint', GOOGLE_CLIENT_ID=None, GOOGLE_CLIENT_SECRET=None, GOOGLE_OAUTH_SCOPES='https://www.googleapis.com/auth/drive.file', GOOGLE_TOKEN_REFRESH_MARGIN_SECS=120, DRIVE_MENU_V2=True, DOCUMENTATION_URL='https://amirbiron.github.io/CodeBot/', BOT_LABEL='CodeBot', DRIVE_ADD_HASH=False)[מקור]
Bases:
object
קונפיגורציה עיקרית של הבוט
- פרמטרים:
BOT_TOKEN (str)
MONGODB_URL (str)
DATABASE_NAME (str)
REDIS_URL (str | None)
CACHE_ENABLED (bool)
GITHUB_TOKEN (str | None)
PASTEBIN_API_KEY (str | None)
MAX_CODE_SIZE (int)
MAX_FILES_PER_USER (int)
SUPPORTED_LANGUAGES (list)
PUBLIC_BASE_URL (str | None)
WEBAPP_URL (str | None)
MAINTENANCE_MODE (bool)
MAINTENANCE_MESSAGE (str)
MAINTENANCE_AUTO_WARMUP_SECS (int)
HIGHLIGHT_THEME (str)
GIT_CHECKPOINT_PREFIX (str)
GOOGLE_CLIENT_ID (str | None)
GOOGLE_CLIENT_SECRET (str | None)
GOOGLE_OAUTH_SCOPES (str)
GOOGLE_TOKEN_REFRESH_MARGIN_SECS (int)
DRIVE_MENU_V2 (bool)
DOCUMENTATION_URL (str)
BOT_LABEL (str)
DRIVE_ADD_HASH (bool)
-
BOT_TOKEN:
str
-
MONGODB_URL:
str
-
DATABASE_NAME:
str
= 'code_keeper_bot'
-
CACHE_ENABLED:
bool
= True
-
MAX_CODE_SIZE:
int
= 100000
-
MAX_FILES_PER_USER:
int
= 1000
-
SUPPORTED_LANGUAGES:
list
= None
-
MAINTENANCE_MODE:
bool
= False
-
MAINTENANCE_MESSAGE:
str
= '🚀 אנחנו מעלים עדכון חדש!\nהבוט יחזור לפעול ממש בקרוב (1 - 3 דקות)'
-
MAINTENANCE_AUTO_WARMUP_SECS:
int
= 180
-
HIGHLIGHT_THEME:
str
= 'github-dark'
-
GIT_CHECKPOINT_PREFIX:
str
= 'checkpoint'
-
GOOGLE_OAUTH_SCOPES:
str
= 'https://www.googleapis.com/auth/drive.file'
-
GOOGLE_TOKEN_REFRESH_MARGIN_SECS:
int
= 120
-
DRIVE_MENU_V2:
bool
= True
-
DOCUMENTATION_URL:
str
= 'https://amirbiron.github.io/CodeBot/'
-
BOT_LABEL:
str
= 'CodeBot'
-
DRIVE_ADD_HASH:
bool
= False
- __init__(BOT_TOKEN, MONGODB_URL, DATABASE_NAME='code_keeper_bot', REDIS_URL=None, CACHE_ENABLED=True, GITHUB_TOKEN=None, PASTEBIN_API_KEY=None, MAX_CODE_SIZE=100000, MAX_FILES_PER_USER=1000, SUPPORTED_LANGUAGES=None, PUBLIC_BASE_URL=None, WEBAPP_URL=None, MAINTENANCE_MODE=False, MAINTENANCE_MESSAGE='🚀 אנחנו מעלים עדכון חדש!\\nהבוט יחזור לפעול ממש בקרוב (1 - 3 דקות)', MAINTENANCE_AUTO_WARMUP_SECS=180, HIGHLIGHT_THEME='github-dark', GIT_CHECKPOINT_PREFIX='checkpoint', GOOGLE_CLIENT_ID=None, GOOGLE_CLIENT_SECRET=None, GOOGLE_OAUTH_SCOPES='https://www.googleapis.com/auth/drive.file', GOOGLE_TOKEN_REFRESH_MARGIN_SECS=120, DRIVE_MENU_V2=True, DOCUMENTATION_URL='https://amirbiron.github.io/CodeBot/', BOT_LABEL='CodeBot', DRIVE_ADD_HASH=False)
- פרמטרים:
BOT_TOKEN (str)
MONGODB_URL (str)
DATABASE_NAME (str)
REDIS_URL (str | None)
CACHE_ENABLED (bool)
GITHUB_TOKEN (str | None)
PASTEBIN_API_KEY (str | None)
MAX_CODE_SIZE (int)
MAX_FILES_PER_USER (int)
SUPPORTED_LANGUAGES (list)
PUBLIC_BASE_URL (str | None)
WEBAPP_URL (str | None)
MAINTENANCE_MODE (bool)
MAINTENANCE_MESSAGE (str)
MAINTENANCE_AUTO_WARMUP_SECS (int)
HIGHLIGHT_THEME (str)
GIT_CHECKPOINT_PREFIX (str)
GOOGLE_CLIENT_ID (str | None)
GOOGLE_CLIENT_SECRET (str | None)
GOOGLE_OAUTH_SCOPES (str)
GOOGLE_TOKEN_REFRESH_MARGIN_SECS (int)
DRIVE_MENU_V2 (bool)
DOCUMENTATION_URL (str)
BOT_LABEL (str)
DRIVE_ADD_HASH (bool)
- Return type:
None
משתני סביבה
רשימת כל משתני הסביבה הנתמכים:
הגדרות בסיסיות:
# Telegram Bot
BOT_TOKEN=your_bot_token_here
BOT_USERNAME=@YourBotUsername
# Database
MONGODB_URL=mongodb://localhost:27017/code_keeper
DATABASE_NAME=code_keeper
# Admin Users
ADMIN_USER_IDS=123456789,987654321
הגדרות GitHub:
# GitHub Integration
GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx
GITHUB_USERNAME=your_username
GITHUB_DEFAULT_REPO=code-snippets
הגדרות אבטחה:
# Encryption
ENCRYPTION_KEY=your-32-byte-encryption-key-here
ENABLE_ENCRYPTION=true
# Rate Limiting
RATE_LIMIT_ENABLED=true
MAX_REQUESTS_PER_MINUTE=30
MAX_FILES_PER_USER=1000
הגדרות ביצועים:
# Cache
REDIS_URL=redis://localhost:6379
CACHE_TTL=3600
# Performance
MAX_WORKERS=4
CONNECTION_POOL_SIZE=10
REQUEST_TIMEOUT=30
הגדרות גיבוי:
# Backup
BACKUP_ENABLED=true
BACKUP_INTERVAL=3600
BACKUP_PATH=/var/backups/code-keeper
BACKUP_RETENTION_DAYS=30
הגדרות מתקדמות
הגדרת Webhooks:
# עבור production עם webhooks
WEBHOOK_URL = "https://your-domain.com/webhook"
WEBHOOK_PORT = 8443
WEBHOOK_LISTEN = "0.0.0.0"
הגדרת Logging:
# רמות לוג
LOG_LEVEL = "INFO" # DEBUG, INFO, WARNING, ERROR, CRITICAL
LOG_FILE = "/var/log/code-keeper/bot.log"
LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
הגדרת שפות תכנות נתמכות:
SUPPORTED_LANGUAGES = [
'python', 'javascript', 'java', 'cpp', 'c',
'csharp', 'go', 'rust', 'ruby', 'php',
'swift', 'kotlin', 'typescript', 'scala',
'r', 'matlab', 'sql', 'bash', 'powershell'
]
הגדרת גבולות:
# גבולות גודל
MAX_FILE_SIZE = 10 * 1024 * 1024 # 10MB
MAX_CODE_LENGTH = 100000 # תווים
MAX_FILENAME_LENGTH = 255
# גבולות כמות
MAX_FILES_PER_USER = 1000
MAX_SEARCH_RESULTS = 50
MAX_BATCH_SIZE = 10
הגדרת MongoDB
אינדקסים מומלצים:
// אינדקס לחיפוש מהיר
db.code_snippets.createIndex({ "user_id": 1, "created_at": -1 })
db.code_snippets.createIndex({ "programming_language": 1 })
db.code_snippets.createIndex({ "file_name": "text" })
// אינדקס לחיפוש טקסט מלא
db.code_snippets.createIndex({ "code": "text", "note": "text" })
הגדרות ביצועים:
# mongod.conf
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 1
net:
maxIncomingConnections: 100
הגדרת Redis Cache
תצורת Redis:
# redis.conf
maxmemory 256mb
maxmemory-policy allkeys-lru
# Persistence
save 900 1
save 300 10
save 60 10000
שימוש בקאש:
# הפעלת קאש
CACHE_ENABLED = True
# מה לשמור בקאש
CACHE_USER_DATA = True
CACHE_SEARCH_RESULTS = True
CACHE_STATISTICS = True
הגדרות אבטחה
הצפנת נתונים:
# הצפנת קוד בדאטאבייס
ENCRYPT_CODE = True
ENCRYPTION_ALGORITHM = "AES-256-GCM"
# הצפנת תקשורת
USE_HTTPS = True
SSL_CERT_PATH = "/path/to/cert.pem"
SSL_KEY_PATH = "/path/to/key.pem"
הגנה מפני התקפות:
# Anti-spam
SPAM_DETECTION_ENABLED = True
MAX_MESSAGES_PER_MINUTE = 10
# Input validation
STRICT_INPUT_VALIDATION = True
SANITIZE_HTML = True
# Session security
SESSION_TIMEOUT = 3600
REQUIRE_AUTHENTICATION = True
תצורה לסביבות שונות
Development:
# .env.development
DEBUG = True
LOG_LEVEL = "DEBUG"
MONGODB_URL = "mongodb://localhost:27017/code_keeper_dev"
Staging:
# .env.staging
DEBUG = False
LOG_LEVEL = "INFO"
MONGODB_URL = "mongodb://staging-db:27017/code_keeper_staging"
Production:
# .env.production
DEBUG = False
LOG_LEVEL = "WARNING"
MONGODB_URL = "mongodb://prod-db:27017/code_keeper"
USE_WEBHOOK = True
דוגמת קובץ .env מלא
# === Telegram Configuration ===
BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz
BOT_USERNAME=@CodeKeeperBot
# === Database Configuration ===
MONGODB_URL=mongodb://localhost:27017/code_keeper
DATABASE_NAME=code_keeper
# === GitHub Integration ===
GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx
GITHUB_USERNAME=myusername
# === Security ===
ENCRYPTION_KEY=my-super-secret-32-byte-key-here!
ADMIN_USER_IDS=123456789,987654321
# === Performance ===
REDIS_URL=redis://localhost:6379
MAX_WORKERS=4
# === Features ===
BACKUP_ENABLED=true
CACHE_ENABLED=true
RATE_LIMIT_ENABLED=true
טיפים וטריקים
שמור את קובץ .env מחוץ ל-Git:
echo ".env" >> .gitignore
השתמש בסיסמאות חזקות:
import secrets encryption_key = secrets.token_hex(32)
בדוק הגדרות בהפעלה:
from config import config config.validate()
גבה את ההגדרות:
cp .env .env.backup