auto trade and auto bandit
This commit is contained in:
@@ -441,3 +441,105 @@ def fail_stale_commands():
|
||||
conn.commit()
|
||||
conn.close()
|
||||
return jsonify({'ok': True, 'failed': affected})
|
||||
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# GET /dashboard/bot-settings — fetch bootcamp + rural trade config
|
||||
# POST /dashboard/bot-settings — save config
|
||||
# ------------------------------------------------------------------
|
||||
@dashboard.route('/dashboard/bot-settings', methods=['GET', 'POST'])
|
||||
def bot_settings():
|
||||
player_id = request.args.get('player_id') or (request.json or {}).get('player_id')
|
||||
if not player_id:
|
||||
return jsonify({'error': 'missing player_id'}), 400
|
||||
|
||||
conn = get_db()
|
||||
c = conn.cursor()
|
||||
|
||||
if request.method == 'GET':
|
||||
row = c.execute(
|
||||
'SELECT * FROM bot_settings WHERE player_id = ?', (player_id,)
|
||||
).fetchone()
|
||||
conn.close()
|
||||
if row:
|
||||
return jsonify(dict(row))
|
||||
return jsonify({
|
||||
'player_id': player_id,
|
||||
'bootcamp_enabled': 0,
|
||||
'bootcamp_use_def': 0,
|
||||
'rural_trade_enabled': 0,
|
||||
'rural_trade_ratio': 3,
|
||||
})
|
||||
|
||||
# POST — upsert
|
||||
data = request.json or {}
|
||||
c.execute('''
|
||||
INSERT INTO bot_settings (player_id, bootcamp_enabled, bootcamp_use_def,
|
||||
rural_trade_enabled, rural_trade_ratio, updated_at)
|
||||
VALUES (?, ?, ?, ?, ?, ?)
|
||||
ON CONFLICT(player_id) DO UPDATE SET
|
||||
bootcamp_enabled = excluded.bootcamp_enabled,
|
||||
bootcamp_use_def = excluded.bootcamp_use_def,
|
||||
rural_trade_enabled = excluded.rural_trade_enabled,
|
||||
rural_trade_ratio = excluded.rural_trade_ratio,
|
||||
updated_at = excluded.updated_at
|
||||
''', (
|
||||
player_id,
|
||||
int(bool(data.get('bootcamp_enabled', 0))),
|
||||
int(bool(data.get('bootcamp_use_def', 0))),
|
||||
int(bool(data.get('rural_trade_enabled', 0))),
|
||||
int(data.get('rural_trade_ratio', 3)),
|
||||
datetime.utcnow().isoformat()
|
||||
))
|
||||
conn.commit()
|
||||
conn.close()
|
||||
return jsonify({'ok': True})
|
||||
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# GET /dashboard/bot-logs?player_id=&feature= — last 50 log lines
|
||||
# POST /dashboard/bot-logs — append + prune
|
||||
# ------------------------------------------------------------------
|
||||
@dashboard.route('/dashboard/bot-logs', methods=['GET', 'POST'])
|
||||
def bot_logs():
|
||||
player_id = request.args.get('player_id') or (request.json or {}).get('player_id')
|
||||
if not player_id:
|
||||
return jsonify({'error': 'missing player_id'}), 400
|
||||
|
||||
conn = get_db()
|
||||
c = conn.cursor()
|
||||
|
||||
if request.method == 'GET':
|
||||
feature = request.args.get('feature', '')
|
||||
query = 'SELECT * FROM bot_logs WHERE player_id = ?'
|
||||
params = [player_id]
|
||||
if feature:
|
||||
query += ' AND feature = ?'
|
||||
params.append(feature)
|
||||
query += ' ORDER BY id DESC LIMIT 50'
|
||||
rows = c.execute(query, params).fetchall()
|
||||
conn.close()
|
||||
return jsonify([dict(r) for r in rows])
|
||||
|
||||
# POST — append entry and prune to last 50
|
||||
data = request.json or {}
|
||||
feature = data.get('feature', 'bootcamp')
|
||||
message = data.get('message', '')
|
||||
c.execute(
|
||||
'INSERT INTO bot_logs (player_id, feature, message) VALUES (?, ?, ?)',
|
||||
(player_id, feature, message)
|
||||
)
|
||||
# Prune: keep only the latest 50 per player/feature
|
||||
c.execute('''
|
||||
DELETE FROM bot_logs
|
||||
WHERE player_id = ? AND feature = ?
|
||||
AND id NOT IN (
|
||||
SELECT id FROM bot_logs
|
||||
WHERE player_id = ? AND feature = ?
|
||||
ORDER BY id DESC LIMIT 50
|
||||
)
|
||||
''', (player_id, feature, player_id, feature))
|
||||
conn.commit()
|
||||
conn.close()
|
||||
return jsonify({'ok': True})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user