2023-03-20 14:55:42 +02:00
|
|
|
from os import getpid, path
|
|
|
|
from datetime import datetime
|
2023-01-09 16:36:56 +02:00
|
|
|
from sys import exit
|
2023-03-20 14:55:42 +02:00
|
|
|
from time import time
|
2022-08-30 14:53:17 +03:00
|
|
|
|
2023-03-12 23:14:03 +02:00
|
|
|
from modules.cli import *
|
2023-01-17 12:43:10 +02:00
|
|
|
from modules.logger import logWrite
|
2023-01-10 13:52:44 +02:00
|
|
|
from modules.scheduler import scheduler
|
2023-03-20 14:55:42 +02:00
|
|
|
from modules.utils import configGet, jsonLoad, jsonSave, killProc, locale
|
2022-08-30 14:53:17 +03:00
|
|
|
|
|
|
|
# Import ===================================================================================================================================
|
|
|
|
try:
|
2023-02-14 17:25:56 +02:00
|
|
|
from pyrogram.sync import idle
|
2023-03-20 14:55:42 +02:00
|
|
|
from pyrogram.errors import bad_request_400
|
|
|
|
from dateutil.relativedelta import relativedelta
|
2023-03-12 23:14:03 +02:00
|
|
|
|
|
|
|
from modules.app import app
|
2022-08-30 14:53:17 +03:00
|
|
|
except ModuleNotFoundError:
|
|
|
|
print(locale("deps_missing", "console", locale=configGet("locale")), flush=True)
|
2022-08-31 15:31:24 +03:00
|
|
|
exit()
|
2023-03-09 12:33:02 +02:00
|
|
|
# ===========================================================================================================================================
|
2022-08-30 14:53:17 +03:00
|
|
|
|
|
|
|
|
2022-08-31 15:31:24 +03:00
|
|
|
pid = getpid()
|
2022-08-30 14:53:17 +03:00
|
|
|
|
|
|
|
# Work in progress
|
|
|
|
# def check_forwards(app):
|
|
|
|
|
|
|
|
# try:
|
|
|
|
|
|
|
|
# index = jsonLoad(configGet("index", "locations"))
|
|
|
|
# channel = app.get_chat(configGet("channel", "posting"))
|
|
|
|
|
|
|
|
# peer = app.resolve_peer(configGet("channel", "posting"))
|
|
|
|
# print(peer, flush=True)
|
|
|
|
|
|
|
|
# posts_list = [i for i in range(index["last_id"]-100,index["last_id"])]
|
|
|
|
# last_posts = app.get_messages(configGet("channel", "posting"), message_ids=posts_list)
|
|
|
|
|
|
|
|
# for post in last_posts:
|
|
|
|
# post_forwards = GetMessagePublicForwards(channel=peer, msg_id=post.id, offset_peer=peer, offset_rate=0, offset_id=0, limit=100)
|
|
|
|
# print(post_forwards, flush=True)
|
|
|
|
# for forward in post_forwards:
|
|
|
|
# print(forward, flush=True)
|
|
|
|
|
|
|
|
# except Exception as exp:
|
|
|
|
|
|
|
|
# logWrite("Could not get last posts forwards due to {0} with traceback {1}".format(str(exp), traceback.format_exc()), debug=True)
|
|
|
|
|
|
|
|
# if configGet("error", "reports"):
|
2023-01-10 13:52:44 +02:00
|
|
|
# app.send_message(configGet("admin"), traceback.format_exc())
|
2022-08-30 14:53:17 +03:00
|
|
|
|
|
|
|
# pass
|
|
|
|
|
|
|
|
|
|
|
|
# Work in progress
|
|
|
|
# @app.on_message(~ filters.scheduled & filters.command(["forwards"], prefixes="/"))
|
|
|
|
# def cmd_forwards(app, msg):
|
|
|
|
# check_forwards(app)
|
|
|
|
|
|
|
|
|
2023-01-10 14:06:24 +02:00
|
|
|
# Imports ==================================================================================================================================
|
2023-02-14 12:38:54 +02:00
|
|
|
from plugins.commands.general import *
|
2023-03-20 14:55:42 +02:00
|
|
|
from plugins.callbacks.shutdown import *
|
2022-08-30 14:53:17 +03:00
|
|
|
|
2022-08-30 15:10:05 +03:00
|
|
|
if configGet("submit", "mode"):
|
2023-02-17 22:54:14 +02:00
|
|
|
from plugins.callbacks.nothing import *
|
2023-02-14 12:38:54 +02:00
|
|
|
from plugins.callbacks.submission import *
|
|
|
|
from plugins.commands.mode_submit import *
|
|
|
|
from plugins.handlers.submission import *
|
2023-01-17 15:11:23 +02:00
|
|
|
|
2023-03-18 21:53:26 +02:00
|
|
|
if configGet("post", "mode"):
|
|
|
|
from plugins.commands.photos import *
|
|
|
|
|
2023-03-12 20:34:27 +02:00
|
|
|
# if configGet("api_based", "mode"):
|
|
|
|
# from modules.api_client import authorize
|
2023-03-09 12:33:02 +02:00
|
|
|
# ===========================================================================================================================================
|
2022-08-30 14:53:17 +03:00
|
|
|
|
2022-08-30 15:01:12 +03:00
|
|
|
# Work in progress
|
|
|
|
# Handle new forwards
|
|
|
|
# @app.on_raw_update()
|
|
|
|
# def fwd_got(app, update, users, chats):
|
|
|
|
# if isinstance(update, UpdateChannelMessageForwards):
|
|
|
|
# logWrite(f'Forward count increased to {update["forwards"]} on post {update["id"]} in channel {update["channel_id"]}')
|
|
|
|
# logWrite(str(users), debug=True)
|
|
|
|
# logWrite(str(chats), debug=True)
|
|
|
|
# # else:
|
|
|
|
# # logWrite(f"Got raw update of type {type(update)} with contents {update}", debug=True)
|
2022-08-30 14:53:17 +03:00
|
|
|
|
2023-02-14 12:38:54 +02:00
|
|
|
# async def main():
|
|
|
|
|
|
|
|
# await app.start()
|
|
|
|
|
|
|
|
# logWrite(locale("startup", "console", locale=configGet("locale")).format(str(pid)))
|
|
|
|
|
|
|
|
# if configGet("startup", "reports"):
|
|
|
|
# await app.send_message(configGet("admin"), locale("startup", "message", locale=configGet("locale")).format(str(pid)))
|
|
|
|
|
|
|
|
# if configGet("post", "mode"):
|
|
|
|
# scheduler.start()
|
|
|
|
|
|
|
|
# if configGet("api_based", "mode"):
|
|
|
|
# token = authorize()
|
|
|
|
# if len(get(f'{configGet("address", "posting", "api")}/albums?q={configGet("queue", "posting", "api", "albums")}', headers={"Authorization": f"Bearer {token}"}).json()["results"]) == 0:
|
|
|
|
# post(f'{configGet("address", "posting", "api")}/albums?name={configGet("queue", "posting", "api", "albums")}&title={configGet("queue", "posting", "api", "albums")}', headers={"Authorization": f"Bearer {token}"})
|
|
|
|
|
|
|
|
# await idle()
|
|
|
|
|
|
|
|
# await app.send_message(configGet("admin"), locale("shutdown", "message", locale=configGet("locale")).format(str(pid)))
|
|
|
|
# logWrite(locale("shutdown", "console", locale=configGet("locale")).format(str(pid)))
|
|
|
|
|
|
|
|
# killProc(pid)
|
|
|
|
|
|
|
|
# if __name__ == "__main__":
|
|
|
|
# if find_spec("uvloop") is not None:
|
|
|
|
# uvloop.install()
|
|
|
|
# asyncio.run(main())
|
|
|
|
|
2022-08-30 14:53:17 +03:00
|
|
|
if __name__ == "__main__":
|
2023-03-20 14:55:42 +02:00
|
|
|
logWrite(locale("startup", "console").format(str(pid)))
|
2022-08-30 14:53:17 +03:00
|
|
|
|
2023-01-10 13:52:44 +02:00
|
|
|
app.start()
|
2023-03-09 12:33:02 +02:00
|
|
|
|
2022-08-30 14:53:17 +03:00
|
|
|
if configGet("startup", "reports"):
|
2023-03-20 14:55:42 +02:00
|
|
|
try:
|
|
|
|
if path.exists(path.join(configGet("cache", "locations"), "shutdown_time")):
|
|
|
|
downtime = relativedelta(
|
|
|
|
datetime.now(),
|
|
|
|
datetime.fromtimestamp(
|
|
|
|
jsonLoad(
|
|
|
|
path.join(configGet("cache", "locations"), "shutdown_time")
|
|
|
|
)["timestamp"]
|
|
|
|
),
|
|
|
|
)
|
|
|
|
if downtime.days >= 1:
|
|
|
|
app.send_message(
|
|
|
|
configGet("owner"),
|
|
|
|
locale(
|
|
|
|
"startup_downtime_days",
|
|
|
|
"message",
|
|
|
|
).format(pid, downtime.days),
|
|
|
|
)
|
|
|
|
elif downtime.hours >= 1:
|
|
|
|
app.send_message(
|
|
|
|
configGet("owner"),
|
|
|
|
locale(
|
|
|
|
"startup_downtime_hours",
|
|
|
|
"message",
|
|
|
|
).format(pid, downtime.hours),
|
|
|
|
)
|
|
|
|
else:
|
|
|
|
app.send_message(
|
|
|
|
configGet("owner"),
|
|
|
|
locale(
|
|
|
|
"startup_downtime_minutes",
|
|
|
|
"message",
|
|
|
|
locale=configGet("locale"),
|
|
|
|
).format(pid, downtime.minutes),
|
|
|
|
)
|
|
|
|
else:
|
|
|
|
app.send_message(
|
|
|
|
configGet("owner"),
|
|
|
|
locale("startup", "message").format(pid),
|
|
|
|
)
|
|
|
|
except bad_request_400.PeerIdInvalid:
|
|
|
|
logWrite(
|
|
|
|
f"Could not send startup message to bot owner. Perhaps user has not started the bot yet."
|
|
|
|
)
|
2022-08-30 14:53:17 +03:00
|
|
|
|
2023-01-09 19:01:07 +02:00
|
|
|
if configGet("post", "mode"):
|
|
|
|
scheduler.start()
|
2023-01-10 13:52:44 +02:00
|
|
|
|
2023-03-09 12:33:02 +02:00
|
|
|
# if configGet("api_based", "mode"):
|
2023-02-24 20:25:57 +02:00
|
|
|
# token = await authorize()
|
|
|
|
# if len(get(f'{configGet("address", "posting", "api")}/albums?q={configGet("queue", "posting", "api", "albums")}', headers={"Authorization": f"Bearer {token}"}).json()["results"]) == 0:
|
|
|
|
# post(f'{configGet("address", "posting", "api")}/albums?name={configGet("queue", "posting", "api", "albums")}&title={configGet("queue", "posting", "api", "albums")}', headers={"Authorization": f"Bearer {token}"})
|
2023-01-17 15:11:23 +02:00
|
|
|
|
2022-08-30 14:53:17 +03:00
|
|
|
idle()
|
|
|
|
|
2023-03-20 14:55:42 +02:00
|
|
|
try:
|
|
|
|
app.send_message(
|
|
|
|
configGet("owner"),
|
|
|
|
locale("shutdown", "message").format(pid),
|
|
|
|
)
|
|
|
|
except bad_request_400.PeerIdInvalid:
|
|
|
|
logWrite(
|
|
|
|
f"Could not send shutdown message to bot owner. Perhaps user has not started the bot yet."
|
|
|
|
)
|
|
|
|
|
|
|
|
makedirs(configGet("cache", "locations"), exist_ok=True)
|
|
|
|
jsonSave(
|
|
|
|
{"timestamp": time()},
|
|
|
|
path.join(configGet("cache", "locations"), "shutdown_time"),
|
2023-03-09 12:33:02 +02:00
|
|
|
)
|
2023-03-20 14:55:42 +02:00
|
|
|
|
|
|
|
logWrite(locale("shutdown", "console").format(str(pid)))
|
|
|
|
|
|
|
|
scheduler.shutdown()
|
2022-08-30 14:53:17 +03:00
|
|
|
|
2023-03-09 12:33:02 +02:00
|
|
|
killProc(pid)
|