#!/usr/bin/env python3 """ Setup a new Telegram Bot project with boilerplate code. Usage: python setup_project.py --language nodejs --path ./my-telegram-bot python setup_project.py --language python --path ./my-telegram-bot python setup_project.py --language python --path ./my-bot --with-webhook --with-ai """ import argparse import os import shutil import sys SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) SKILL_DIR = os.path.dirname(SCRIPT_DIR) BOILERPLATE_DIR = os.path.join(SKILL_DIR, "assets", "boilerplate") def setup_nodejs(project_path: str, with_webhook: bool = False, with_ai: bool = False): """Setup Node.js/TypeScript project.""" src_dir = os.path.join(BOILERPLATE_DIR, "nodejs") if not os.path.exists(src_dir): print(f"ERROR: Boilerplate not found at {src_dir}") sys.exit(1) # Copy boilerplate shutil.copytree(src_dir, project_path, dirs_exist_ok=True) print(f"Node.js project created at: {project_path}") print("\nNext steps:") print(f" 1. cd {project_path}") print(" 2. npm install") print(" 3. Copy .env.example to .env and add your bot token") print(" 4. npm run dev (development with hot reload)") print(" 5. npm run build && npm start (production)") if with_webhook: print("\n Webhook mode enabled - configure WEBHOOK_URL in .env") if with_ai: print("\n AI integration enabled - configure ANTHROPIC_API_KEY in .env") def setup_python(project_path: str, with_webhook: bool = False, with_ai: bool = False): """Setup Python project.""" src_dir = os.path.join(BOILERPLATE_DIR, "python") if not os.path.exists(src_dir): print(f"ERROR: Boilerplate not found at {src_dir}") sys.exit(1) # Copy boilerplate shutil.copytree(src_dir, project_path, dirs_exist_ok=True) print(f"Python project created at: {project_path}") print("\nNext steps:") print(f" 1. cd {project_path}") print(" 2. pip install -r requirements.txt") print(" 3. Copy .env.example to .env and add your bot token") print(" 4. python bot.py (long polling mode)") if with_webhook: print(" 5. python webhook_server.py (webhook mode)") if with_ai: print("\n AI integration enabled - configure ANTHROPIC_API_KEY in .env") def main(): parser = argparse.ArgumentParser(description="Setup Telegram Bot project") parser.add_argument("--language", type=str, required=True, choices=["nodejs", "python"], help="Project language") parser.add_argument("--path", type=str, required=True, help="Project directory path") parser.add_argument("--with-webhook", action="store_true", help="Include webhook server setup") parser.add_argument("--with-ai", action="store_true", help="Include AI integration boilerplate") parser.add_argument("--force", action="store_true", help="Overwrite existing directory") args = parser.parse_args() project_path = os.path.abspath(args.path) if os.path.exists(project_path) and not args.force: print(f"ERROR: Directory already exists: {project_path}") print("Use --force to overwrite") sys.exit(1) os.makedirs(project_path, exist_ok=True) if args.language == "nodejs": setup_nodejs(project_path, args.with_webhook, args.with_ai) elif args.language == "python": setup_python(project_path, args.with_webhook, args.with_ai) print("\nDone!") if __name__ == "__main__": main()