hashir672's picture
Update app.py
ecf09f1 verified
import time
import gradio as gr
import threading
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
import secrets
from gradio_client import Client, file
import os
total_dm_done = 0
def in_dm_code(driver, server_link):
time.sleep(1)
text_box = driver.find_element(By.CSS_SELECTOR,"[role='textbox']")
text_box.send_keys("Joining w8")
time.sleep(1)
text_box.send_keys(Keys.ENTER)
time.sleep(3)
text_box = driver.find_element(By.CSS_SELECTOR,"[role='textbox']")
# join server
try:
join_btn = WebDriverWait(driver, 3).until(
EC.presence_of_element_located((By.XPATH, "//button/div[contains(text(), 'Join')]"))
)
except:
current_channel_url = driver.current_url
current_channel = current_channel_url[current_channel_url.find("@me/"):].replace("@me/", "")
# send link code
with open('pending.txt') as file:
contents = file.read()
search_word = current_channel
if str(search_word) +"2" in contents:
print('Already pending..Sending last message')
text_box.send_keys("Now don't message me again understood")
time.sleep(0.5)
text_box.send_keys(Keys.ENTER)
global total_dm_done
total_dm_done-=1
return True
elif str(search_word) +"1" in contents:
current_channel = str(current_channel) + "2"
print('Already pending..Giving last chance')
text_box.send_keys("bro send join link??")
time.sleep(0.5)
text_box.send_keys(Keys.ENTER)
file = open("pending.txt", "a") # append mode
file.write(f"{current_channel} \n")
file.close()
return False
else:
current_channel = str(current_channel) + "1"
print("New channel working on it")
file = open("pending.txt", "a") # append mode
file.write(f"{current_channel} \n")
file.close()
text_box.send_keys("Send join link asap")
time.sleep(1)
text_box.send_keys(Keys.ENTER)
return False
driver.execute_script("""function getElementsByXPath(xpath, parent)
{
let results = [];
let query = document.evaluate(xpath, parent || document,
null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (let i = 0, length = query.snapshotLength; i < length; ++i) {
results.push(query.snapshotItem(i));
}
return results;
}
var div_list = getElementsByXPath("//button/div[contains(text(), 'Join')]")
var div_array = [...div_list]; // converts NodeList to Array
div_array.forEach(div => {
div.innerHTML = "Joined";
}); """)
time.sleep(1)
driver.save_screenshot("./screenshot.png")
time.sleep(0.5)
# plus_icon = driver.find_element(By.CSS_SELECTOR, "[aria-label='Upload a file or send invites']").click()
# time.sleep(1)
input_element = driver.find_element(By.CSS_SELECTOR, "[class='file-input']")
input_element.send_keys(os.getcwd()+'/screenshot.png')
time.sleep(2)
text_box.send_keys("see")
time.sleep(0.5)
text_box.send_keys(Keys.ENTER)
time.sleep(2)
text_box.send_keys("done")
time.sleep(0.5)
text_box.send_keys(Keys.ENTER)
time.sleep(0.5)
text_box.send_keys(server_link)
time.sleep(0.5)
text_box.send_keys(Keys.ENTER)
time.sleep(0.5)
text_box.send_keys("Now you join")
time.sleep(1.5)
text_box.send_keys(Keys.ENTER)
time.sleep(1)
return True
def j4j_msg_req(invites, server_link):
global total_dm_done
global stop_thread
options = Options()
options.add_experimental_option("excludeSwitches", ["enable-logging"])
# for headless chrome
# ----
options.add_argument("--no-sandbox")
options.add_argument("--headless=new")
options.add_argument('--disable-gpu')
options.add_argument("--disable-dev-shm-usage")
#-----
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, likeGecko) Chrome/68.0.3440.84 Safari/537.36')
driver = webdriver.Chrome(options=options)
driver.get("https://discord.com/login")
time.sleep(5)
driver.execute_script("""function login(token) {
setInterval(() => {
document.body.appendChild(document.createElement `iframe`).contentWindow.localStorage.token = `"${token}"`
}, 50);
}
login('ODUyOTM4OTg1ODM5Nzg4MDYz.GQjdRR.tyJTkt_WnKNKoimmQEguWYTSoEGYQd9TKaWl-8');""")
time.sleep(5)
driver.get("https://discord.com/channels/@me/")
time.sleep(5)
setting_check = WebDriverWait(driver, 30).until(
EC.presence_of_element_located((By.CSS_SELECTOR, "[aria-label='User Settings']"))
)
print("logged in succesfully")
time.sleep(2)
while(True):
if stop_thread:
driver.quit()
client = Client("hashir672/hashirdis672seleneem")
result = client.predict(
anything="stop",
)
print(result)
print("Stopped j4j spam server too")
break
time.sleep(2)
# msg_req = False
try:
msg_req = WebDriverWait(driver, 1).until(
EC.presence_of_element_located((By.XPATH, "//*[contains(text(), 'Message Requests')]"))
)
msg_req.click()
time.sleep(1)
# accept_dm = driver.find_element(By.XPATH,"//*[contains(text(), 'Accept DM')]/../../preceding-sibling::div[1]")
try:
accept_dm = driver.find_element(By.XPATH,"//*[contains(text(), 'Accept DM')]/../../preceding-sibling::div[1]")
except:
driver.find_element(By.XPATH,"//*[contains(text(), 'Spam')]").click()
time.sleep(1)
driver.find_element(By.XPATH,"//*[contains(text(), 'Accept DM')]").click()
time.sleep(3)
try:
accept_dm.click()
except:
pass
except Exception as e:
driver.find_element(By.XPATH, "//div[contains(text(), 'Friends')]").click()
# print(e)
dm = driver.find_element(By.XPATH,"//*[@aria-label='Servers']/preceding-sibling::div[2]")
if("tutorial" in str(dm.get_attribute("class"))):
# check message request
print("No dm found")
continue
else:
print("dm found")
dm.click()
time.sleep(2)
text_box = driver.find_element(By.CSS_SELECTOR,"[role='textbox']")
text_box.click()
time.sleep(1)
current_channel_url = driver.current_url
current_channel = current_channel_url[current_channel_url.find("@me/"):].replace("@me/", "")
with open('channels.txt') as file:
contents = file.read()
search_word = current_channel
if search_word in contents:
print('channel already done')
driver.find_element(By.XPATH, "//div[contains(text(), 'Friends')]").click()
continue
else:
print("New channel working on it")
dm_done = in_dm_code(driver ,server_link)
# get current dm channel number
current_channel_url = driver.current_url
current_channel = current_channel_url[current_channel_url.find("@me/"):].replace("@me/", "")
print(current_channel)
if dm_done:
total_dm_done+=1
file = open("channels.txt", "a") # append mode
file.write(f"{current_channel} \n")
file.close()
time.sleep(0.5)
if total_dm_done==int(invites):
driver.quit()
client = Client("hashir672/hashirdis672seleneem")
result = client.predict(
anything="stop",
)
print(result)
print("Stopped j4j spam server too")
break
driver.find_element(By.XPATH, "//div[contains(text(), 'Friends')]").click()
print(f"Program ended with aproximately {total_dm_done} Joins")
total_dm_done = 0
if stop_thread:
return None
def j4j_spam_start(something):
client = Client("hashir672/hashirdis672seleneem")
result = client.predict(
anything="start",
)
print(result)
print("j4j spam started too")
return None
stop_thread = False
def output(anything, invites, server_link):
global stop_thread
stop_thread = False
if "stop" in anything.lower():
stop_thread = True
return 201
else:
t2 = threading.Thread(target=j4j_spam_start, args=(0,))
t2.start()
t1 = threading.Thread(target=j4j_msg_req, args=(invites,server_link))
t1.start()
return 200
iface = gr.Interface(
fn=output,
inputs=[gr.Textbox(label="Enter start or stop"),gr.Textbox(label="Enter number of invites"),gr.Textbox(label="Enter server link")],
outputs=gr.Number(), # Adjust the image size here
title="Enter start or stop",
description="Start or stop j4j message request Bot",
)
iface.launch()