diff options
| author | Arslaan Pathan <[email protected]> | 2026-07-09 17:58:29 +1200 |
|---|---|---|
| committer | Arslaan Pathan <[email protected]> | 2026-07-09 17:58:29 +1200 |
| commit | 8dea6c48621b6f933a3a88fbffa4277bda8c00c5 (patch) | |
| tree | cd576333e906dc210da067809033a4ad9c6d2a67 /src/botnet.py | |
| parent | d9499138aeaf32faee65640e624719df83f465eb (diff) | |
| download | slack-botnet-8dea6c48621b6f933a3a88fbffa4277bda8c00c5.tar.xz slack-botnet-8dea6c48621b6f933a3a88fbffa4277bda8c00c5.zip | |
Botnet deployments work!
:yayayayayay-ctp:
Diffstat (limited to 'src/botnet.py')
| -rw-r--r-- | src/botnet.py | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/botnet.py b/src/botnet.py new file mode 100644 index 0000000..46b59d5 --- /dev/null +++ b/src/botnet.py @@ -0,0 +1,67 @@ +from .db import create_deployment, get_daily_user_deployment_count, get_deployment, update_deployment_status, get_active_users, get_user, add_deployment_message, get_deployment_messages +from slack_sdk.web.async_client import AsyncWebClient +import os +from dotenv import load_dotenv + +DAILY_LIMIT = 2 + +load_dotenv() +selfbot_token = os.environ.get("SLACK_SELFBOT_OAUTH_XOXP") + +async def deploy_message(user_id: str, message: str): + user = await get_user(user_id) + if not user: + return { + "success": False, + "error": "You must be part of the botnet to deploy messages!" + } + + daily_count = await get_daily_user_deployment_count(user_id) + if daily_count >= DAILY_LIMIT and user_id not in ["U0AKCBZHHMH"]: + return { + "success": False, + "error": f"You've reached your daily limit of {DAILY_LIMIT} messages!" + } + + deployment_id = await create_deployment(user_id, message) + + print(f"DEBUG: Executing the deployment {deployment_id} on arrival - REMOVE THIS LATER!") + await execute_deployment(deployment_id) + + return { + "success": True, + "deployment_id": deployment_id, + "message": "Your message has been deployed!" + } + +async def execute_deployment(deployment_id: int): + deployment = await get_deployment(deployment_id) + if not deployment: + return + + users = await get_active_users() + message = deployment["message"] + + for user in users: + try: + client = AsyncWebClient(token=user["oauth_token"]) + response = await client.chat_postMessage( + channel="C0BGMV1CAQG", # put it in #botnet for now, make it detect recent thread with CM approval yada yada later + text=message, + as_user=True + ) + await add_deployment_message(deployment_id=deployment_id, user_id=user["slack_id"], channel_id="C0BGMV1CAQG", message_id=response["ts"]) + except Exception as e: + print(f"Failed to send #{deployment_id} on behalf of {user['slack_id']}: {e}") + + try: + client = AsyncWebClient(token=selfbot_token) + await client.chat_postMessage( + channel="C0BGMV1CAQG", + text=f"Deployment #{deployment_id} deployed.\n\nMessage: {message}", + as_user=True + ) + except Exception as e: + print(f"Failed to send deployment status message: {e}") + + await update_deployment_status(deployment_id, "deployed") |
