first commit

This commit is contained in:
usernames122
2025-08-26 11:42:33 +02:00
commit 594adde6ff
3 changed files with 352 additions and 0 deletions

129
button_api.py Normal file
View File

@@ -0,0 +1,129 @@
import requests
class ButtonAPIClient:
def __init__(self, base_url: str = "https://buttonapi.nonamesoft.xyz/"):
self.base_url = base_url.rstrip("/")
def _post(self, endpoint: str, data: dict):
url = f"{self.base_url}{endpoint}"
response = requests.post(url, json=data)
print(response.text)
return response.status_code, response.json()
# 1. User management
def register(self, username, password):
return self._post("/api/v3/register/", {
"username": username,
"password": password
})
def login(self, username, password):
return self._post("/api/v3/login/", {
"username": username,
"password": password
})
# 2. Token system
def generate_token(self, username, password):
return self._post("/api/v3/generatetoken/", {
"username": username,
"password": password
})
def get_token(self, username, password):
return self._post("/api/v3/gettoken/", {
"username": username,
"password": password
})
# 3. Messaging system
def send_discord_message(self, token, message):
return self._post("/api/v3/senddcmsgwithtoken/", {
"token": token,
"message": message
})
def get_messages_for_everyone(self, token, count):
return self._post("/api/v3/getmessagesforeveryone/", {
"token": token,
"count": count
})
def get_my_sent_messages(self, token):
return self._post("/api/v3/getmysentmessages/", {
"token": token
})
def read_message_by_id(self, token, message_id):
return self._post("/api/v3/readmessagesfromchannel/", {
"token": token,
"message_id": message_id
})
def delete_message(self, token, message_id):
return self._post("/api/v3/deletemessage/", {
"token": token,
"message_id": message_id
})
# 4. Channel system
def create_channel(self, token, name):
return self._post("/api/v3/makechannel/", {
"token": token,
"name": name
})
def add_user_to_channel(self, token, channel_name, username):
return self._post("/api/v3/addusertochannel/", {
"token": token,
"name": channel_name,
"username": username
})
def read_messages_from_channel(self, token, name, count):
return self._post("/api/v3/readmessagesfromchannel/", {
"token": token,
"name": name,
"count": count
})
def send_message_to_channel(self, token, message, channel):
return self._post("/api/v3/sendmessage/", {
"token": token,
"message": message,
"channel": channel
})
def get_user_channels(self, token):
return self._post("/api/v3/getchannels/", {
"token": token
})
# 5. DM system
def get_dms(self, token, count):
return self._post("/api/v3/getdms/", {
"token": token,
"count": count
})
def send_dm(self, token, username, message):
return self._post("/api/v3/senddm/", {
"token": token,
"username": username,
"message": message
})
# 6. Discord Bot system (Beta)
def send_dc_channel_message(self, token, channel, message):
return self._post("/api/v3/senddcmsg/", {
"token": token,
"channel": channel,
"message": message
})
def send_dc_dm_message(self, token, user, message):
return self._post("/api/v3/senddcmsg/", {
"token": token,
"channel": user,
"message": message
})

78
buttonabuse.py Normal file
View File

@@ -0,0 +1,78 @@
import button_api
from random_username.generate import generate_username
import secrets
import json
from tqdm import tqdm
class ButtonAbuser: # Botfarm for buttonapi
def __init__(self):
self.buttons = [] # List of buttons to abuse
self.api = button_api.ButtonAPIClient() # API
def startAccountNum(self,num,prefix="bot",aaa=True): # Create num accounts
buttons = []
for i in tqdm(range(num)):
bbb = generate_username(1)[0] if aaa else str(i)
username = f"{prefix}{bbb}"
password = secrets.token_hex(8) + "@A1!"
status, response = self.api.register(username, password) # Register account
if "success" in response["message"]:
aaaa,token = self.api.generate_token(username, password)
token = token["token"]
buttons.append({"username": username, "password": password, "token": token})
#print("Registered",username)
else:
print(f"Failed to register {username}. error:",response["message"])
self.buttons = buttons
def loginAccountNum(self,file="accounts.json"):
buttons = []
with open(file,"r") as f:
data = json.load(f)
for account in tqdm(data):
status, response = self.api.login(account["username"],account["password"])
if "success" in response["message"]:
token = None
if "token" in account:
token = account["token"]
else:
#print("Genning token...")
_,token = self.api.generate_token(account["username"], account["password"])
token = token["token"]
buttons.append({"username": account["username"], "password": account["password"], "token": token})
#print("Verified",account["username"])
else:
print(f"Failed to login {account['username']}")
self.buttons = buttons
def saveAccounts(self,file="accounts.json"): # Save accounts to file
with open(file,"w") as f:
json.dump(self.buttons,f)
def spamDM(self,targetUsername, message): # Spam DMs to someone
for button in tqdm(self.buttons,desc="Sending DMs...."):
status, response = self.api.send_dm(button["token"], targetUsername, message)
def spamDiscordDM(self,targetId, message): # Spam DMs to someone on DISCORD
for button in tqdm(self.buttons,desc="Sending DMs...."):
status, response = self.api.send_dc_dm_message(button["token"], targetId, message)
def spamChannel(self,targetId, message): # Spam messages to a channel on DISCORD
for button in tqdm(self.buttons,desc="Sending MSGs...."):
try:
status, response = self.api.send_message_to_channel(button["token"], message, targetId)
print(status)
except:
pass # ignore errors
def spamUnknownChannel(self,targetId, message): # Spam messages to some channel idk
for button in tqdm(self.buttons,desc="Sending MSGs...."):
status, response = self.api.send_discord_message(button["token"], message)
def addBotsToChannel(self,ownerToken,id):
for button in tqdm(self.buttons,desc="Adding Bots to Channel...."):
try:
status = self.api.add_user_to_channel(ownerToken, id,button["username"])
print(status)
except:
pass

145
buttonui3.py Normal file
View File

@@ -0,0 +1,145 @@
import sys
from PySide6.QtWidgets import (
QApplication, QMainWindow, QWidget, QVBoxLayout, QLabel, QLineEdit,
QPushButton, QTextEdit, QStackedWidget, QMessageBox, QListWidget, QHBoxLayout
)
from button_api import ButtonAPIClient
import socketio
API_URL = "https://buttonapi.nonamesoft.xyz" # change to your server
class LoginPage(QWidget):
def __init__(self, client, stacked_widget):
super().__init__()
self.client = client
self.stacked_widget = stacked_widget
layout = QVBoxLayout(self)
self.username_input = QLineEdit()
self.username_input.setPlaceholderText("Username")
self.password_input = QLineEdit()
self.password_input.setPlaceholderText("Password")
self.password_input.setEchoMode(QLineEdit.Password)
self.login_btn = QPushButton("Login")
self.register_btn = QPushButton("Register")
layout.addWidget(QLabel("Login or Register"))
layout.addWidget(self.username_input)
layout.addWidget(self.password_input)
layout.addWidget(self.login_btn)
layout.addWidget(self.register_btn)
self.login_btn.clicked.connect(self.login)
self.register_btn.clicked.connect(self.register)
def login(self):
username = self.username_input.text()
password = self.password_input.text()
code, resp = self.client.login(username, password)
if code == 200:
code, token_resp = self.client.get_token(username, password)
if 'token' in token_resp:
self.stacked_widget.main_page.set_user(username, token_resp['token'])
self.stacked_widget.setCurrentWidget(self.stacked_widget.main_page)
else:
QMessageBox.warning(self, "Login Failed", resp['message'])
def register(self):
username = self.username_input.text()
password = self.password_input.text()
code, resp = self.client.register(username, password)
QMessageBox.information(self, "Register", resp.get("message", "Unknown error"))
class MainPage(QWidget):
def __init__(self, client):
super().__init__()
self.client = client
self.username = None
self.token = None
layout = QVBoxLayout(self)
self.label = QLabel("Welcome!")
self.message_input = QLineEdit()
self.message_input.setPlaceholderText("Type message to send as DM to self")
self.send_btn = QPushButton("Send Message")
self.message_list = QListWidget()
self.logout_btn = QPushButton("Logout")
layout.addWidget(self.label)
layout.addWidget(self.message_input)
layout.addWidget(self.send_btn)
layout.addWidget(self.message_list)
layout.addWidget(self.logout_btn)
self.send_btn.clicked.connect(self.send_message)
self.logout_btn.clicked.connect(self.logout)
self.sio = socketio.Client()
self.sio.on("ready", self.on_ready)
self.sio.on("new_dm", self.on_new_dm)
def set_user(self, username, token):
self.username = username
self.token = token
self.label.setText(f"Welcome {username}")
self.connect_socket()
def connect_socket(self):
try:
self.sio.connect(f"{API_URL}")
self.sio.emit("api_v3_connect", {"token_api_v3": self.token})
except Exception as e:
QMessageBox.critical(self, "Socket Error", str(e))
def on_ready(self, data):
self.message_list.addItem(f"Socket Ready: {data}")
def on_new_dm(self, data):
sender = data.get('sender')
message = data.get('message')
self.message_list.addItem(f"{sender}: {message}")
def send_message(self):
message = self.message_input.text()
if message:
self.client.send_dm(self.token, self.username, message)
self.message_list.addItem(f"You: {message}")
self.message_input.clear()
def logout(self):
self.sio.disconnect()
self.parent().setCurrentIndex(0)
class ButtonApp(QStackedWidget):
def __init__(self):
super().__init__()
self.client = ButtonAPIClient(API_URL)
self.login_page = LoginPage(self.client, self)
self.main_page = MainPage(self.client)
self.addWidget(self.login_page)
self.addWidget(self.main_page)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("ButtonAPI V3 GUI")
self.setFixedSize(400, 400)
self.stack = ButtonApp()
self.setCentralWidget(self.stack)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())