Download app/sweeper.py from 000x/MusicGen: direct link, hf CLI and curl.
- Browser
- Download file 1.26 kB
-
https://huggingface.co/spaces/000x/MusicGen/resolve/main/app/sweeper.py
- Command line
-
hf download hf://spaces/000x/MusicGen/app/sweeper.py
-
curl -L -o sweeper.py https://huggingface.co/spaces/000x/MusicGen/resolve/main/app/sweeper.py
1.26 kB
| """Runs due "delete for everyone" jobs for the bot's own messages.""" | |
| from __future__ import annotations | |
| import asyncio | |
| import logging | |
| from collections.abc import Awaitable, Callable | |
| log = logging.getLogger("sweeper") | |
| async def run_deletes(db, delete_for_everyone: Callable[[str, str], Awaitable[None]], | |
| is_connected: Callable[[], bool], max_rows: int = 20) -> int: | |
| """Deletes due messages. Returns how many were deleted. Waits while offline.""" | |
| if not is_connected(): | |
| return 0 | |
| deleted = 0 | |
| for row in await db.due_deletes(max_rows): | |
| try: | |
| await delete_for_everyone(row["jid"], row["msg_id"]) | |
| await db.remove_delete(row["id"]) | |
| deleted += 1 | |
| except Exception as e: # keep going with the other rows | |
| log.error("Auto-delete failed for %s: %s", row["msg_id"], e) | |
| await db.fail_delete(row["id"], str(e)) | |
| return deleted | |
| async def run_forever(db, delete_for_everyone, is_connected, interval: float = 60.0) -> None: | |
| while True: | |
| try: | |
| await run_deletes(db, delete_for_everyone, is_connected) | |
| except Exception as e: | |
| log.error("Auto-delete pass failed: %s", e) | |
| await asyncio.sleep(interval) | |