Ana içeriğe geç

⚙️ Sunucu Ayarları ve Log Sistemi (setup)

Kumiho Bot, sunucunuzdaki tüm olayları Discord kanallarında ve aynı zamanda (varsa) Web Dashboard'da görebilmeniz için veritabanında kaydeder. f.setup komutu ile sistemin hem Discord'a mesaj gönderme kısmını hem de veritabanı loglama ayarlarını kolayca yönetebilirsiniz.

📝 Log Sistemi Kurulumu​

Tüm ayarlar için tek bir görsel menü (UI) mevcuttur.

📌 Kullanım​

f.setup

🛡️ Yetkiler ve Sınırlar​

  • Kimler Kullanabilir: Sunucu Yöneticisi (Owner yetkisi veya log izni).
  • Bot Yetkisi: Kanalları Yönet, Mesaj Gönder, Embed Gönder.

🖼️ Görsel Çıktı (Arayüz)​

📝 Log Sistemi Kurulumu
**Hızlı Kurulum** ile tüm kanalları otomatik açabilir veya **Detaylı Ayarlar** menüsünden tekli şalterleri ve kanal seçimlerini yönetebilirsiniz.

Butonlar: [Hızlı Kurulum] [Detaylı Ayarlar]


🔧 Spesifik Log Kanalı Ayarlama (log set)​

Otomatik kurulum yerine her bir kategoriyi (örn. mod, ses, mesaj) manuel olarak belirli bir kanala ayarlayabilirsiniz.

📌 Kullanım​

f.log set <log_türü> <#kanal>

Geçerli Log Türleri: mesaj, ses, uyari, ticket, mod, basvuru, davet, sunucu, rol


🎚️ Log Şalterleri (log text/voice vb.)​

Bazen belirli bir olayın kanala loglanmasını istemeyebilirsiniz. (Örneğin sadece silinen mesajları loglamak ama düzenlenenleri kapatmak gibi).

  • Mesaj Silinmesi: f.log text delete <on|off>
  • Mesaj Düzenlenmesi: f.log text edit <on|off>
  • Sese Katılma: f.log voice join <on|off>

Bu şalterler hem Discord kanal loglarını hem de veritabanına olan kayıt (Web Dashboard görünürlüğü) sistemini senkronize açar veya kapatır.

🖼️ Görsel Çıktı (Şalter İşlemi)​

✅ Silinen mesaj kanal logları ve veritabanı olay kaydı senkronize olarak kapatıldı.


💻 Kaynak Kod (Meraklısına)​

Eski sistemdeki komut bazlı şalterler yerine yeni sistemde UI bileşenleri (Dropdown & Buton) ve Oracle veritabanı entegrasyonu kullanılmaktadır. Commands/administration/setup.py içerisindeki yeni mantık:

def make_callback(self, button, col_name, state):
async def callback(interaction: discord.Interaction):
await interaction.response.defer()
new_state = 0 if state == 1 else 1

# Update log_settings (DC Embeds)
await self.bot.db.execute(f"UPDATE log_settings SET {col_name}=? WHERE guild_id=?", new_state, str(interaction.guild.id))

# Sync db_log_settings (Web Dashboard)
try:
await self.bot.db.execute(f"UPDATE db_log_settings SET {col_name}=? WHERE guild_id=?", new_state, str(interaction.guild.id))
except: pass

# UI Refresh
row_db = await self.bot.db.fetchone("SELECT * FROM log_settings WHERE guild_id=?", str(interaction.guild.id))
new_view = LogToggleView(self.bot, self.category_key, dict(row_db) if row_db else {})
await interaction.edit_original_response(view=new_view)
return callback