Discord bot sürelirol komutu nasıl yapılır?

kaan32k

Decapat
Katılım
5 Şubat 2021
Mesajlar
101
Daha fazla  
Cinsiyet
Erkek
Bana süreli rol komutu lazım arkadaşlar. discord.js discord.py fark etmez yani! Sürelirol @kullanıcı süre yazınca otomatik olarak o kullanıcıya belirli bir rol versin süre boyunca. Bu komutu da sadece bir rol kullanabilsin istiyorum.
 
Bana süreli rol komutu lazım arkadaşlar. discord.js discord.py fark etmez yani! Sürelirol @kullanıcı süre yazınca otomatik olarak o kullanıcıya belirli bir rol versin süre boyunca. Bu komutu da sadece bir rol kullanabilsin istiyorum.
Parse-ms modülü kullan, süreyi dataya aktar, ready modülüyle 15 saniye de bir kontrol ettir zaman bitince rolü aldır. Kötü bir anlatım oldu.
 
Sürenin birimi nedir? Saniye mi dakika mı gün mü? Ayrıca discord.js discord.py fark etmiyorsa daha elinizde bir bot yok demektir. Hangi dili seçeceğinize karar verin ve bir bot kurun.

Ben size yapmanız gereken şeyin mantığını anlatayım;

Süreli rol komutu UNIX zamanı biçminde bir süre tanımlayacak. Örneğin eğer 30 saniye yazarsak süreyi 'şuanki zaman + 30 saniye' şeklinde hesaplayacak. Ardından bunu veritabanına işleyecek. JSON formatında bir örnek;

JSON:
{"surelirol":{[
    "userid":"7822781378728",
    "rolid":"1232781237",
    "sonkullanmatarihi":"12376623167213"
]}}

Bir tane setInterval'a ihtiyacımız var. Her saniye veya her 5 saniyede bir - artık keyfinize göre - tekrar pinglenecek.

Her pinglendiğinde de for döngüsüyle surelirol array'ı içindeki bütün elemanları, yani kullanıcıları sorgulayacak.

Eğer veritabanındaki zaman(sonkullanmatarihi) şuanki zamandan daha büyük değilse rolü alacak.

Parse-ms modülü kullan, süreyi dataya aktar, ready modülüyle 15 saniye de bir kontrol ettir zaman bitince rolü aldır. Kötü bir anlatım oldu.
Biraz daha açıkladım ben. Aslında discord.js'yle ilgilensem direkt komudunu da yazardım ancak maalesef, ben sadece eris'ten anlıyorum :D
 
@brkyozell Değişecek birimleri json'da tutmak çok mantıklı değil. Aynı anda aynı dosyaya dokununca problemler ortaya çıkabilir ki çıkıyor. İstekleri sıraya alan bir veritabanı kullanmak en iyi ve tek çözüm olmalı bana göre. Redis en mantıklı çözüm bu iş için. Tabii bir de async kütüphanesi de olmalı.
 
@brkyozell Değişecek birimleri json'da tutmak çok mantıklı değil. Aynı anda aynı dosyaya dokununca problemler ortaya çıkabilir ki çıkıyor. İstekleri sıraya alan bir veritabanı kullanmak en iyi ve tek çözüm olmalı bana göre. Redis en mantıklı çözüm bu iş için. Tabii bir de async kütüphanesi de olmalı.
Aynı anda 2 farklı istek gelecek kadar yoğun bir trafik olacağını pek sanmıyorum ancak doğru. Çünkü 2. mesajınız Discord'a gidip bot tarafından işlenene kadar zaten önceki mesajdaki veriler .json'a işleniyordur.

Yine de dediğim gibi mantıklı bir fikir.
 
Aynı anda 2 farklı istek gelecek kadar yoğun bir trafik olacağını pek sanmıyorum ancak doğru. Çünkü 2. mesajınız Discord'a gidip bot tarafından işlenene kadar zaten önceki mesajdaki veriler .json'a işleniyordur.

Yine de dediğim gibi mantıklı bir fikir.
Haklısın belki hiçbir sorun olmayacak. Ancak arkadaş yeni başlıyor belli. Json'u bu tür şeyler için kullanmaması gerektiğini öğrenmesi lazım. Kullanıyorsa da redis'e entegre kullansın. (Pickle ve benzeri şeyler kullanarak.)

Dosya okuma yazma işlemleri asenkron olmuyor. Asenkron yapılsa bile özünde imkansız zaten. Bot yapısına aykırı direkt.
 

Yeni konular

Geri
Yukarı