@@ -61,7 +61,7 @@ function scheduleStart(ms) {
6161 retryTimer = setTimeout ( ( ) => { retryTimer = null ; startBot ( ) ; } , ms ) ;
6262}
6363
64- log ( '=== OWNTOWN SMART FARMER v25.0.1 ===' ) ;
64+ log ( '=== OWNTOWN SMART FARMER v25.0.2 ===' ) ;
6565log ( 'AUTO ORCHESTRATOR: Mining+Fishing+Combat+PvP+Quest+Candy+Market+Bank+Crafting' ) ;
6666
6767// ============ CONSTANTS ============
@@ -454,23 +454,23 @@ tg.on('help',()=>notify([
454454 '🏭 <b>OWNTOWN v25 — Smart Orchestrator</b>' ,
455455 '' ,
456456 '📊 <b>Dashboard</b>' ,
457- '/status — dashboard lengkap ' ,
458- '/balance — saldo OTWN+ Candy+ Chip' ,
459- '/daily — laporan harian ' ,
460- '/income — pendapatan + grafik ' ,
457+ '/status — full dashboard ' ,
458+ '/balance — OTWN + Candy + Chip balances ' ,
459+ '/daily — daily report ' ,
460+ '/income — earnings + chart ' ,
461461 '' ,
462462 '💰 <b>Wallet & Bank</b>' ,
463463 '/wallet — info wallet + on-chain' ,
464- '/wallet deposit [jumlah ] — setor ke bank' ,
465- '/wallet withdraw [jumlah ] — tarik dari bank' ,
464+ '/wallet deposit [amount ] — deposit to bank' ,
465+ '/wallet withdraw [amount ] — withdraw from bank' ,
466466 '' ,
467467 '🎮 <b>Game</b>' ,
468- '/inventory — isi tas + nilai ' ,
469- '/market — harga pasar + tren ' ,
470- '/trades — riwayat jual ' ,
471- '/listings — listing aktif ' ,
472- '/quest — status quest' ,
473- '/candy — candy + ekonomi ' ,
468+ '/inventory — bag contents + value ' ,
469+ '/market — market prices + trend ' ,
470+ '/trades — sales history ' ,
471+ '/listings — active listings ' ,
472+ '/quest — quest status ' ,
473+ '/candy — candy + economy ' ,
474474 '/boss — world boss' ,
475475 '/world — live state + mobs' ,
476476 '/pvpboard — PvP leaderboard' ,
@@ -483,10 +483,10 @@ tg.on('help',()=>notify([
483483 '/health · /errors · /settings' ,
484484 '/schedule · /log [n] · /ping' ,
485485 '' ,
486- '<i>⚠️ 1 wallet = 1 sesi. /stop untuk main manual.</i>' ,
486+ '<i>⚠️ 1 wallet = 1 session. Use /stop for manual play .</i>' ,
487487] . join ( '\n' ) ) ) ;
488488tg . on ( 'start' , ( ) => { paused = false ; stopped = false ; if ( connected ) { notify ( '▶️ Already farming.' ) ; return } notify ( '🚀 Connecting…' ) ; startBot ( ) } ) ;
489- tg . on ( 'stop' , ( ) => { stopped = true ; paused = false ; if ( retryTimer ) { clearTimeout ( retryTimer ) ; retryTimer = null } try { if ( activeSocket ) activeSocket . disconnect ( ) } catch { } connected = false ; notify ( '⏹️ <b>Stopped</b> — main manual.' ) } ) ;
489+ tg . on ( 'stop' , ( ) => { stopped = true ; paused = false ; if ( retryTimer ) { clearTimeout ( retryTimer ) ; retryTimer = null } try { if ( activeSocket ) activeSocket . disconnect ( ) } catch { } connected = false ; notify ( '⏹️ <b>Stopped</b> — manual mode .' ) } ) ;
490490tg . on ( 'status' , ( ) => { const p = getProfitSummary ( ) , up = fmtUptime ( Date . now ( ) - stats . startTime ) , alive = liveMonsters . filter ( m => m . alive ) . length ; notify ( [ `${ connected ?'🟢' :'🔴' } <b>OWNTOWN v25</b> · ${ paused ?'⏸️' :stopped ?'⏹️' :connected ?'▶️ ' + currentActivity :'⏳' } ` , `<i>⏱${ up } · 📍${ zoneName } · Lv${ level } (${ stats . xp } /${ stats . xpForNext || '?' } XP)</i>` , '' , '💰 <b>Economy</b>' , `<pre>Balance ${ fmt ( Math . round ( balance ) ) } OTWN\nCandy ${ fmt ( candyBalance ) } \nChip ${ fmt ( chipBalance ) } \nBank ${ fmt ( stats . bankBalance ) } \nEarned ${ fmt ( p . totalEarned ) } · ${ fmt ( p . rate ) } /h</pre>` , '' , `🧍 ❤️${ hp } /${ maxHp } ⚡${ stamina } 📦${ inventory . length } /${ CARRY_CAP } ` , `⛏${ fmt ( stats . mined ) } 🎣${ fmt ( stats . fished ) } ⚔${ fmt ( stats . kills ) } 🔨${ fmt ( stats . crafted ) } 👹${ fmt ( stats . bossClaims ) } ` , `🌍 ${ serverPlayerCount } online · ${ alive } /${ liveMonsters . length } mobs · boss:${ worldBossState ?. phase || '?' } ` , `📜 Quest: ${ questState ?. activeId || 'none' } (${ ( questState ?. completed || [ ] ) . length } done)` , `${ stats . errors ?'⚠️' :'✅' } err:${ stats . errors } reconn:${ stats . reconnects || 0 } ` ] . join ( '\n' ) ) } ) ;
491491tg . on ( 'stats' , ( ) => tg . handlers [ 'status' ] ( ) ) ;
492492tg . on ( 'balance' , ( ) => notify ( `💰 <b>Balance</b>\n<pre>OTWN ${ fmt ( Math . round ( balance ) ) } \nLocked ${ fmt ( lockedBalance ) } \nCandy ${ fmt ( candyBalance ) } 🍬\nChip ${ fmt ( chipBalance ) } 🎰\nBank ${ fmt ( stats . bankBalance ) } \nDaily ${ fmt ( dailyEarned ) } / ${ DAILY_EARN_CAP || '∞' } </pre>` ) ) ;
@@ -507,7 +507,7 @@ tg.on('wallet',async(args)=>{
507507 return ;
508508 }
509509 if ( sub === 'withdraw' && amount > 0 ) {
510- if ( ! bankInfo || bankInfo . withdrawable < amount ) { notify ( `⚠️ Withdrawable: ${ fmt ( bankInfo ?. withdrawable || 0 ) } OTWN (butuh ${ amount } )\nMin withdraw server : ${ fmt ( wdMin ) } ` ) ; return }
510+ if ( ! bankInfo || bankInfo . withdrawable < amount ) { notify ( `⚠️ Withdrawable: ${ fmt ( bankInfo ?. withdrawable || 0 ) } OTWN (need ${ amount } )\nServer minimum withdraw : ${ fmt ( wdMin ) } ` ) ; return }
511511 if ( activeSocket ) activeSocket . emit ( 'bank:withdraw' , { amount} ) ;
512512 const fee = Math . round ( amount * wdFee ) ;
513513 notify ( `🏦 <b>Withdrawing</b> ${ fmt ( amount ) } OTWN (fee ~${ fee } )…\n<i>Min server: ${ fmt ( wdMin ) } — server will confirm or reject</i>` ) ;
0 commit comments