Fonksiyonlar bir bloğun Değişkenler alanında veya doğrudan yanıt metninde #{...} kullanılarak çağrılabilir:
#{discord_add_role(message_from, '1465674567090704592')}
Discord sunucu, kanal, rol ve mesaj kimlikleri uzun sayısal değerlerdir. Bunları kopyalamanın en kolay yolu Ayarlar → Gelişmiş → Geliştirici Modu'nu etkinleştirmektir. Bundan sonra herhangi bir nesnenin bağlam menüsünde Kimliği Kopyala seçeneği görünecektir.
Bot bağlantısı Discord'da Sohbet Robotu Oluşturma makalesinde açıklanmıştır.
Mesaj Kimliği Nereden Alınır
Bloğu tetikleyen mesajın kimliği discord_message_id değişkeninde saklanır. Ayrıca almanıza gerek yoktur:
#{discord_delete_message(discord_message_id)}
Önceden tanımlanmış değişkenlerde bulunmayan verilere ihtiyacınız varsa, tam webhook discord_webhook değişkeninde mevcuttur. save_webhook değişkenine herhangi bir değer atandığında doldurulur:
data = discord_webhook["data"]
msg_id = data["id"]
result = discord_reply_to_message(msg_id, "Bu, mesaja bir yanıttır")
Otomatik Oluşturulan Değişkenler
Bu değişkenler her olay için otomatik olarak doldurulur ve ek bir yapılandırma gerektirmez.
| Değişken | Açıklama | Örnek |
|---|---|---|
guild_id |
Sunucu kimliği | 1465674567090704591 |
discord_event |
Tek kelimelik olay türü | message |
discord_message_id |
mid ön ekiyle mesaj kimliği |
mid1465674569095319625 |
message_from |
uid ön ekiyle olay yazarının kimliği |
uid413984787162726410 |
from_username |
Yazarın Discord kullanıcı adı | 00rei |
from_name |
Yazarın sohbetteki görünen adı | Rus |
username |
Bota doğrudan mesajlar için kullanıcı adı | 00rei |
is_bot |
Olay yazarı başka bir bot ise 1
|
0 |
nickname |
Sunucu takma adı; ayarlanmamışsa boş | Moderatör |
roles |
Yazarın rol kimliklerinin listesi | ["1465674567090704592"] |
is_admin |
Kullanıcı yönetici veya sunucu sahibi ise 1
|
1 |
reply_from |
Yanıtlanan mesajın yazarının kimliği | uid493121376652230668 |
reply_from_username |
Yanıtlanan yazarın kullanıcı adı | _deikin |
reply_from_name |
Yanıtlanan yazarın görünen adı | Rus |
reply_to_bot |
Yanıt bota ise 1
|
0 |
reply_message_id |
Yanıtlanan mesajın kimliği | mid1534837349219958804 |
reply_text |
Yanıtlanan mesajın metni | bugün nöbetçi kim? |
uid, cid ve mid ön ekleri değerin bir parçasıdır. Bu değişkenleri olduğu gibi fonksiyonlara iletin; ön ekleri kaldırmanıza gerek yoktur.
from_name ve from_username
from_name, kullanıcıya sohbette hitap etmek için kullanılması gereken adı içerir:
- Ayarlanmışsa sunucu takma adı.
- Hesap görünen adı.
- Kullanıcı adı.
Selamlamalarda kullanılması önerilen değişkendir çünkü from_username _deikin veya 00rei gibi görünebilir.
reply_* değişkenleri yalnızca gelen mesaj başka bir mesaja yanıt olduğunda doldurulur. Normal mesajlar için tümü temizlenir.
Bu nedenle, aşağıdaki koşul bir yanıtı normal bir mesajdan güvenilir bir şekilde ayırt eder:
#{reply_from != ''}
nickname, roles ve is_admin değişkenleri geçerli olayın yazarını ifade eder.
Discord bu verileri tepki olayları için sağlamaz, bu nedenle yönetici kontrolleri bir mesaj veya eğik çizgi komutu olayında yapılmalıdır.
Gelen mesaj metni, diğer kanallarda olduğu gibi standart question değişkeninde saklanır.
Olaylar
Normal mesajlara ek olarak, huniye hizmet olayları da gönderilir.
Bunların metni question değişkeninde saklanır, böylece normal metin koşullarını kullanarak bunları işleyebilirsiniz.
discord_event |
question içindeki metin |
Ne Zaman Oluşur |
|---|---|---|
message |
Mesaj metni | Bir üye mesaj gönderir |
message_edit |
Güncellenmiş mesaj metni | Bir mesaj düzenlenir |
interaction |
/warn @kullanıcı spam |
Bir eğik çizgi komutu kullanılır veya bir düğmeye tıklanır |
reaction_add |
new_like ❤️ uid413984787162726410 |
Bir tepki eklenir |
reaction_remove |
reaction_remove ❤️ uid413984787162726410 |
Bir tepki kaldırılır |
message_delete |
message_delete mid1465674569095319625 |
Bir mesaj silinir |
messages_delete_bulk |
messages_delete_bulk 12 |
Birden çok mesaj silinir |
member_join |
member_join uid413984787162726410 |
Bir üye sunucuya katılır |
member_leave |
member_leave uid413984787162726410 |
Bir üye sunucudan ayrılır |
member_update |
member_update uid413984787162726410 |
Bir üyenin takma adı veya rolleri değişir |
member_ban |
member_ban uid413984787162726410 |
Bir üye yasaklanır |
member_unban |
member_unban uid413984787162726410 |
Bir üyenin yasağı kaldırılır |
Özel bir tepki için, emoji yerine özel emoji kimliği kullanılır:
new_like beer:1479419477396291696 uid413984787162726410
Ayrıntılar için Tepkiler bölümüne bakın.
Bir blok yalnızca üyeler tarafından gönderilen normal mesajlar için tetiklenmeliyse, aşağıdaki koşulu ekleyin:
discord_event == 'message'
Bu, tüm hizmet olaylarını aynı anda filtreler.
Yalnızca olay metnini kontrol etmek güvenilir değildir çünkü bir üye member_join gibi bir mesajı manuel olarak gönderebilir.
Önemli:
member_update, botun kendisi tarafından atanan bir rol de dahil olmak üzere herhangi bir üye güncellemesi tarafından tetiklenir.member_update'e tepki veren ve bir rol atayan bir blok bir döngü oluşturabilir, bu nedenle bu tür koşullar her zaman uygun şekilde kısıtlanmalıdır.
Mesajlar
| Fonksiyon | Açıklama |
|---|---|
discord_send_message(channel_id, text) |
Herhangi bir kanala mesaj gönder |
discord_send_dm(user_id, text) |
Bir üyeye doğrudan mesaj gönder |
discord_reply_to_message(message_id, text) |
Bir mesaja yanıt ver |
discord_edit_message(message_id, text) |
Bot tarafından gönderilen bir mesajı düzenle |
discord_delete_message(message_id) |
Bir mesajı sil |
discord_bulk_delete_messages(channel_id, message_ids) |
Aynı anda birden çok mesajı sil |
discord_get_message(channel_id, message_id) |
Bir mesajı al |
discord_pin_message(message_id) |
Bir mesajı sabitle |
discord_unpin_message(message_id) |
Bir mesajın sabitlemesini kaldır |
Discord sınırlamaları: Kendi mesajlarınızı düzenleme veya silme için zaman sınırı yoktur. Toplu silme yalnızca 14 günden daha eski olmayan mesajlar için çalışır ve aynı anda 2 ila 100 mesaj silebilirsiniz.
Tepkiler
| Fonksiyon | Açıklama |
|---|---|
discord_send_reaction(message_id, reaction) |
Bir tepki ekle |
discord_delete_reaction(message_id, reaction, user_id) |
Bir tepkiyi kaldır. user_id atlanırsa, botun tepkisi kaldırılır |
reaction parametresi, ❤️ gibi normal bir emojiyi veya özel bir sunucu emojisinin kimliğini kabul eder.
Özel Tepki Kimliği Nereden Alınır
Gerekli özel tepkiyi kanaldaki herhangi bir mesaja ekleyin.
Sohbette aşağıdaki gibi bir geri arama görünecektir:
new_like beer:1479419477396291696 uid413984787162726410
Burada:
beer:1479419477396291696
tepki kimliğidir.
Bunu kopyalayabilir ve tepki fonksiyonlarında kullanabilirsiniz:
#{discord_send_reaction(discord_message_id, 'beer:1479419477396291696')}
Normal emojiler geri aramalarda olduğu gibi görünür:
new_like ❤️ uid413984787162726410
burada uid413984787162726410, tepkiyi ekleyen üyenin kimliğidir.
Moderasyon
| Fonksiyon | Açıklama |
|---|---|
discord_timeout_member(user_id, seconds) |
Bir üyeyi belirtilen saniye sayısı kadar, en fazla 28 gün süreyle zaman aşımına uğrat |
discord_remove_timeout(user_id) |
Zaman aşımını erken kaldır |
discord_kick_member(user_id) |
Bir üyeyi sunucudan at; davetiye kullanarak geri dönebilir |
discord_ban_member(user_id, delete_message_seconds) |
Bir üyeyi yasakla; ikinci argüman, en fazla 7 gün olmak üzere kaç saniyelik mesaj geçmişinin silineceğini belirtir |
discord_unban_member(user_id) |
Bir üyenin yasağını kaldır |
Discord, botun rolünden daha yüksek bir role sahip bir üyeyi botun yönetmesine izin vermez. Sunucu sahibi de yönetilemez.
Roller ve Üyeler
| Fonksiyon | Açıklama |
|---|---|
discord_add_role(user_id, role_id) |
Bir rol ata |
discord_remove_role(user_id, role_id) |
Bir rolü kaldır |
discord_get_roles() |
Sunucunun rollerini ve kimliklerini al |
discord_get_member(user_id) |
Takma ad, roller ve katılma tarihi dahil olmak üzere üye verilerini al |
discord_set_nickname(user_id, nickname) |
Bir üyenin sunucu takma adını değiştir |
Botun rolü, atadığı rolden daha yüksek olmalıdır.
@everyone rolü ve entegrasyonlar tarafından yönetilen roller (diğer botlara ait roller dahil) atanamaz.
Kanallar ve Biletler
| Fonksiyon | Açıklama |
|---|---|
discord_create_channel(name, type, parent_id, permission_overwrites) |
Bir kanal oluştur |
discord_delete_channel(channel_id) |
Bir kanalı sil |
discord_set_channel_permission(channel_id, target_id, allow, deny, type) |
Kanal izinlerine izin ver veya reddet |
discord_create_invite(channel_id, max_age, max_uses) |
Bir davetiye bağlantısı oluştur |
discord_get_invites() |
Sunucunun davetiye bağlantılarını al |
discord_create_channel için varsayılan type şudur:
| Değer | Kanal Türü |
|---|---|
0 |
Metin kanalı |
2 |
Ses kanalı |
4 |
Kategori |
Kanalı bu kategorinin içinde oluşturmak için parent_id'ye bir kategori kimliği iletebilirsiniz.
discord_set_channel_permission için son argüman, izinleri kimin alacağını belirtir:
| Değer | Hedef |
|---|---|
1 |
Üye |
0 |
Rol |
allow ve deny parametreleri aşağıdaki değerleri kabul eder:
| Değer | İzin |
|---|---|
1024 |
Kanalı görüntüle |
2048 |
Mesaj gönder |
3072 |
Kanalı görüntüle ve mesaj gönder |
65536 |
Mesaj geçmişini oku |
discord_create_invite için davetiye ömrü saniye cinsinden belirtilir.
Örneğin:
86400
24 saat anlamına gelir.
0 değerindeki max_uses sınırsız kullanım anlamına gelir.
Eğik Çizgi Komutları
| Fonksiyon | Açıklama |
|---|---|
discord_get_commands() |
Sunucuda kayıtlı komutları al |
discord_set_commands(commands) |
Komutların tamamını değiştir |
discord_set_commands bir komut listesi kabul eder:
#{discord_set_commands('[
{
"name": "rules",
"description": "Sunucu kurallarını göster"
},
{
"name": "warn",
"description": "Uyarı ver",
"options": [
{
"type": 6,
"name": "user",
"description": "Kullanıcı",
"required": true
},
{
"type": 3,
"name": "reason",
"description": "Sebep",
"required": false
}
]
}
]')}
Discord Gereksinimleri
-
nameyalnızca küçük harfler içermeli, boşluk içermemeli ve 1 ila 32 karakter uzunluğunda olmalıdır. -
descriptiongereklidir ve 1 ila 100 karakter uzunluğunda olmalıdır. - Gerekli seçenekler, isteğe bağlı seçeneklerden önce gelmelidir.
- Boş bir liste iletmek, tüm bot komutlarını sunucudan kaldırır.
Seçenek Türleri
| Tür | Açıklama |
|---|---|
3 |
Dize |
4 |
Tam sayı |
5 |
Boole |
6 |
Üye |
7 |
Kanal |
8 |
Rol |
Bir komut çağrıldığında, aşağıdaki gibi bir dize olarak huniye gönderilir:
/warn @kullanıcı spam
Başka bir deyişle, komut adı ve seçenek değerleri boşluklarla ayrılır.
Bunu normal bir metin koşulu kullanarak işleyebilirsiniz.
Düğmeler için ayrı bir işleve gerek yoktur. Düğmeler normal bir yanıt bloğunda yapılandırılır ve bir düğmeye tıklama, eğik çizgi komutuyla aynı şekilde alınır: düğme değeri metinde görünür.
Puanlar ve Liderlik Tablosu
Discord entegrasyonu, yerleşik bir takdir sistemi içerir. Alıntı yapılan mesajın yazarına puan verilir.
Bunu seviyeler, rütbeler ve liderlik tabloları oluşturmak için kullanabilirsiniz.
| Fonksiyon | Açıklama |
|---|---|
discord_add_thanks_score(value) |
Alıntı yapılan mesajın yazarına puan ekler |
discord_add_thanks_score_for_answer(value) |
Yanıt veren üyeye puan ekler |
discord_minus_thanks_score(value) |
Puanları kaldırır |
discord_get_score(user_id) |
Bir üyenin puanlarını sayı olarak döndürür. Argüman olmadan, olay yazarını kullanır |
discord_get_level(user_id, points_per_level) |
Bir üyenin seviyesini alır. Varsayılan eşik: seviye başına 100 puan |
discord_get_user_info(user_id) |
Puanları, liderlik tablosu konumunu ve adı tek bir nesne olarak alır |
discord_get_top(count, shift, humanize, delimiter) |
Liderlik tablosunu alır |
discord_get_top için:
-
count— döndürülecek satır sayısı; -
shift— atlanacak satır sayısı, sayfalama için kullanışlıdır; -
humanize=true— görüntülenmeye hazır metin döndürür; -
delimiter— üye adı ile puanlar arasındaki ayırıcı.
Bir blok koşulunda puanları karşılaştırırken discord_get_score kullanın. Bu fonksiyon bir sayı döndürür, bu nedenle sayısal karşılaştırmalar beklendiği gibi çalışır.
Örnekler
Doğrudan Mesaj ile Yeni Bir Üyeyi Karşılama
Blok koşulu:
member_join
Değişkenler alanında:
discord_send_dm(
message_from,
'Merhaba, #{from_name}! Sabitlenmiş kurallara göz atın.'
)
Yasaklı Kelime İçeren Bir Mesajı Silme ve Üyeye 24 Saat Süreli Zaman Aşımı Uygulama
Blok koşulu: yasaklı kelimelerin listesi.
Ek koşul:
is_admin != 1
Fonksiyonlar:
discord_delete_message(discord_message_id)
discord_timeout_member(message_from, 86400)
Belirli Bir Mesaja Tepki İçin Rol Atama
Blok koşulu:
new_like 🍕
Ek koşul:
contains(discord_message_id, '1534927170965602324')
Fonksiyon:
discord_add_role(
message_from,
'1465674567090704592'
)
Bir Düğmeden Özel Bilet Kanalı Oluşturma
ticket = discord_create_channel(
'ticket-' + from_username
)
ticket_channel = get(
get(ticket, 'data'),
'id'
)
discord_set_channel_permission(
ticket_channel,
guild_id,
None,
1024,
0
)
discord_set_channel_permission(
ticket_channel,
message_from,
3072,
None,
1
)
discord_send_message(
ticket_channel,
'Sorununuzu tek bir mesajda açıklayın.'
)
İlk izin satırı, kanalı herkesten gizler (guild_id burada @everyone rolünü temsil eder).
İkinci satır, kanalı bileti oluşturan üye için kullanılabilir hale getirir.
Teşekkür İçin Puan Verme ve Seviyeye Göre Rol Atama
Blok koşulu:
thanks;thx;thank you
Ek koşul:
reply_from != '' and reply_from != message_from and reply_to_bot != 1
Fonksiyonlar:
discord_add_thanks_score(1)
if (discord_get_level(reply_from) >= 1) {
discord_add_role(
reply_from,
'1465674567090704592'
)
}
Koşul:
reply_from != message_from
üyelerin kendilerine puan vermesini engeller.
Koşul:
reply_to_bot != 1
bot'a puan verilmesini engeller.
Bir Komut ile Puanlarınızı Gösterme
Blok koşulu:
/xp
Değişkenler alanında:
points = discord_get_score()
lvl = discord_get_level()
Yanıt metni:
#{from_name}, #{points} XP'niz var · Seviye #{lvl}
Bir Komut ile Liderlik Tablosunu Gösterme
Blok koşulu:
/top
Yanıt metni:
🏆 XP Liderlik Tablosu:
#{discord_get_top(10, 0, true, ' — ')}