fix: update bot
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
OPENROUTER_API_KEY=your_openrouter_api_key_here
|
||||
BOT_API_SECRET=your_super_secret_bot_key
|
||||
BACKEND_URL=http://localhost:3001/api
|
||||
BOT_MODE=PROD
|
||||
TRANSACTION_TYPES=SERVICE,JOB
|
||||
COUNT_PER_TYPE=1
|
||||
@@ -19,9 +19,9 @@ def generate_bot_data():
|
||||
Buat 1 set data dalam format JSON yang berisi:
|
||||
{
|
||||
"akun1": {
|
||||
"nama_lengkap": "Nama orang Indonesia yang realistis",
|
||||
"nama_lengkap": "Nama asli orang Indonesia yang realistis (Hanya nama orang, misal: Budi Santoso, Siti Aminah)",
|
||||
"email": "Email pribadi realistis berdasarkan nama",
|
||||
"nama_bisnis": "Nama profesional atau brand jasa (contoh: Jasa Desain Grafis Budi, Tukang AC Cepat)",
|
||||
"nama_bisnis": "Nama brand jasa profesional (misal: Budi Design, CV Sejuk Jaya)",
|
||||
"deskripsi_bisnis": "Deskripsi singkat tentang keahlian atau layanan yang ditawarkan",
|
||||
"lokasi": {
|
||||
"lat": "Latitude acak di area perkotaan Indonesia (misal: Jakarta, Bandung, atau Surabaya)",
|
||||
@@ -35,13 +35,13 @@ def generate_bot_data():
|
||||
}
|
||||
},
|
||||
"akun2": {
|
||||
"nama_lengkap": "Nama pembeli Indonesia yang realistis",
|
||||
"nama_lengkap": "Nama asli pembeli Indonesia yang realistis (Hanya nama orang)",
|
||||
"email": "Email pribadi realistis berdasarkan nama"
|
||||
},
|
||||
"layanan": {
|
||||
"judul": "Judul jasa yang ditawarkan",
|
||||
"deskripsi": "Deskripsi lengkap layanan tersebut",
|
||||
"harga": "Angka saja dalam rupiah, misal 50000"
|
||||
"harga": 50000
|
||||
},
|
||||
"review": {
|
||||
"rating": 5,
|
||||
|
||||
46
main.py
46
main.py
@@ -3,19 +3,40 @@ import time
|
||||
import random
|
||||
import requests
|
||||
import schedule
|
||||
import logging
|
||||
from datetime import datetime
|
||||
from dotenv import load_dotenv
|
||||
from ai_generator import generate_bot_data
|
||||
|
||||
load_dotenv()
|
||||
|
||||
# Setup Logging
|
||||
log_filename = "bot_activity.log"
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s [%(levelname)s] %(message)s',
|
||||
handlers=[
|
||||
logging.FileHandler(log_filename),
|
||||
logging.StreamHandler()
|
||||
]
|
||||
)
|
||||
|
||||
BACKEND_URL = os.getenv("BACKEND_URL", "http://localhost:3001/api")
|
||||
BOT_SECRET = os.getenv("BOT_API_SECRET", "")
|
||||
BOT_MODE = os.getenv("BOT_MODE", "PROD").upper() # TEST or PROD
|
||||
|
||||
# Ambil list tipe transaksi dari ENV (misal: "SERVICE,JOB")
|
||||
ALLOWED_TYPES = os.getenv("TRANSACTION_TYPES", "SERVICE,JOB").split(",")
|
||||
# Ambil jumlah transaksi per tipe
|
||||
COUNT_PER_TYPE = int(os.getenv("COUNT_PER_TYPE", "1"))
|
||||
|
||||
def smart_sleep(seconds):
|
||||
"""Sleep only if BOT_MODE is PROD"""
|
||||
if BOT_MODE == "PROD":
|
||||
log(f"Sleeping for {seconds}s...")
|
||||
time.sleep(seconds)
|
||||
else:
|
||||
log("Skipping delay (TEST mode)")
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
@@ -23,7 +44,7 @@ headers = {
|
||||
}
|
||||
|
||||
def log(msg):
|
||||
print(f"[BOT] {time.strftime('%Y-%m-%d %H:%M:%S')} - {msg}")
|
||||
logging.info(msg)
|
||||
|
||||
def run_service_simulation():
|
||||
"""Menjalankan 1 siklus transaksi Layanan/Service"""
|
||||
@@ -47,9 +68,11 @@ def run_service_simulation():
|
||||
res_data1 = req1.json()
|
||||
provider_id = res_data1['data']['user1']['providerProfile']['id']
|
||||
buyer_id = res_data1['data']['user2']['id']
|
||||
log(f"Accounts created! ProviderID: {provider_id}, BuyerID: {buyer_id}")
|
||||
user1 = res_data1['data']['user1']
|
||||
user2 = res_data1['data']['user2']
|
||||
log(f"Accounts created! Provider: {user1['name']} ({user1['email']}), Buyer: {user2['name']} ({user2['email']})")
|
||||
|
||||
time.sleep(random.randint(60, 180))
|
||||
smart_sleep(random.randint(60, 180))
|
||||
|
||||
# 3. Create Service
|
||||
log("Step 2: Create Service")
|
||||
@@ -63,9 +86,9 @@ def run_service_simulation():
|
||||
|
||||
res_data2 = req2.json()
|
||||
service_id = res_data2['data']['id']
|
||||
log(f"Service created! ServiceID: {service_id}")
|
||||
log(f"Service created! '{res_data2['data']['name']}' - Price: Rp {res_data2['data']['price']}")
|
||||
|
||||
time.sleep(random.randint(120, 300))
|
||||
smart_sleep(random.randint(120, 300))
|
||||
|
||||
# 4. Simulate Transaction
|
||||
log("Step 3: Place Order (Service)")
|
||||
@@ -105,9 +128,11 @@ def run_job_simulation():
|
||||
res_data1 = req1.json()
|
||||
provider_id = res_data1['data']['user1']['providerProfile']['id']
|
||||
buyer_id = res_data1['data']['user2']['id']
|
||||
log(f"Accounts created! ProviderID: {provider_id}, BuyerID: {buyer_id}")
|
||||
user1 = res_data1['data']['user1']
|
||||
user2 = res_data1['data']['user2']
|
||||
log(f"Accounts created! Provider: {user1['name']} ({user1['email']}), Buyer: {user2['name']} ({user2['email']})")
|
||||
|
||||
time.sleep(random.randint(120, 300))
|
||||
smart_sleep(random.randint(120, 300))
|
||||
|
||||
# 3. Simulate Job Transaction (Post Job -> Apply -> Accept -> Transact)
|
||||
log("Step 2: Simulate Job Lifecycle")
|
||||
@@ -122,7 +147,9 @@ def run_job_simulation():
|
||||
return False
|
||||
|
||||
res_data2 = req2.json()
|
||||
log(f"Job Transaction Completed! JobID: {res_data2['data']['job']['id']}, OrderID: {res_data2['data']['transaction']['orderId']}")
|
||||
job_title = res_data2['data']['job']['title']
|
||||
order_id = res_data2['data']['transaction']['orderId']
|
||||
log(f"Job Transaction Completed! Job: '{job_title}', OrderID: {order_id}")
|
||||
return True
|
||||
|
||||
def run_job():
|
||||
@@ -157,8 +184,7 @@ def run_job():
|
||||
# Jeda antar simulasi dalam batch (15-45 menit)
|
||||
if i < len(tasks) - 1:
|
||||
batch_delay = random.randint(900, 2700)
|
||||
log(f"Jeda antar simulasi batch: {batch_delay} detik...")
|
||||
time.sleep(batch_delay)
|
||||
smart_sleep(batch_delay)
|
||||
|
||||
log(f"=== Batch Selesai: {success_count}/{len(tasks)} Berhasil ===")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user