Skip to content

sudis/ticket-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Advanced Ticket Bot

Bu Bot 07.07.2021 tarihinde Sude Alaçatı (Github) tarafından yazılmıştır. Herhangi bir kar amacı gütmeyen bu proje sunucularınızda üyelerinize etkili şekillerde ulaşmanızı sağlıyor. Adından da anlaşıldığı üzere Bilet Bot'u üyelerinizin sizlere daha kolay ulaşmasını sağlayacak sistemlerden birisidir. Bu projenin herhangi bir yerde parayla satışına izin verilmeyecek.

Discord'un Ratelimit kurallarına önem göstermeniz gerekiyor. Botu kullanırken art arda buton işlemleri yapmayın. Bunun sebebi butonlara her tıkladığınızda butonun kanal işlemi gerçekleştirmesi. Yani Butona bastığınız zaman ticket-20 olarak açılan kanal tekrar butona basıldığında ticket-claimed-20 olarak değişecek. Bu değişmeye kanalın içerik bölümü de dahil. Bundan dolayı her yapılan iki eylemden sonra zaman geçmeli ve buna göre hareket edilmeli. Buna uyulmazsa kanal adları ve diğer özellikler Ratelimit engelinden dolayı değişmeyecek ve problem yaratacak.

Hatalar olabilir bir günde yazdım. Projeyi farklı yapacaktım sonra fikir değiştirdim. Hatanın çok çıkması olası. Oturup düzeltin yahu onu da ben mi diyeyim.

Bu bot MySQL veri tabanını kullanıyor. MongoDB'ye geçirin diye yapılmadı. Buna göre kullanın.

İçerik

  • Başlamadan Önce
  • MySQL Community Server'in Kurulumu -- MySQL Nedir? -- Neden MySQL?
  • Dosya Düzenlemeleri -- config.js dosyasının düzenlenmesi. -- MySQL Veri tabanı kurulumu. -- tables.sql dosyasının aktarılması
  • Aktifleştirme
  • Özellikler
  • Bitiş

Başlamadan Önce

Başlamadan önce bu bot GCommands Framework'unu kullanmakta. Normal DJS Handler'larından farklı olarak her yarattığınız komut birer SLASH COMMAND özelliği taşır. Bundan dolayı OAuth/Scopes bölümünden botu davet etmelisiniz.

Scope ayarlanması.

Problemler devam ederse bota Administrator rolü vererek tekrar deneyin. Admin rolü gerekmese de bazen problem çıkabiliyor.

Botun iki adet eğik çizgi komutu mevcut. Bunlardan birisi /geri-bildirim diğeri /profil. Bu iki komutun çalışma prensibi eğik çizgi olduğu için oluşmaları bir saate kadar zaman alabiliyor. Bundan dolayı dikkatli olun.

MySQL Community Server'in Kurulumu

Windows için: https://dev.mysql.com/downloads/file/?id=505213 Mac için: https://dev.mysql.com/downloads/file/?id=505134

Kurulum yaparken panik yapmanıza gerek yok. Proje Bilgisayarı olarak seçim yapın. Sadece root şifresini ayarlayın. Yine sadece Community Server'i kurun.

MySQL nedir ve nasıl kurulur hakkında daha fazla bilgi almak için yazımı inceleyebilirsiniz.

https://github.com/sudis/mysql

Dosya Düzenlemeleri

Config düzenlemeleri aşağıdaki gibi olacak.

{

"bot":  {
"token":  "TOKEN_BURAYA",
"owners":  ["KURUCU_BURAYA"],
"testers":  ["TESTER_BURAYA"],
"guildID":  "SUNUCU_ID_BURAYA",
"voiceChannel":  "SES_KANALI_BURAYA",
"status":  "OYNUYOR_BURAYA"
},
"colors":  {
"panelEmbedColor":  "RENK_SEÇ",
"claimEmbedColor":  "RENK_SEÇ",
"welcomeEmbedColor":  "RENK_SEÇ"
},
"ticketSettings":  {
"rooms":  {
"panelChannel":  "KATEGORİ_SEÇ",
"ticketParent":  "KATEGORİ_SEÇ",
"archiveParent":  "KATEGORİ_SEÇ"
},
"auths":  {
"moderatorRole":  "ROL_SEÇ",
"generalDepartment":  "ROL_SEÇ",
"problemDepartment":  "ROL_SEÇ",
"suggestionDepartment":  "ROL_SEÇ"
},
"ticketFeelings":  {
"ticketStarting":  "EMOJİ_SEÇ",
"starEmoji":  "EMOJİ_SEÇ",
"generalHelpEmoji":  "EMOJİ_SEÇ",
"bugHelpEmoji":  "EMOJİ_SEÇ",
"suggestionHelpEmoji":  "EMOJİ_SEÇ",
"whatEmoji":  "EMOJİ_SEÇ",
"upvoteEmoji":  "EMOJİ_SEÇ",
"donwvoteEmoji":  "EMOJİ_SEÇ"
}
},
"mysql":  {
"database":  "DATABASE_ADI",
"host":  "HOST_ADI(localhost)",
"user":  "USER_ADI(root)",
"password":  "ŞİFRE"
}
}

MySQL'da bir veri tabanı oluşturmak için arama çubuğuna MySQL Command Prompt yazmanız yeterli. İlk çıkan sonuca girin. Sizden kendi oluşturmuş olduğunuz şifreyi isteyecek. Girdikten sonra CREATE DATABASE TicketBot; kodunu girin. Daha sonrasında USE TicketBot; kodunu girin.

Aşağıda verilmiş olan TABLE'ları bütün şekilde kopyalayıp yapıştırın ve enter'e basın.

CREATE  TABLE Tickets (
pid INT AUTO_INCREMENT PRIMARY  KEY  NOT  NULL,
member_id CHAR(18) NOT  NULL,
claimed_staff CHAR(18),
ticket_status ENUM('AÇIK','ARŞİVDE','KAPALI','SİLİNMİŞ') DEFAULT  'AÇIK'  NOT  NULL,
ticket_type ENUM('GENEL','HATALAR','ÖNERİLER'),
ticket_room CHAR(18),
ticket_transcript VARCHAR(255),
opening_timestamp CHAR(10) NOT  NULL,
opening_time DATETIME  DEFAULT (CURRENT_TIME) NOT  NULL
);
  

CREATE  TABLE TicketStats (
pid INT AUTO_INCREMENT UNIQUE  NOT  NULL,
member_id CHAR(18) PRIMARY  KEY  NOT  NULL,
clicked_buttons INT  DEFAULT  0  NOT  NULL,
opened_tickets INT  DEFAULT  0  NOT  NULL,
solved_tickets INT  DEFAULT  0  NOT  NULL,
unsolved_tickets INT  DEFAULT  0  NOT  NULL,
general_ask INT  DEFAULT  0  NOT  NULL,
problem_ask INT  DEFAULT  0  NOT  NULL,
suggestion_ask INT  DEFAULT  0  NOT  NULL
);
  

CREATE  TABLE Comments (
pid INT AUTO_INCREMENT UNIQUE  NOT  NULL,
staff_id CHAR(18) PRIMARY  KEY  NOT  NULL,
staff_solubility INT  DEFAULT  0  NOT  NULL,
staff_unsolubility INT  DEFAULT  0  NOT  NULL,
comment ENUM('Akıllı','Hızlı','Arkadaşça','Dalgacı','Bilgisiz','Kötü Hız','Belirtilmemiş') DEFAULT  'Belirtilmemiş'  NOT  NULL
);

MySQL bilginiz yoksa TABLE düzenlemesi yapmanızı önermem. MySQL hakkında bilgi almak için üstte yazdığım yazıyı incelemenizde fayda var.

Aktifleştirme

Üstteki adımları yerine getirdiyseniz botunuzun klasörünü Terrminal ile açın. Bu bot yarn kullandığı için npm işlemleri yapmayın. yarn install koduyla bütün modülleri indirin. nodemon main komutuyla botu çalıştırın. (Diğer türlü çalıştırmak isterseniz orası size kalmış.)

Özellikler

Bu botta bir çok özellik mevcut. En iyi şekilde üyelerinize ulaşmanız için eklenebilecek özellikleri ekledim. Özelliklerden bir kaçını tanıtmak gerekirse;

1. Yenilikler

Discord'un yeni sağlamış olduğu yenilikleri kullanıyoruz.

Yenlilikler

Yenlilikler

2. Yetkili Kontrolleri

Yetkililer biletleri devralabilirler.

Yetkililer Biletleri Devralır

3. Gelişmiş Mesajlar

Üyelerin kafalarının karışmaması için her şey mesajlarla yürütülür. Ana mesaj ve sistem mesajları olarak ikiye ayrılan sistemimizde, ana mesaj ilk kanal mesajı sayılır.

Gelişmiş Mesajlar

4. Gelişmiş Kanal Açıklaması

Mesajlardan da takip edebileceğiniz bilgileri kanal açıklamasında depolarız.

enter image description here

5. Arşivleme Sistemi

Biletleri sonra okumak için arşive kaldırabilirsiniz.

enter image description here

6. Tekrar Açılan Biletler

Biletleri tekrar açtığınızda tek tek kişileri çağırmak zorunda değilsiniz.

enter image description here

7. Geribildirim Sistemi

Bilet devraldıktan sonra etkinleşen /geri-bildirim komutu yetkililerin davranışlarından ne kadar memnun olup olmadığınıza göre değişiyor. Yetkiliden memnun değilseniz onu gizlice yani anonim bir şekilde oylama fırsatı sunuyor.

5, 4 ve 3. Yıldız iyi kategorisine girerken, 2 ve 1. Yıldız kötü kategorisine giriyor. Aynı zamanda açıklamada da bulunuyorsunuz.

Puanlama

Açıklama

Anonimlik

8. Gelişmiş Profil Sistemi

Yaptığınız bir çok şey anonimce kayıt altına alınıyor. Buna istatistikleriniz de dahil. Profil komutu sayesinde bir yetkiliyseniz ne kadar üyeye yardım ettiğinizi görebilir, bir üyeyseniz de ne kadar yardım aldığınızı sorgulayabilirsiniz.

Profil

Profil devamı

9. Güçlü MySQL Veritabanı

Her şey elinizin altında. Bir çok kayıt ENUM ile yapıldığı için düzenleme yaparken çok basitçe düzenlemeler yapabileceksiniz.

Veritabanı

10. Sadelik ve Basitlik

Herkes bir bilet açabilir. Bileti hakkında her an tetikte kalabilir.

Sadelik

Bitiş

Herhangi bir problem çıkarsa GCommands sürümünü güncelleyebilirsiniz. Dilerseniz Serendia Squad'a katılıp sorularınızı sorabilirsiniz.

Serendia Squad

Discord: https://discord.gg/serendia GCommands Kılavuzu: http://gcommands.js.org (Ben çeviri yapıyorum.)

İyi kodlamalar!

Normalnie chciałem to zrobić moim polskim przyjaciołom. Ale nie mogłem tego zrobić. Proszę nie gniewaj się na mnie. Mój pierwszy projekt był na tym szczycie.

About

Versatile Ticket Bot.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published