playbook/antigravity-awesome-skills/plugins/antigravity-awesome-skills-.../skills/telegram/scripts/setup_project.py

104 lines
3.6 KiB
Python

#!/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()