# Path: botlistbot/appglobals.py
# ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
# ACCOUNTS_DIR = Path(ROOT_DIR) / "accounts"
# DATABASE_PATH = config('DATABASE_URL')
# 
# Path: botlistbot/settings.py
# DEV = config("DEV", default=False, cast=bool)
# PORT = config("PORT", default=8443, cast=int)
# BOT_TOKEN = config("BOT_TOKEN", cast=lambda v: str(v) if v else None, default=None) or (
#     str(sys.argv[1]) if len(sys.argv) > 1 else None
# )
# LOG_DIR = config("LOG_DIR", default=os.path.dirname(os.path.abspath(__file__)))
# BOT_THUMBNAIL_DIR = config(
#     "BOT_THUMBNAIL_DIR",
#     default="./bot-profile-pictures",
# )
# ADMINS = [
#     62056065,  # JosXa
#     918962,  # T3CHNO
#     522605269,  # n9ghtLY
# ]
# MODERATORS = [
#     7679610,  # Fabian Pastor
#     278941742,  # riccardo
#     317434635,  # jfowl
#     691609650,  # Lulzx
#     200344026,  # the scientist
#     234480941,  # the one and only twitface
# ] + ADMINS
# DEVELOPER_ID = config("DEVELOPER_ID", default=62056065)
# BOT_CONSIDERED_NEW = 1  # Revision difference
# WORKER_COUNT = 5 if DEV else 40
# TEST_BOT_NAME = "gottesgebot"
# LIVE_BOT_NAME = "botlistbot"
# SELF_BOT_NAME = TEST_BOT_NAME if DEV else LIVE_BOT_NAME
# SELF_BOT_ID = "182355371" if DEV else "265482650"
# TEST_GROUP_ID = -1001118582923  # Area 51
# BOTLIST_NOTIFICATIONS_ID = -1001175567094 if DEV else -1001074366879
# BOTLISTCHAT_ID = TEST_GROUP_ID if DEV else -1001067163791
# BLSF_ID = TEST_GROUP_ID if DEV else -1001098339113
# SELF_CHANNEL_USERNAME = "botlist_testchannel" if DEV else "botlist"
# REGEX_BOT_IN_TEXT = r".*(@[a-zA-Z0-9_]{3,31}).*"
# REGEX_BOT_ONLY = r"(@[a-zA-Z0-9_]{3,31})"
# PAGE_SIZE_SUGGESTIONS_LIST = 5
# PAGE_SIZE_BOT_APPROVAL = 5
# MAX_SEARCH_RESULTS = 25
# MAX_BOTS_PER_MESSAGE = 140
# BOT_ACCEPTED_IDLE_TIME = 2  # minutes
# SUGGESTION_LIMIT = 25
# API_URL = "localhost" if DEV else "josxa.jumpingcrab.com"
# API_PORT = 6060
# RUN_BOTCHECKER = config("RUN_BOTCHECKER", True, cast=bool)
# USE_USERBOT = RUN_BOTCHECKER
# API_ID = config("API_ID", cast=lambda v: int(v) if v else None, default=None)
# API_HASH = config("API_HASH", default=None)
# USERBOT_SESSION = config("USERBOT_SESSION", default=None)
# USERBOT_PHONE = config("USERBOT_PHONE", default=None)
# PING_MESSAGES = ["/start", "/help"]
# PING_INLINEQUERIES = ["", "abc", "/test"]
# BOTCHECKER_CONCURRENT_COUNT = 20
# BOTCHECKER_INTERVAL = 3600 * 3
# DELETE_CONVERSATION_AFTER_PING = config(
#     "DELETE_CONVERSATIONS_AFTER_PING", True, cast=bool
# )
# NOTIFY_NEW_PROFILE_PICTURE = not DEV
# DOWNLOAD_PROFILE_PICTURES = config("DOWNLOAD_PROFILE_PICTURES", True, cast=bool)
# DISABLE_BOT_INACTIVITY_DELTA = timedelta(days=15)
# OFFLINE_DETERMINERS = [
#     "under maintenance",
#     "bot turned off",
#     "bot parked",
#     "offline for maintenance",
# ]
# BOTBUILDER_DETERMINERS = [
#     "use /off to pause your subscription",
#     "use /stop to unsubscribe",
#     "manybot",
#     "chatfuelbot",
# ]
# FORBIDDEN_KEYWORDS = config("FORBIDDEN_KEYWORDS", cast=Csv(), default=[])
# SENTRY_URL = config("SENTRY_URL", default=None)
# SENTRY_ENVIRONMENT = config("SENTRY_ENVIRONMENT", default=None)
# DEBUG_LOG_FILE = "botlistbot.log"
# BOTLIST_REQUESTS_CHANNEL = None
# BOT_UNDER_TEST = TEST_BOT_NAME if DEV else LIVE_BOT_NAME
# TEST_USERBOT_PHONE = config("TEST_USERBOT_PHONE", default=None)
# TEST_USERBOT_SESSION = config("TEST_USERBOT_SESSION", default=None)
# TEST_GROUP_ID = 1118582923
# def is_sentry_enabled() -> bool:


import asyncio
import os
import threading
from pathlib import Path
from pyrogram import Client
from botlistbot import appglobals
from botlistbot import settings
from logzero import logger as log
from botcheckerworker.botchecker import BotChecker
from botcheckerworker.user_account_repository import download_session




download_session("josxa", appglobals.ACCOUNTS_DIR)

bot_checker = BotChecker(
    event_loop=asyncio.get_event_loop(),
    session_name=settings.USERBOT_SESSION,
    api_id=settings.API_ID,
    api_hash=settings.API_HASH,
    phone_number=settings.USERBOT_PHONE,
    workdir=appglobals.ACCOUNTS_DIR
)


async def start_userbot():
    log.info("Starting Userbot...")
    bot_checker.start()
    log.info("Userbot running.")

    await bot_checker.idle()


# Path: botlistbot/appglobals.py
# ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
# ACCOUNTS_DIR = Path(ROOT_DIR) / "accounts"
# DATABASE_PATH = config('DATABASE_URL')
# 
# Path: botlistbot/settings.py
# DEV = config("DEV", default=False, cast=bool)
# PORT = config("PORT", default=8443, cast=int)
# BOT_TOKEN = config("BOT_TOKEN", cast=lambda v: str(v) if v else None, default=None) or (
#     str(sys.argv[1]) if len(sys.argv) > 1 else None
# )
# LOG_DIR = config("LOG_DIR", default=os.path.dirname(os.path.abspath(__file__)))
# BOT_THUMBNAIL_DIR = config(
#     "BOT_THUMBNAIL_DIR",
#     default="./bot-profile-pictures",
# )
# ADMINS = [
#     62056065,  # JosXa
#     918962,  # T3CHNO
#     522605269,  # n9ghtLY
# ]
# MODERATORS = [
#     7679610,  # Fabian Pastor
#     278941742,  # riccardo
#     317434635,  # jfowl
#     691609650,  # Lulzx
#     200344026,  # the scientist
#     234480941,  # the one and only twitface
# ] + ADMINS
# DEVELOPER_ID = config("DEVELOPER_ID", default=62056065)
# BOT_CONSIDERED_NEW = 1  # Revision difference
# WORKER_COUNT = 5 if DEV else 40
# TEST_BOT_NAME = "gottesgebot"
# LIVE_BOT_NAME = "botlistbot"
# SELF_BOT_NAME = TEST_BOT_NAME if DEV else LIVE_BOT_NAME
# SELF_BOT_ID = "182355371" if DEV else "265482650"
# TEST_GROUP_ID = -1001118582923  # Area 51
# BOTLIST_NOTIFICATIONS_ID = -1001175567094 if DEV else -1001074366879
# BOTLISTCHAT_ID = TEST_GROUP_ID if DEV else -1001067163791
# BLSF_ID = TEST_GROUP_ID if DEV else -1001098339113
# SELF_CHANNEL_USERNAME = "botlist_testchannel" if DEV else "botlist"
# REGEX_BOT_IN_TEXT = r".*(@[a-zA-Z0-9_]{3,31}).*"
# REGEX_BOT_ONLY = r"(@[a-zA-Z0-9_]{3,31})"
# PAGE_SIZE_SUGGESTIONS_LIST = 5
# PAGE_SIZE_BOT_APPROVAL = 5
# MAX_SEARCH_RESULTS = 25
# MAX_BOTS_PER_MESSAGE = 140
# BOT_ACCEPTED_IDLE_TIME = 2  # minutes
# SUGGESTION_LIMIT = 25
# API_URL = "localhost" if DEV else "josxa.jumpingcrab.com"
# API_PORT = 6060
# RUN_BOTCHECKER = config("RUN_BOTCHECKER", True, cast=bool)
# USE_USERBOT = RUN_BOTCHECKER
# API_ID = config("API_ID", cast=lambda v: int(v) if v else None, default=None)
# API_HASH = config("API_HASH", default=None)
# USERBOT_SESSION = config("USERBOT_SESSION", default=None)
# USERBOT_PHONE = config("USERBOT_PHONE", default=None)
# PING_MESSAGES = ["/start", "/help"]
# PING_INLINEQUERIES = ["", "abc", "/test"]
# BOTCHECKER_CONCURRENT_COUNT = 20
# BOTCHECKER_INTERVAL = 3600 * 3
# DELETE_CONVERSATION_AFTER_PING = config(
#     "DELETE_CONVERSATIONS_AFTER_PING", True, cast=bool
# )
# NOTIFY_NEW_PROFILE_PICTURE = not DEV
# DOWNLOAD_PROFILE_PICTURES = config("DOWNLOAD_PROFILE_PICTURES", True, cast=bool)
# DISABLE_BOT_INACTIVITY_DELTA = timedelta(days=15)
# OFFLINE_DETERMINERS = [
#     "under maintenance",
#     "bot turned off",
#     "bot parked",
#     "offline for maintenance",
# ]
# BOTBUILDER_DETERMINERS = [
#     "use /off to pause your subscription",
#     "use /stop to unsubscribe",
#     "manybot",
#     "chatfuelbot",
# ]
# FORBIDDEN_KEYWORDS = config("FORBIDDEN_KEYWORDS", cast=Csv(), default=[])
# SENTRY_URL = config("SENTRY_URL", default=None)
# SENTRY_ENVIRONMENT = config("SENTRY_ENVIRONMENT", default=None)
# DEBUG_LOG_FILE = "botlistbot.log"
# BOTLIST_REQUESTS_CHANNEL = None
# BOT_UNDER_TEST = TEST_BOT_NAME if DEV else LIVE_BOT_NAME
# TEST_USERBOT_PHONE = config("TEST_USERBOT_PHONE", default=None)
# TEST_USERBOT_SESSION = config("TEST_USERBOT_SESSION", default=None)
# TEST_GROUP_ID = 1118582923
# def is_sentry_enabled() -> bool:


# Path: botlistbot/botcheckerworker/main.py
import asyncio
import os
import threading
from pathlib import Path
from pyrogram import Client
from botlistbot import appglobals
from botlistbot import settings
from logzero import logger as log
from botcheckerworker.botchecker import BotChecker
from botcheckerworker.user_account_repository import download_session





download_session("josxa", appglobals.ACCOUNTS_DIR)

bot_checker = BotChecker(
    event_loop=asyncio.get_event_loop(),
    session_name=settings.USERBOT_SESSION,
    api_id=settings.API_ID,
    api_hash=settings.API_HASH,
    phone_number=settings.USERBOT_PHONE,
    workdir=appglobals.ACCOUNTS_DIR
)


async def start_userbot():
    log.info("Starting Userbot...")
    bot_checker.start()
    log.info("Userbot running.")

    await bot_checker.idle()


    if settings.RUN_BOTCHECKER: