tixcraft_bot/www/settings.html

667 lines
30 KiB
HTML

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>MaxBot Settings</title>
<meta charset="UTF-8" />
<link href="dist/bootstrap/bootstrap.min.css" rel="stylesheet" />
<script src="dist/bootstrap/bootstrap.min.js"></script>
<script src="dist/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="css/settings.css" />
<link rel="icon" href="/favicon-32x32.png" sizes="32x32" type="image/png">
<link rel="icon" href="/favicon-16x16.png" sizes="16x16" type="image/png">
<link rel="icon" href="/favicon.ico">
</head>
<body>
<div id="message"></div>
<h2>Max蛋黃酥上車機器人 - 設定介面</h2>
<div class="row g-3">
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="readme-tab" data-bs-toggle="tab" data-bs-target="#readme-tab-pane" type="button" role="tab" aria-controls="readme-tab-pane" aria-selected="true">使用需知</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="home-tab" data-bs-toggle="tab" data-bs-target="#home-tab-pane" type="button" role="tab" aria-controls="home-tab-pane" aria-selected="false" onclick="home_tab_clicked();">偏好設定</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="advanced-tab" data-bs-toggle="tab" data-bs-target="#advanced-tab-pane" type="button" role="tab" aria-controls="advanced-tab-pane" aria-selected="false">進階設定</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="verification-tab" data-bs-toggle="tab" data-bs-target="#verification-tab-pane" type="button" role="tab" aria-controls="verification-tab-pane" aria-selected="false">驗證問題</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="autofill-tab" data-bs-toggle="tab" data-bs-target="#autofill-tab-pane" type="button" role="tab" aria-controls="autofill-tab-pane" aria-selected="false">自動填表單</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="runtime-tab" data-bs-toggle="tab" data-bs-target="#runtime-tab-pane" type="button" role="tab" aria-controls="runtime-tab-pane" aria-selected="false">執行階段</button>
</li>
</ul>
<div class="tab-content" id="myTabContent">
<!-- tab 1 -->
<div class="tab-pane fade show active" id="readme-tab-pane" role="tabpanel" aria-labelledby="readme-tab" tabindex="0">
<p>MaxBot是一個免費、開放原始碼的蛋黃酥/公車訂位機器人。祝您搶購成功。</p>
<p>搶票機制,就是在比誰的網路快、電腦配備好、手速快,或是在比誰的機器人跑的快。</p>
<p>售票系統的「驗證碼」機制會讓一般不會寫程式的民眾更難公平地購買到預期的門票。</p>
<p>部份的售票系統可以透過「人海戰術」來提升買到票的機率,因此建議大家可以麻煩親朋好友去註冊售票系統的帳號。注意,在借用他人帳號前,一定要告知當事人用途,並徵詢同意與授權。</p>
<p>MaxBot 的出發點是讓一般民眾與代購黃牛或懂得寫程式的人有類似的基準點或類似的起跑線上,用魔法對抗魔法,當某一天大家都是透過機器人來搶票時,當機器人數量已多到影響一般民眾購票的權利時,售票業者才比較有可能會對未來熱門演唱會改採「實名制」+「抽籤制」,讓更多民眾可以公平地購買到門票,就可以跟「人海戰術」與「搶票機器人」說 bye-bye 。</p>
<p>MaxBot 系統裡出現的「搶票」指的是「非台灣的藝文活動或車票」。</p>
<p></p>
<div class="bd-callout bd-callout-info">
台灣藝文活動的<strong>文創法第十條</strong>中的「<code>不正方式</code>」由於沒有明確定義,代表的是所有軟體都涉嫌違反。故在此呼籲大家,勿以身試法。
</div>
<hr/>
<h3>法律聲明</h3>
<p>使用此儲存庫或與之相關的任何程式碼,即表示您同意<a href="https://github.com/max32002/tixcraft_bot/blob/master/LEGAL_NOTICE.md" target="_blank">法律聲明</a>。作者不對該儲存庫的使用負責與背書,也不對其他使用者所做的任何副本、分叉、重新上傳或與 MaxBot 相關的任何其他內容負責。 這是作者唯一的帳戶和儲存庫。 為了防止假冒或不負責任的行為,請遵守此儲存庫使用的 GNU GPL 授權。</p>
<div class="bd-callout bd-callout-info">
作者沒有意圖要他人購得的票券進行加價轉售或是使用在違法的事情上,他人的行為並不在作者的意識支配範圍之內,作者不對他人的非法行為負責。
</div>
</div>
<!-- tab 2 -->
<div class="tab-pane fade" id="home-tab-pane" role="tabpanel" aria-labelledby="home-tab" tabindex="0">
<div class="row mb-3">
<label for="homepage" class="col-sm-2 col-form-label">網址</label>
<div class="col-sm-10">
<input class="form-control" id="homepage" value="" />
<div class="accordion mt-1" id="accordionExample">
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseSites" aria-expanded="true" aria-controls="collapseSites">
部份支援的網站清單
</button>
</h2>
<div id="collapseSites" class="accordion-collapse collapse">
<div class="accordion-body">
<ul>
<li>拓元</li>
<li>KKTIX</li>
<li>ibon</li>
<li>Fami</li>
<li>UND</li>
<li>年代</li>
<li>寬宏</li>
<li>cityline</li>
<li>hkticketing</li>
<li>urbtix</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row mb-3 disappear" data-under="kktix">
<label class="col-sm-2 col-form-label form-check-label" for="auto_press_next_step_button">KKTIX點選下一步按鈕</label>
<div class="col-sm-10">
<input class="form-check-input" type="checkbox" id="auto_press_next_step_button" />
</div>
</div>
<div class="row mb-3 disappear" data-under="kktix">
<label for="max_dwell_time" class="col-sm-2 col-form-label">KKTIX購票最長停留(秒)</label>
<div class="col-sm-10">
<input class="form-control" id="max_dwell_time" value="" />
</div>
</div>
<div class="row mb-3 disappear" data-under="cityline">
<label class="col-sm-2 col-form-label form-check-label" for="cityline_queue_retry">Cityline 排隊撞牆</label>
<div class="col-sm-10">
<input class="form-check-input" type="checkbox" id="cityline_queue_retry" />
</div>
</div>
<div class="row mb-3 bd-callout bd-callout-info disappear" data-under="cityline">
<div class="col">
<strong>備註:</strong>
Cityline 只能使用 <code>chrome 瀏覽器</code> + <code>nodriver</code>
</div>
</div>
<div class="row mb-3">
<label for="ticket_number" class="col-sm-2 col-form-label">張數</label>
<div class="col-sm-10">
<select id="ticket_number" class="form-select" aria-label="Default select">
<option selected="selected">
張數
</option>
<option value="1">
1
</option>
<option value="2">
2
</option>
<option value="3">
3
</option>
<option value="4">
4
</option>
<option value="5">
5
</option>
<option value="6">
6
</option>
<option value="7">
7
</option>
<option value="8">
8
</option>
<option value="9">
9
</option>
<option value="10">
10
</option>
</select>
</div>
</div>
<div class="row mb-3">
<label for="refresh_datetime" class="col-sm-2 col-form-label">刷新在指定時間</label>
<div class="col-sm-10">
<input class="form-control" id="refresh_datetime" value="" />
<div class="bd-callout bd-callout-info">
<strong>提示:</strong>
時間格式 <code>HH:MM:SS</code> (小時:分鐘:秒數)。在設定介面修改並存檔,並不會套用在「已經」開出的瀏覽器,只會套用在存檔之後按「搶票」所開出的瀏覽器。
</div>
</div>
</div>
<div class="row mb-3">
<label for="date_select_mode" class="col-sm-2 col-form-label">日期排序方式</label>
<div class="col-sm-10">
<select id="date_select_mode" class="form-select" aria-label="Default select">
<option value="from top to bottom">
from top to bottom
</option>
<option value="from bottom to top">
from bottom to top
</option>
<option value="center">
center
</option>
<option value="random">
random
</option>
</select>
</div>
</div>
<div class="row mb-3">
<label for="date_keyword" class="col-sm-2 col-form-label">日期關鍵字</label>
<div class="col-sm-10">
<textarea class="form-control" id="date_keyword" rows="3"></textarea>
</div>
</div>
<div class="row mb-3">
<label for="area_select_mode" class="col-sm-2 col-form-label">區域排序方式</label>
<div class="col-sm-10">
<select id="area_select_mode" class="form-select" aria-label="Default select">
<option value="from top to bottom">
from top to bottom
</option>
<option value="from bottom to top">
from bottom to top
</option>
<option value="center">
center
</option>
<option value="random">
random
</option>
</select>
</div>
</div>
<div class="row mb-3">
<label for="area_keyword" class="col-sm-2 col-form-label">區域關鍵字</label>
<div class="col-sm-10">
<textarea class="form-control" id="area_keyword" rows="3"></textarea>
</div>
</div>
<div class="row">
<label for="keyword_exclude" class="col-sm-2 col-form-label">排除關鍵字</label>
<div class="col-sm-10">
<textarea class="form-control" id="keyword_exclude" rows="3"></textarea>
<div class="bd-callout bd-callout-info">
<strong>提示:</strong>
每組關鍵字需要用「<code>雙引號</code>」包起來, 用「<code>逗號</code>」分隔, 在關鍵字中使用「<code>空格</code>」為 AND 邏輯。完全不輸入或是加入 「<code>,""</code>」 代表符合所有關鍵字。
</div>
</div>
</div>
<div class="row">
<label for="homepage" class="col-sm-2 col-form-label">版本</label>
<div class="col-sm-10"><p id="maxbot_version" class="text-secondary mt-2"></p>
</div>
</div>
</div>
<!-- tab 3 -->
<div class="tab-pane fade" id="advanced-tab-pane" role="tabpanel" aria-labelledby="advanced-tab" tabindex="1">
<div class="row mb-3">
<label for="browser" class="col-sm-2 col-form-label">瀏覽器</label>
<div class="col-sm-10">
<select id="browser" class="form-select" aria-label="Default select">
<option value="chrome">Google Chrome</option>
<option value="edge">Microsoft Edge</option>
<option value="brave">Brave</option>
<option value="firefox">Firefox</option>
<option value="safari">Safari</option>
</select>
</div>
</div>
<div class="row mb-3">
<label for="webdriver_type" class="col-sm-2 col-form-label">WebDriver類別</label>
<div class="col-sm-10">
<select id="webdriver_type" class="form-select" aria-label="Default select">
<option value="selenium">Selenium</option>
<option value="undetected_chromedriver">Undetected Chromedriver</option>
<option value="nodriver">NODRIVER</option>
<!-- option value="DrissionPage">DrissionPage</option -->
</select>
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2 col-form-label form-check-label" for="play_ticket_sound">有票時播放音效</label>
<div class="col-sm-10">
<input class="form-check-input" type="checkbox" id="play_ticket_sound" />
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2 col-form-label form-check-label" for="play_order_sound">訂購時播放音效</label>
<div class="col-sm-10">
<input class="form-check-input" type="checkbox" id="play_order_sound" />
</div>
</div>
<div class="row mb-3">
<label for="play_sound_filename" class="col-sm-2 col-form-label">音效檔</label>
<div class="col-sm-10">
<input class="form-control" id="play_sound_filename" value="" />
</div>
</div>
<div class="row mb-3">
<label for="auto_reload_page_interval" class="col-sm-2 col-form-label">自動刷新頁面間隔(秒)</label>
<div class="col-sm-10">
<input class="form-control" id="auto_reload_page_interval" value="" />
</div>
</div>
<div class="row mb-3">
<label for="auto_reload_overheat_count" class="col-sm-2 col-form-label">每2.5秒最多可以刷新次數</label>
<div class="col-sm-10">
<input class="form-control" id="auto_reload_overheat_count" value="" />
<div class="bd-callout bd-callout-info">
<strong>提示:</strong>
目前只有拓元的「日期頁面」與「票價頁面」有支援這個功能。
</div>
</div>
</div>
<div class="row mb-3">
<label for="auto_reload_overheat_cd" class="col-sm-2 col-form-label">達成最多刷新次數的冷確時間(秒)</label>
<div class="col-sm-10">
<input class="form-control" id="auto_reload_overheat_cd" value="" />
</div>
</div>
<div class="row mb-3">
<label for="reset_browser_interval" class="col-sm-2 col-form-label">重新啟動瀏覽器間隔(秒)</label>
<div class="col-sm-10">
<input class="form-control" id="reset_browser_interval" value="" />
</div>
</div>
<div class="row mb-3">
<label for="proxy_server_port" class="col-sm-2 col-form-label">Proxy IP:PORT</label>
<div class="col-sm-10">
<input class="form-control" id="proxy_server_port" value="" />
</div>
</div>
<div class="row mb-3">
<label for="window_size" class="col-sm-2 col-form-label">瀏覽器視窗大小</label>
<div class="col-sm-10">
<input class="form-control" id="window_size" value="" />
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2 col-form-label form-check-label" for="chrome_extension">Chrome 瀏覽器擴充功能</label>
<div class="col-sm-10">
<input class="form-check-input" type="checkbox" id="chrome_extension" />
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2 col-form-label form-check-label" for="disable_adjacent_seat">允許不連續座位</label>
<div class="col-sm-10">
<input class="form-check-input" type="checkbox" id="disable_adjacent_seat" />
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2 col-form-label form-check-label" for="hide_some_image">隱藏部份圖片</label>
<div class="col-sm-10">
<input class="form-check-input" type="checkbox" id="hide_some_image" />
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2 col-form-label form-check-label" for="block_facebook_network">擋掉 Facebook 連線</label>
<div class="col-sm-10">
<input class="form-check-input" type="checkbox" id="block_facebook_network" />
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2 col-form-label form-check-label" for="headless">無圖形界面模式</label>
<div class="col-sm-10">
<input class="form-check-input" type="checkbox" id="headless" />
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2 col-form-label form-check-label" for="verbose">輸出除錯訊息</label>
<div class="col-sm-10">
<input class="form-check-input" type="checkbox" id="verbose" />
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2 col-form-label form-check-label" for="ocr_captcha_enable">OCR</label>
<div class="col-sm-10">
<input class="form-check-input" type="checkbox" id="ocr_captcha_enable" />
</div>
</div>
<div class="row mb-3">
<label for="ocr_captcha_image_source" class="col-sm-2 col-form-label">OCR圖片取得方式</label>
<div class="col-sm-10">
<select id="ocr_captcha_image_source" class="form-select" aria-label="Default select">
<option value="canvas">canvas</option>
<option value="NonBrowser">NonBrowser</option>
</select>
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2 col-form-label form-check-label" for="ocr_captcha_force_submit">掛機模式</label>
<div class="col-sm-10">
<input class="form-check-input" type="checkbox" id="ocr_captcha_force_submit" />
</div>
</div>
<div class="row mb-3">
<label for="remote_url" class="col-sm-2 col-form-label">OCR Server URL</label>
<div class="col-sm-10">
<input class="form-control" id="remote_url" value="" />
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2 col-form-label form-check-label" for="ocr_captcha_use_public_server">MaxBot Public OCR Server</label>
<div class="col-sm-10">
<input class="form-check-input" type="checkbox" id="ocr_captcha_use_public_server" />
</div>
</div>
</div>
<!-- tab 4 -->
<div class="tab-pane fade" id="verification-tab-pane" role="tabpanel" aria-labelledby="verification-tab" tabindex="2">
<div class="row mb-3">
<label for="user_guess_string" class="col-sm-2 col-form-label">使用者自定字典</label>
<div class="col-sm-10">
<textarea class="form-control" id="user_guess_string" rows="3"></textarea>
</div>
</div>
</div>
<!-- tab 5 -->
<div class="tab-pane fade" id="autofill-tab-pane" role="tabpanel" aria-labelledby="autofill-tab" tabindex="2">
<div class="row mb-3">
<label for="tixcraft_sid" class="col-sm-2 col-form-label">拓元家族 cookie SID</label>
<div class="col-sm-10">
<input class="form-control" id="tixcraft_sid" value="" />
</div>
</div>
<div class="row mb-3">
<label for="ibonqware" class="col-sm-2 col-form-label">ibon cookie ibonqware</label>
<div class="col-sm-10">
<input class="form-control" id="ibonqware" value="" />
</div>
</div>
<div class="row mb-3">
<label for="facebook_account" class="col-sm-2 col-form-label">Facebook</label>
<div class="col-sm-10">
<div class="input-group">
<span class="input-group-text" id="inputGroup-sizing-default">帳號</span>
<input type="text" id="facebook_account" value="" class="form-control">
<span class="input-group-text" id="inputGroup-sizing-default">密碼</span>
<input type="password" id="facebook_password" value="" class="form-control">
</div>
</div>
</div>
<div class="row mb-3">
<label for="kktix_account" class="col-sm-2 col-form-label">KKTIX</label>
<div class="col-sm-10">
<div class="input-group">
<span class="input-group-text" id="inputGroup-sizing-default">帳號</span>
<input type="text" id="kktix_account" value="" class="form-control">
<span class="input-group-text" id="inputGroup-sizing-default">密碼</span>
<input type="password" id="kktix_password" value="" class="form-control">
</div>
</div>
</div>
<div class="row mb-3">
<label for="fami_account" class="col-sm-2 col-form-label">FamiTicket</label>
<div class="col-sm-10">
<div class="input-group">
<span class="input-group-text" id="inputGroup-sizing-default">帳號</span>
<input type="text" id="fami_account" value="" class="form-control">
<span class="input-group-text" id="inputGroup-sizing-default">密碼</span>
<input type="password" id="fami_password" value="" class="form-control">
</div>
</div>
</div>
<div class="row mb-3">
<label for="kham_account" class="col-sm-2 col-form-label">寬宏</label>
<div class="col-sm-10">
<div class="input-group">
<span class="input-group-text" id="inputGroup-sizing-default">帳號</span>
<input type="text" id="kham_account" value="" class="form-control">
<span class="input-group-text" id="inputGroup-sizing-default">密碼</span>
<input type="password" id="kham_password" value="" class="form-control">
</div>
</div>
</div>
<div class="row mb-3">
<label for="ticket_account" class="col-sm-2 col-form-label">年代</label>
<div class="col-sm-10">
<div class="input-group">
<span class="input-group-text" id="inputGroup-sizing-default">帳號</span>
<input type="text" id="ticket_account" value="" class="form-control">
<span class="input-group-text" id="inputGroup-sizing-default">密碼</span>
<input type="password" id="ticket_password" value="" class="form-control">
</div>
</div>
</div>
<div class="row mb-3">
<label for="udn_account" class="col-sm-2 col-form-label">UDN</label>
<div class="col-sm-10">
<div class="input-group">
<span class="input-group-text" id="inputGroup-sizing-default">帳號</span>
<input type="text" id="udn_account" value="" class="form-control">
<span class="input-group-text" id="inputGroup-sizing-default">密碼</span>
<input type="password" id="udn_password" value="" class="form-control">
</div>
</div>
</div>
<div class="row mb-3">
<label for="ticketplus_account" class="col-sm-2 col-form-label">遠大</label>
<div class="col-sm-10">
<div class="input-group">
<span class="input-group-text" id="inputGroup-sizing-default">帳號</span>
<input type="text" id="ticketplus_account" value="" class="form-control">
<span class="input-group-text" id="inputGroup-sizing-default">密碼</span>
<input type="password" id="ticketplus_password" value="" class="form-control">
</div>
</div>
</div>
<div class="row mb-3">
<label for="cityline_account" class="col-sm-2 col-form-label">cityline</label>
<div class="col-sm-10">
<div class="input-group">
<span class="input-group-text" id="inputGroup-sizing-default">帳號</span>
<input type="text" id="cityline_account" value="" class="form-control">
</div>
</div>
</div>
<div class="row mb-3">
<label for="urbtix_account" class="col-sm-2 col-form-label">URBTIX</label>
<div class="col-sm-10">
<div class="input-group">
<span class="input-group-text" id="inputGroup-sizing-default">帳號</span>
<input type="text" id="urbtix_account" value="" class="form-control">
<span class="input-group-text" id="inputGroup-sizing-default">密碼</span>
<input type="password" id="urbtix_password" value="" class="form-control">
</div>
</div>
</div>
<div class="row mb-3">
<label for="hkticketing_account" class="col-sm-2 col-form-label">HKTICKETING</label>
<div class="col-sm-10">
<div class="input-group">
<span class="input-group-text" id="inputGroup-sizing-default">帳號</span>
<input type="text" id="hkticketing_account" value="" class="form-control">
<span class="input-group-text" id="inputGroup-sizing-default">密碼</span>
<input type="password" id="hkticketing_password" value="" class="form-control">
</div>
<div class="bd-callout bd-callout-info">
<strong>提示:</strong>
將密碼保存到設定檔中可能會讓您的密碼被盜。
</div>
</div>
</div>
</div>
<!-- tab 6 -->
<div class="tab-pane fade" id="runtime-tab-pane" role="tabpanel" aria-labelledby="runtime-tab" tabindex="2">
<div class="row mb-3">
<label class="col-sm-2 col-form-label">執行狀態</label>
<div class="col-sm-10">
<span id="maxbot_status"></span>
<button class="btn btn-primary" id="pause_btn">暫停搶票</button>
<button class="btn btn-primary" id="resume_btn">接繼搶票</button>
</div>
</div>
<div class="row mb-3">
<label for="last_url" class="col-sm-2 col-form-label">執行網址</label>
<div class="col-sm-10">
<input class="form-control" id="last_url" value="" />
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2 col-form-label">系統時間</label>
<div class="col-sm-10">
<span id="system_time"></span>
</div>
</div>
<div class="row mb-3">
<label for="idle_keyword" class="col-sm-2 col-form-label">系統時間 - <span class="text-danger">暫停</span>關鍵字</label>
<div class="col-sm-10">
<textarea class="form-control" id="idle_keyword" rows="3"></textarea>
</div>
</div>
<div class="row mb-3">
<label for="resume_keyword" class="col-sm-2 col-form-label">系統時間 - <span class="text-success">接繼</span>關鍵字</label>
<div class="col-sm-10">
<textarea class="form-control" id="resume_keyword" rows="3"></textarea>
</div>
</div>
<div class="row mb-3">
<label for="idle_keyword_second" class="col-sm-2 col-form-label">秒數 - <span class="text-danger">暫停</span>關鍵字</label>
<div class="col-sm-10">
<textarea class="form-control" id="idle_keyword_second" rows="3"></textarea>
</div>
</div>
<div class="row mb-3">
<label for="resume_keyword_second" class="col-sm-2 col-form-label">秒數 - <span class="text-success">接繼</span>關鍵字</label>
<div class="col-sm-10">
<textarea class="form-control" id="resume_keyword_second" rows="3"></textarea>
</div>
</div>
</div>
</div>
<div class="col-12">
<button class="btn btn-primary" id="run_btn">搶票</button>
<button class="btn btn-primary" id="save_btn">存檔</button>
<button class="btn btn-primary" id="reset_btn">重設為預設值</button>
<button class="btn btn-danger" id="exit_btn">結束</button>
</div>
<div class="col-12">
<span class="text-danger" id="run_btn_pressed_message"></span>
</div>
</div>
<div class="modal" id="message_modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h2 class="modal-title fs-5" id="message_modal_title">MaxBot</h2>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<p id="message_detail"></p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">關閉</button>
</div>
</div>
</div>
</div>
<script src="settings.js"></script>
</body>
</html>