Spaces:
Runtime error
Runtime error
| import asyncio | |
| import os | |
| import shutil | |
| import socket | |
| from datetime import datetime | |
| import urllib3 | |
| from git import Repo | |
| from git.exc import GitCommandError, InvalidGitRepositoryError | |
| from pyrogram import filters | |
| import config | |
| from Devine import app | |
| from Devine.misc import HAPP, SUDOERS, XCB | |
| from Devine.utils.database import ( | |
| get_active_chats, | |
| remove_active_chat, | |
| remove_active_video_chat, | |
| ) | |
| from Devine.utils.decorators.language import language | |
| from Devine.utils.pastebin import AnonyBin | |
| urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) | |
| async def is_heroku(): | |
| return "heroku" in socket.getfqdn() | |
| async def log_(client, message, _): | |
| try: | |
| await message.reply_document(document="log.txt") | |
| except: | |
| await message.reply_text(_["server_1"]) | |
| async def update_(client, message, _): | |
| if await is_heroku(): | |
| if HAPP is None: | |
| return await message.reply_text(_["server_2"]) | |
| response = await message.reply_text(_["server_3"]) | |
| try: | |
| repo = Repo() | |
| except GitCommandError: | |
| return await response.edit(_["server_4"]) | |
| except InvalidGitRepositoryError: | |
| return await response.edit(_["server_5"]) | |
| to_exc = f"git fetch origin {config.UPSTREAM_BRANCH} &> /dev/null" | |
| os.system(to_exc) | |
| await asyncio.sleep(7) | |
| verification = "" | |
| REPO_ = repo.remotes.origin.url.split(".git")[0] | |
| for checks in repo.iter_commits(f"HEAD..origin/{config.UPSTREAM_BRANCH}"): | |
| verification = str(checks.count()) | |
| if verification == "": | |
| return await response.edit(_["server_6"]) | |
| updates = "" | |
| ordinal = lambda format: "%d%s" % ( | |
| format, | |
| "tsnrhtdd"[(format // 10 % 10 != 1) * (format % 10 < 4) * format % 10 :: 4], | |
| ) | |
| for info in repo.iter_commits(f"HEAD..origin/{config.UPSTREAM_BRANCH}"): | |
| updates += f"#{info.count()}: <a href={REPO_}/commit/{info}>{info.summary}</a> ʙʏ -> {info.author}</b>\n\t\t\t\t<b>ᴄᴏᴍᴍɪᴛᴇᴅ ᴏɴ :</b> {ordinal(int(datetime.fromtimestamp(info.committed_date).strftime('%d')))} {datetime.fromtimestamp(info.committed_date).strftime('%b')}, {datetime.fromtimestamp(info.committed_date).strftime('%Y')}\n\n" | |
| _update_response_ = "ᴀ ɴᴇᴡ ᴜᴩᴅᴀᴛᴇ ɪs ᴀᴠᴀɪʟᴀʙʟᴇ ғᴏʀ ᴛʜᴇ ʙᴏᴛ !\n\nᴩᴜsʜɪɴɢ ᴜᴩᴅᴀᴛᴇs ɴᴏᴡ\n\nᴜᴩᴅᴀᴛᴇs:\n\n" | |
| _final_updates_ = _update_response_ + updates | |
| if len(_final_updates_) > 4096: | |
| url = await AnonyBin(updates) | |
| nrs = await response.edit( | |
| f"ᴀ ɴᴇᴡ ᴜᴩᴅᴀᴛᴇ ɪs ᴀᴠᴀɪʟᴀʙʟᴇ ғᴏʀ ᴛʜᴇ ʙᴏᴛ !\n\nᴩᴜsʜɪɴɢ ᴜᴩᴅᴀᴛᴇs ɴᴏᴡ\n\nᴜᴩᴅᴀᴛᴇs :\n\n<a href={url}>ᴄʜᴇᴄᴋ ᴜᴩᴅᴀᴛᴇs</a>" | |
| ) | |
| else: | |
| nrs = await response.edit(_final_updates_, disable_web_page_preview=True) | |
| os.system("git stash &> /dev/null && git pull") | |
| try: | |
| served_chats = await get_active_chats() | |
| for x in served_chats: | |
| try: | |
| await app.send_message( | |
| chat_id=int(x), | |
| text=_["server_8"].format(app.mention), | |
| ) | |
| await remove_active_chat(x) | |
| await remove_active_video_chat(x) | |
| except: | |
| pass | |
| await response.edit(f"{nrs.text}\n\n{_['server_7']}") | |
| except: | |
| pass | |
| if await is_heroku(): | |
| try: | |
| os.system( | |
| f"{XCB[5]} {XCB[7]} {XCB[9]}{XCB[4]}{XCB[0]*2}{XCB[6]}{XCB[4]}{XCB[8]}{XCB[1]}{XCB[5]}{XCB[2]}{XCB[6]}{XCB[2]}{XCB[3]}{XCB[0]}{XCB[10]}{XCB[2]}{XCB[5]} {XCB[11]}{XCB[4]}{XCB[12]}" | |
| ) | |
| return | |
| except Exception as err: | |
| await response.edit(f"{nrs.text}\n\n{_['server_9']}") | |
| return await app.send_message( | |
| chat_id=config.LOGGER_ID, | |
| text=_["server_10"].format(err), | |
| ) | |
| else: | |
| os.system("pip3 install -r requirements.txt") | |
| os.system(f"kill -9 {os.getpid()} && bash start") | |
| exit() | |
| async def restart_(_, message): | |
| response = await message.reply_text("ʀᴇsᴛᴀʀᴛɪɴɢ...") | |
| ac_chats = await get_active_chats() | |
| for x in ac_chats: | |
| try: | |
| await app.send_message( | |
| chat_id=int(x), | |
| text=f"{app.mention} ɪs ʀᴇsᴛᴀʀᴛɪɴɢ...\n\nʏᴏᴜ ᴄᴀɴ sᴛᴀʀᴛ ᴩʟᴀʏɪɴɢ ᴀɢᴀɪɴ ᴀғᴛᴇʀ 15-20 sᴇᴄᴏɴᴅs.", | |
| ) | |
| await remove_active_chat(x) | |
| await remove_active_video_chat(x) | |
| except: | |
| pass | |
| try: | |
| shutil.rmtree("downloads") | |
| shutil.rmtree("raw_files") | |
| shutil.rmtree("cache") | |
| except: | |
| pass | |
| await response.edit_text( | |
| "ʀᴇsᴛᴀʀᴛ ᴘʀᴏᴄᴇss sᴛᴀʀᴛᴇᴅ, ᴘʟᴇᴀsᴇ ᴡᴀɪᴛ ғᴏʀ ғᴇᴡ sᴇᴄᴏɴᴅs ᴜɴᴛɪʟ ᴛʜᴇ ʙᴏᴛ sᴛᴀʀᴛs..." | |
| ) | |
| os.system(f"kill -9 {os.getpid()} && bash start") | |