Single part at the root, COMPOSE_FILE in .env
This commit is contained in:
1 parent
321e4b6b35
commit
aac037676c
86 files changed
+68
-27
No files matched your search
+3
@@ -0,0 +1,3 @@
|
||||
from .modules.client import PyroClient
|
||||
|
||||
__all__ = ["PyroClient"]
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
from .runner import main
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
from . import echo, private
|
||||
|
||||
handlers = echo.handlers + private.handlers
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
from pyrogram import filters, types
|
||||
|
||||
from userbot import PyroClient
|
||||
from utils.logging import logger
|
||||
|
||||
|
||||
@PyroClient.on_message(filters.me)
|
||||
async def echo(_: PyroClient, message: types.Message) -> None:
|
||||
logger.info(f"[cyan]me:[/] {message.text}")
|
||||
|
||||
|
||||
handlers = echo.handlers
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
from . import pm_message
|
||||
|
||||
handlers = pm_message.handlers
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
from pyrogram import filters, types
|
||||
|
||||
from userbot import PyroClient
|
||||
from utils.logging import logger
|
||||
|
||||
|
||||
@PyroClient.on_message(filters.private & ~filters.me)
|
||||
async def pm_message(_: PyroClient, message: types.Message) -> None:
|
||||
sender = message.from_user.id if message.from_user else "unknown"
|
||||
logger.info(f"[green]pm from {sender}:[/] {message.text}")
|
||||
|
||||
|
||||
handlers = pm_message.handlers
|
||||
+1
@@ -0,0 +1 @@
|
||||
pass
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
from pyrogram import Client, enums
|
||||
|
||||
|
||||
class PyroClient(Client):
|
||||
def __init__(
|
||||
self, name: str, *, workdir: str = "sessions", load_handlers: bool = True
|
||||
) -> None:
|
||||
super().__init__(
|
||||
name,
|
||||
workdir=workdir,
|
||||
api_id=2040,
|
||||
api_hash="b18441a1ff607e10a989891a5462e627",
|
||||
device_model="Desktop",
|
||||
system_version="Windows 11 x64",
|
||||
app_version="6.2.4 x64",
|
||||
lang_pack="tdesktop",
|
||||
client_platform=enums.ClientPlatform.DESKTOP,
|
||||
)
|
||||
|
||||
if load_handlers:
|
||||
from userbot import handlers # noqa: PLC0415
|
||||
|
||||
for handler in handlers.handlers:
|
||||
self.add_handler(*handler)
|
||||
|
||||
|
||||
__all__ = ["PyroClient"]
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
import asyncio
|
||||
import contextlib
|
||||
|
||||
import anyio
|
||||
import uvloop
|
||||
|
||||
{% if use_dishka %}from dependencies.container import container
|
||||
{% endif %}from userbot.modules.client import PyroClient
|
||||
{% if database != 'none' %}from utils.db import init_db
|
||||
{% endif %}from utils.logging import logger, setup_logging
|
||||
|
||||
setup_logging()
|
||||
|
||||
|
||||
async def runner() -> None:
|
||||
{% if database != 'none' %} await init_db()
|
||||
|
||||
{% endif %} sessions_dir = anyio.Path("sessions")
|
||||
await sessions_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
started: set[str] = set()
|
||||
clients: dict[int, PyroClient] = {}
|
||||
|
||||
try:
|
||||
while True:
|
||||
current = {path.name async for path in sessions_dir.glob("*.session")}
|
||||
|
||||
for session_file in current - started:
|
||||
started.add(session_file)
|
||||
name = session_file.removesuffix(".session")
|
||||
try:
|
||||
client = PyroClient(name)
|
||||
await client.start()
|
||||
except Exception as e:
|
||||
logger.warning(f"[red]Client {name} failed to start: {e}[/]")
|
||||
continue
|
||||
|
||||
me = client.me
|
||||
logger.info(
|
||||
f"[green]Client started as[/] "
|
||||
f"{me.full_name if me else 'unknown'} ({me.id if me else '?'})"
|
||||
)
|
||||
if me:
|
||||
clients[me.id] = client
|
||||
|
||||
await asyncio.sleep(10)
|
||||
finally:
|
||||
for client in clients.values():
|
||||
with contextlib.suppress(Exception):
|
||||
await client.stop()
|
||||
{% if use_dishka %} await container.close()
|
||||
{% endif %}
|
||||
|
||||
def main() -> None:
|
||||
uvloop.install()
|
||||
|
||||
logger.info("Starting...")
|
||||
|
||||
with contextlib.suppress(KeyboardInterrupt):
|
||||
asyncio.run(runner())
|
||||
|
||||
logger.info("[red]Stopped.[/]")
|
||||
Reference in new issue
Block a user