|
import subprocess |
|
from pyrogram import Client, filters |
|
from Devine import app |
|
from config import OWNER_ID |
|
|
|
@app.on_message(filters.command("redeploy") & filters.user(OWNER_ID)) |
|
async def redeploy(client, message): |
|
msg = await message.reply("Starting bot redeployment process...") |
|
|
|
try: |
|
await msg.edit("Pulling the latest changes from GitHub...") |
|
pull_process = subprocess.run( |
|
["git", "pull", "origin", "main"], |
|
capture_output=True, text=True |
|
) |
|
if pull_process.returncode != 0: |
|
raise Exception(f"Git pull failed: {pull_process.stderr}") |
|
|
|
await msg.edit("Deploying changes to Heroku...") |
|
deploy_process = subprocess.run( |
|
["heroku", "git:remote", "-a", "your-heroku-app-name"], |
|
capture_output=True, text=True |
|
) |
|
if deploy_process.returncode != 0: |
|
raise Exception(f"Heroku remote setup failed: {deploy_process.stderr}") |
|
|
|
deploy_process = subprocess.run( |
|
["git", "push", "heroku", "main"], |
|
capture_output=True, text=True |
|
) |
|
if deploy_process.returncode != 0: |
|
raise Exception(f"Git push to Heroku failed: {deploy_process.stderr}") |
|
|
|
await msg.edit("Restarting the Heroku app...") |
|
restart_process = subprocess.run( |
|
["heroku", "ps:restart", "--app", "your-heroku-app-name"], |
|
capture_output=True, text=True |
|
) |
|
if restart_process.returncode != 0: |
|
raise Exception(f"Heroku restart failed: {restart_process.stderr}") |
|
|
|
await msg.edit("Bot redeployment completed successfully!") |
|
|
|
except Exception as e: |
|
await msg.edit(f"Error during redeployment: {str(e)}") |
|
|