{% extends "base.html" %} {% block title %}ควบคุมบอต — {{ name }}{% endblock %} {% macro hidden(action) %}{% endmacro %} {% block content %}

ควบคุมบอต — {{ name }}{% if controls %} ({{ {'player':'Player Bot','manager':'Server Manager Bot','full':'Full Bot'}.get(controls.status.role, 'SNTalkBot') }}){% endif %}

กลับไปจัดการบอต | ตั้งค่าทั้งหมด | รีเฟรชข้อมูล

{% if accepted %}

รับคำขอแล้ว กำลังดำเนินการ ดูผลตอบกลับด้านล่าง

{% endif %} {% if controls %} {% set actions = controls.actions %} {% set live = controls.status %}

สถานะ

{{ controls.last.error or controls.feedback or control_states.get(controls.last.state, 'พร้อมรับคำขอ') }}

เมื่อกดปุ่ม ระบบจะส่งคำขอให้บอต และแสดงผลตอบกลับจาก TeamTalk เมื่อได้รับการยืนยัน หากขึ้นว่า “ส่งคำขอแล้ว” ยังไม่ใช่ผลสำเร็จสุดท้าย

{% if live.player %}

เพลง: {{ live.player.title or 'ยังไม่ได้เล่น' }} | เสียง {{ live.player.volume }} | คิว {{ live.player.queue_count }} รายการ

{% endif %} {% if live.manager %}

Manager: กรองคำ {{ 'เปิด' if live.manager.filter else 'ปิด' }} | ระบบต้อนรับ {{ 'เปิด' if live.manager.welcome_mode else 'ปิด' }} | ประกาศอัตโนมัติ {{ 'เปิด' if live.manager.global_broadcast_enabled else 'ปิด' }}

{% endif %}
{% if controls.history %}

คำสั่งที่ส่งล่าสุด

    {% for row in controls.history[:20] %}
  1. {{ control_labels.get(row.action, row.action) }} — {{ control_states.get(row.state, 'กำลังดำเนินการ') }}{% if row.error %} — {{ row.error }}{% endif %}
  2. {% endfor %}

แสดงเฉพาะชื่อการดำเนินการ ไม่บันทึกข้อความ รหัสผ่าน หรือโทเคน

{% endif %} {% if 'play_youtube' in actions %}

เล่นเพลง

{{ hidden('play_youtube') }}
{{ hidden('play_music') }}
{{ hidden('play_url') }}
{{ hidden('append_playlist') }}
{% if 'playlist_search' in actions %}

ค้นหา Playlist ด้วยชื่อ

{{ hidden('playlist_search') }}

ผลค้นหาจะแสดงอัตโนมัติเมื่อพร้อม หากปิด JavaScript ให้กดรีเฟรชข้อมูลด้านบน

{% set found = controls.playlist_search or {} %} {% if found.get('items') %}

พบ {{ found['items']|length }} รายการจากคำค้นหา {{ found['query'] }} กรุณาเลือก Playlist ที่ต้องการเพิ่มท้ายคิว

    {% for item in found['items'] %}
  1. {{ item.title }}{% if item.channel %} — {{ item.channel }}{% endif %}
    {{ hidden('playlist_choose') }}
  2. {% endfor %}
{% endif %}
{% endif %}
{% for action,label in control_labels.items() %}{% if action in actions and action in quick_actions %}
{{ hidden(action) }}
{% endif %}{% endfor %}
{{ hidden('volume') }}
{{ hidden('seek') }}
{{ hidden('speed') }}
{{ hidden('mode') }}
{{ hidden('queue_mode') }}
{% if 'player_channel_messages' in actions %}
{{ hidden('player_channel_messages') }}
{% endif %} {% if 'player_tts_tracks' in actions %}

เสียงประกาศเพลงและคิว

{{ hidden('player_tts_tracks') }}
{{ hidden('player_tts_queue') }}
{{ hidden('player_tts_engine') }}
{{ hidden('player_tts_voice') }}
{{ hidden('player_tts_rate') }}
{{ hidden('player_tts_speed') }}
{% endif %}

รายการคิว

แสดงสูงสุด 250 รายการแรก ใช้ช่องหมายเลขเพื่อเลือกตำแหน่งอื่นได้ ระบบรักษาลำดับการขอเพลงตามเดิม ไม่เปิดการย้ายคิวขึ้นหรือลง

    {% for row in live.player.queue %}
  1. {{ row.title }}{% if row.current %} — กำลังเล่น{% endif %}
    {{ hidden('select') }}
    {{ hidden('delete_queue') }}
    {% if live.player.queue_mode and row.has_search_alternatives %}

    ผลค้นหาที่เลือก {{ row.search_choice }} จาก {{ row.search_choices }}

    {{ hidden('search_previous') }}
    {{ hidden('search_next') }}
    {% endif %}
  2. {% else %}
  3. ยังไม่มีรายการ
  4. {% endfor %}
{{ hidden('select') }}
{{ hidden('delete_queue') }}
{{ hidden('clear_queue') }}

รายการโปรด

    {% for favorite in controls.favorites %}
  1. {{ favorite.title }}
  2. {% else %}
  3. ยังไม่มีรายการโปรด
  4. {% endfor %}
{{ hidden('favorite_delete') }}
{% endif %} {% if 'retry_failed' in actions %}

รายการที่เล่นไม่สำเร็จ

เก็บไว้ในฐานข้อมูล ไม่ต้องเพิ่มเพลงใหม่ แสดง 100 รายการล่าสุด กดส่งกลับท้ายคิวหลังแก้คุกกี้หรือปัญหาการเชื่อมต่อแล้ว

{% endif %} {% if 'announce_server' in actions %}

ส่งประกาศ

{% if 'announce_channel' in actions %}
{{ hidden('announce_channel') }}
{% endif %} {% if 'speak_channel' in actions %}
{{ hidden('speak_channel') }}
{% endif %} {% if 'announce_server' in actions %}
{{ hidden('announce_server') }}
{% endif %}
{% set mgr = live.manager or {} %}

ตั้งค่าการทำงานของ Manager

ตั้งค่าแล้วบอตบันทึกลงไฟล์ตั้งค่าตามระบบเดิม มีผลกับการทำงานของบอตนี้

{% for action, label, enabled in [ ('manager_channel_input','รับคำสั่งจากข้อความในห้อง',mgr.channel_input), ('manager_intercept','ตรวจข้อความทุกห้องเพื่อใช้ระบบดูแล',mgr.intercept), ('manager_filter','ระบบกรองคำไม่เหมาะสม',mgr.filter), ('manager_welcome','ข้อความต้อนรับผู้เข้าห้อง',mgr.welcome_mode), ('manager_welcome_broadcast','ประกาศต้อนรับผู้เข้าสู่เซิร์ฟเวอร์',mgr.welcome_broadcast), ('manager_vpn','ตรวจจับ VPN',mgr.vpn_detection), ('manager_noname','ป้องกันชื่อผู้ใช้ว่างหรือ NoName',mgr.prevent_noname), ('manager_global_broadcast','ประกาศอัตโนมัติส่วนกลาง',mgr.global_broadcast_enabled), ('manager_global_broadcast_tts','อ่านออกเสียงประกาศส่วนกลาง',mgr.global_broadcast_tts) ] %} {% if action in actions %}

{{ label }}

{{ hidden(action) }}
{% endif %} {% endfor %} {% if 'manager_global_broadcast_interval' in actions %}
{{ hidden('manager_global_broadcast_interval') }}
{% endif %}
{% endif %} {% if 'kick_user' in actions %}

จัดการเซิร์ฟเวอร์

{{ hidden('join_channel') }}
{{ hidden('kick_user') }}
{{ hidden('ban_user') }}
{{ hidden('move_user') }}

ดูรายชื่อผู้ใช้และสถานะสดของเซิร์ฟเวอร์

{% endif %} {% if user.role == 'superadmin' and 'manager_jail' in actions %}

ห้องขังและโทษตามเวลา

ใช้บัญชี TeamTalk Administrator ของบอตเพื่อสั่งงาน โทษตามเวลาจะบันทึกในฐานข้อมูลบอตและถูกตรวจซ้ำเมื่อครบกำหนด

บัญชีที่ถูกกำหนดให้อยู่ในห้องขัง

{{ hidden('manager_jail') }}
{{ hidden('manager_unjail') }}

เพิ่มโทษตามเวลา

ตัวอย่างระยะเวลา: 30m คือ 30 นาที, 2h คือ 2 ชั่วโมง, 1h:30m คือ 1 ชั่วโมง 30 นาที สูงสุด 30 วัน

{% for action, label, placeholder in [ ('manager_timed_ban_ip','แบน IP ของผู้ใช้ออนไลน์ตามเวลา','ชื่อเล่นผู้ใช้ออนไลน์'), ('manager_timed_ban_user','แบนบัญชีผู้ใช้ออนไลน์ตามเวลา','ชื่อเล่นผู้ใช้ออนไลน์'), ('manager_timed_kick','เตะผู้ใช้ตามชื่อเล่นและกันกลับชั่วคราว','ชื่อเล่น'), ('manager_timed_kick_user','เตะบัญชีผู้ใช้และกันกลับชั่วคราว','ชื่อบัญชี TeamTalk') ] %} {% if action in actions %}
{{ label }}
{{ hidden(action) }}
{% endif %} {% endfor %} {% for person in controls.users %}{% endfor %}

โทษตามเวลาที่กำลังมีผล

{% if 'manager_clear_timed' in actions %}
{{ hidden('manager_clear_timed') }}
{% endif %}
{% endif %} {% if user.role == 'superadmin' and controls.teamtalk and 'server_update' in actions %} {% set tt = controls.teamtalk %} {% set props = tt.properties %}

ตั้งค่า TeamTalk Server

ปรับค่าของเซิร์ฟเวอร์ที่บอตเชื่อมต่ออยู่โดยตรง การเปลี่ยนพอร์ตต้องทำจากเครื่องเซิร์ฟเวอร์ ไม่ใช่หน้านี้

{% if props %}

TeamTalk Server รุ่น {{ props.version }} | ชื่อปัจจุบัน {{ props.server_name }}

{{ hidden('server_update') }}
{% else %}

ยังไม่ได้รับข้อมูลคุณสมบัติเซิร์ฟเวอร์

{% endif %}
{{ hidden('server_save') }}
{{ hidden('server_stats') }}
{% if tt.statistics %}

สถิติที่ได้รับจากเซิร์ฟเวอร์

{% for key, value in tt.statistics.items() %}
{{ key }}
{{ value }}
{% endfor %}
{% endif %}

จัดการห้อง TeamTalk

เลือกห้องจากรายการด้านล่างเพื่อแก้ไขข้อมูล การเปลี่ยนชื่อห้องเดิมไม่รองรับผ่าน TeamTalk UpdateChannel จึงสร้างห้องใหม่ได้แต่แก้ชื่อเดิมไม่ได้

ระวัง: ลบห้องแล้วห้องย่อยอาจถูกลบตาม และผู้ใช้ในห้องจะถูกนำออกจากห้องด้วย ตรวจสอบก่อนยืนยัน DELETE

สร้างห้องใหม่

{{ hidden('channel_create') }}

แก้ไขห้อง

{{ hidden('channel_update') }}

ลบห้อง

{{ hidden('channel_delete') }}

บัญชี TeamTalk และสิทธิ์

{{ hidden('accounts_refresh') }}

ข้อมูลบัญชีแสดงชื่อ ประเภทและสิทธิ์ โดยไม่แสดงรหัสผ่าน; โหลดได้สูงสุด 500 บัญชีต่อครั้ง

สร้างบัญชี

{{ hidden('account_create') }}
สิทธิ์สำหรับผู้ใช้ทั่วไป (Administrator จะมีสิทธิ์ทั้งหมด) {% for value, description in [('voice','ส่งเสียง'),('channel_text','ข้อความในห้อง'),('private_text','ข้อความส่วนตัว'),('view_users','ดูผู้ใช้ทั้งหมด'),('create_channel','สร้างห้องชั่วคราว'),('files_upload','อัปโหลดไฟล์'),('files_download','ดาวน์โหลดไฟล์'),('media','สตรีมสื่อ'),('broadcast','ประกาศทั้งเซิร์ฟเวอร์'),('kick','เตะผู้ใช้'),('ban','แบนผู้ใช้'),('move','ย้ายผู้ใช้'),('modify_channels','แก้ไขห้อง'),('operator','ให้สิทธิ์ Operator'),('server_settings','แก้ค่าของเซิร์ฟเวอร์')] %} {% endfor %}

ลบบัญชี

{{ hidden('account_delete') }} {% for a in tt.accounts %}{% endfor %}

การแบนและสิทธิ์ Operator

{{ hidden('bans_refresh') }}

แบน IP

{{ hidden('ban_ip') }}

ยกเลิกแบน IP

{{ hidden('unban_ip') }}

แบนบัญชีผู้ใช้ (แม้ไม่ได้ออนไลน์)

{{ hidden('ban_username') }}

ยกเลิกแบนบัญชีผู้ใช้

{{ hidden('unban_username') }}

ให้หรือถอนสิทธิ์ Operator

{{ hidden('operator_set') }}

เตะผู้ใช้ออกจากห้อง (ไม่ใช่ทั้งเซิร์ฟเวอร์)

{{ hidden('kick_channel') }}
{% endif %} {% else %}

ยังควบคุมไม่ได้ กรุณาเริ่มบอตและอัปเดต Bot/Helper/Manager เป็นรุ่นที่รองรับ

{% endif %} {% endblock %}