# ✅ bot_app.py
from flask import Flask, render_template, request, redirect, url_for
import threading
import asyncio
import lobster_bot_logic

app = Flask(__name__)

# 默认配置（可在网页修改）
config = {
    'minBanker': 1000,
    'bankerDetectTime': 10,
    'betDetectTime': 10,
    'max_attempts': 3,
    'bet_min_ratio': 0.01,
    'bet_max_ratio': 0.1,
    'BOT_USERNAME': 'lobster123_bot',
    'TOKEN': 'YOUR_TOKEN_HERE'
}

bot_thread = None

@app.route('/', methods=['GET', 'POST'])
def admin():
    global config
    if request.method == 'POST':
        for key in config.keys():
            if key in request.form:
                config[key] = type(config[key])(request.form[key])
        return redirect(url_for('admin'))
    return render_template('admin.html', config=config)

@app.route('/start', methods=['POST'])
def start_game():
    global bot_thread
    if bot_thread is None or not bot_thread.is_alive():
        bot_thread = threading.Thread(target=start_bot)
        bot_thread.start()
    return redirect(url_for('admin'))

@app.route('/stop', methods=['POST'])
def stop_game():
    lobster_bot_logic.force_stop = True
    return redirect(url_for('admin'))

@app.route('/result', methods=['POST'])
def input_result():
    number = int(request.form.get('number'))
    thread = threading.Thread(target=asyncio.run, args=(lobster_bot_logic.manual_result(number),))
    thread.start()
    return redirect(url_for('admin'))

def start_bot():
    new_loop = asyncio.new_event_loop()
    asyncio.set_event_loop(new_loop)
    new_loop.run_until_complete(lobster_bot_logic.run_bot(config))

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)
