Funkcijas var izsaukt bloka Mainīgie laukā vai tieši atbildes tekstā, izmantojot #{...}:
#{discord_add_role(message_from, '1465674567090704592')}
Discord servera, kanāla, lomas un ziņojumu ID ir gari skaitliski dati. Vienkāršākais veids, kā tos nokopēt, ir iespējot Iestatījumi → Papildu → Izstrādātāja režīms. Pēc tam jebkura objekta konteksta izvēlnē parādīsies opcija Kopēt ID.
Bota savienojums ir aprakstīts rakstā Kā izveidot tērzēšanas robotu Discord.
Kur iegūt ziņojuma ID
Ziņojuma ID, kas aktivizēja bloku, tiek glabāts mainīgajā discord_message_id. Tas nav atsevišķi jāiegūst:
#{discord_delete_message(discord_message_id)}
Ja nepieciešami dati, kas nav pieejami iepriekš definētajos mainīgajos, pilns webhook ir pieejams mainīgajā discord_webhook. Tas tiek aizpildīts, kad jebkurai vērtībai tiek piešķirts mainīgais save_webhook:
data = discord_webhook["data"]
msg_id = data["id"]
result = discord_reply_to_message(msg_id, "Šī ir atbilde uz ziņojumu")
Automātiski izveidotie mainīgie
Šie mainīgie tiek automātiski aizpildīti katram notikumam un neprasa papildu konfigurāciju.
| Mainīgais | Apraksts | Piemērs |
|---|---|---|
guild_id |
Servera ID | 1465674567090704591 |
discord_event |
Notikuma veids kā viens vārds | message |
discord_message_id |
Ziņojuma ID ar prefiksu mid
|
mid1465674569095319625 |
message_from |
Notikuma autora ID ar prefiksu uid
|
uid413984787162726410 |
from_username |
Autora Discord lietotājvārds | 00rei |
from_name |
Autora parādāmais vārds tērzēšanā | Rus |
username |
Lietotājvārds tiešajiem ziņojumiem botam | 00rei |
is_bot |
1, ja notikuma autors ir cits bots |
0 |
nickname |
Servera segvārds; tukšs, ja nav iestatīts | Moderators |
roles |
Autora lomu ID saraksts | ["1465674567090704592"] |
is_admin |
1, ja lietotājs ir administrators vai servera īpašnieks |
1 |
reply_from |
Autora ID, uz kura ziņojumu tiek atbildēts | uid493121376652230668 |
reply_from_username |
Autora lietotājvārds, uz kuru tiek atbildēts | _deikin |
reply_from_name |
Autora parādāmais vārds, uz kuru tiek atbildēts | Rus |
reply_to_bot |
1, ja atbilde ir botam |
0 |
reply_message_id |
Ziņojuma ID, uz kuru tiek atbildēts | mid1534837349219958804 |
reply_text |
Ziņojuma teksts, uz kuru tiek atbildēts | kurš šodien dežurē? |
Prefiksi uid, cid un mid ir daļa no vērtības. Nododiet šos mainīgos funkcijām tādus, kādi tie ir; jums nav jānoņem prefiksi.
from_name vs. from_username
from_name satur vārdu, kas jāizmanto, lai uzrunātu lietotāju tērzēšanā:
- Servera segvārds, ja iestatīts.
- Konta parādāmais vārds.
- Lietotājvārds.
Šis ir ieteicamais mainīgais, ko izmantot sveicienos, jo from_username var izskatīties kā _deikin vai 00rei.
Mainīgie reply_* tiek aizpildīti tikai tad, kad ienākošais ziņojums ir atbilde uz citu ziņojumu. Parastajiem ziņojumiem tie visi tiek notīrīti.
Tāpēc šāds nosacījums droši atšķir atbildi no parasta ziņojuma:
#{reply_from != ''}
Mainīgie nickname, roles un is_admin attiecas uz pašreizējā notikuma autoru.
Discord nesniedz šos datus par reakciju notikumiem, tāpēc administratora pārbaudes jāveic ziņojuma vai slīpsvītras komandas notikumā.
Ienākošā ziņojuma teksts tiek glabāts standarta mainīgajā question, tāpat kā citos kanālos.
Notikumi
Papildus parastajiem ziņojumiem piltuvē tiek nosūtīti arī pakalpojumu notikumi.
To teksts tiek glabāts mainīgajā question, tāpēc tos var apstrādāt, izmantojot parastos teksta nosacījumus.
discord_event |
Teksts question
|
Kad notiek |
|---|---|---|
message |
Ziņojuma teksts | Dalībnieks nosūta ziņojumu |
message_edit |
Atjaunināts ziņojuma teksts | Ziņojums tiek rediģēts |
interaction |
/warn @user spam |
Tiek izmantota slīpsvītras komanda vai noklikšķināta poga |
reaction_add |
new_like ❤️ uid413984787162726410 |
Tiek pievienota reakcija |
reaction_remove |
reaction_remove ❤️ uid413984787162726410 |
Tiek noņemta reakcija |
message_delete |
message_delete mid1465674569095319625 |
Ziņojums tiek dzēsts |
messages_delete_bulk |
messages_delete_bulk 12 |
Tiek dzēsti vairāki ziņojumi |
member_join |
member_join uid413984787162726410 |
Dalībnieks pievienojas serverim |
member_leave |
member_leave uid413984787162726410 |
Dalībnieks pamet serveri |
member_update |
member_update uid413984787162726410 |
Dalībnieka segvārds vai lomas mainās |
member_ban |
member_ban uid413984787162726410 |
Dalībnieks tiek bloķēts |
member_unban |
member_unban uid413984787162726410 |
Dalībnieks tiek atbloķēts |
Pielāgotai reakcijai emocijzīmes vietā tiek izmantots pielāgotās emocijzīmes ID:
new_like beer:1479419477396291696 uid413984787162726410
Skatiet sadaļu Reakcijas, lai iegūtu sīkāku informāciju.
Ja blokam vajadzētu aktivizēties tikai parastajiem dalībnieku nosūtītajiem ziņojumiem, pievienojiet šādu nosacījumu:
discord_event == 'message'
Tas uzreiz filtrē visus pakalpojumu notikumus.
Pārbaudīt tikai notikuma tekstu ir neuzticami, jo dalībnieks var manuāli nosūtīt ziņojumu, piemēram, member_join.
Svarīgi:
member_updatetiek aktivizēts ar jebkuru dalībnieka atjauninājumu, ieskaitot lomu, ko piešķīris pats bots. Bloks, kas reaģē uzmember_updateun piešķir lomu, var izveidot cilpu, tāpēc šādi nosacījumi vienmēr ir atbilstoši jāierobežo.
Ziņojumi
| Funkcija | Apraksts |
|---|---|
discord_send_message(channel_id, text) |
Nosūtīt ziņojumu jebkuram kanālam |
discord_send_dm(user_id, text) |
Nosūtīt tiešo ziņojumu dalībniekam |
discord_reply_to_message(message_id, text) |
Atbildēt uz ziņojumu |
discord_edit_message(message_id, text) |
Rediģēt bota nosūtītu ziņojumu |
discord_delete_message(message_id) |
Dzēst ziņojumu |
discord_bulk_delete_messages(channel_id, message_ids) |
Dzēst vairākus ziņojumus vienlaikus |
discord_get_message(channel_id, message_id) |
Iegūt ziņojumu |
discord_pin_message(message_id) |
Piespraust ziņojumu |
discord_unpin_message(message_id) |
Atsprāgt ziņojumu |
Discord ierobežojumi: Nav laika ierobežojuma savu ziņojumu rediģēšanai vai dzēšanai. Lielapjoma dzēšana darbojas tikai ziņojumiem, kas ir jaunāki par 14 dienām, un vienlaikus var dzēst no 2 līdz 100 ziņojumiem.
Reakcijas
| Funkcija | Apraksts |
|---|---|
discord_send_reaction(message_id, reaction) |
Pievienot reakciju |
discord_delete_reaction(message_id, reaction, user_id) |
Noņemt reakciju. Ja user_id ir izlaists, tiek noņemta bota reakcija |
Parametrs reaction pieņem vai nu parastu emocijzīmi, piemēram, ❤️, vai pielāgotas servera emocijzīmes ID.
Kur iegūt pielāgotas reakcijas ID
Pievienojiet nepieciešamo pielāgoto reakciju jebkuram ziņojumam kanālā.
Tērzēšanā parādīsies šāds atsauksmes zvans:
new_like beer:1479419477396291696 uid413984787162726410
Šeit:
beer:1479419477396291696
ir reakcijas ID.
Varat to nokopēt un izmantot reakciju funkcijās:
#{discord_send_reaction(discord_message_id, 'beer:1479419477396291696')}
Parastās emocijzīmes atsauksmes zvanos parādās tādas, kādas tās ir:
new_like ❤️ uid413984787162726410
kur uid413984787162726410 ir dalībnieka ID, kurš pievienoja reakciju.
Moderācija
| Funkcija | Apraksts |
|---|---|
discord_timeout_member(user_id, seconds) |
Iestatīt dalībniekam pārtraukumu uz norādīto sekunžu skaitu, līdz 28 dienām |
discord_remove_timeout(user_id) |
Priekšlaicīgi noņemt pārtraukumu |
discord_kick_member(user_id) |
Izmest dalībnieku no servera; viņš var atgriezties, izmantojot ielūgumu |
discord_ban_member(user_id, delete_message_seconds) |
Bloķēt dalībnieku; otrais arguments norāda, cik sekunžu ziņojumu vēsturi dzēst, līdz 7 dienām |
discord_unban_member(user_id) |
Atbloķēt dalībnieku |
Discord neļauj botam moderēt dalībnieku, kura loma ir augstāka par bota lomu. Servera īpašnieku arī nevar moderēt.
Lomas un dalībnieki
| Funkcija | Apraksts |
|---|---|
discord_add_role(user_id, role_id) |
Piešķirt lomu |
discord_remove_role(user_id, role_id) |
Noņemt lomu |
discord_get_roles() |
Iegūt servera lomas un to ID |
discord_get_member(user_id) |
Iegūt dalībnieka datus, ieskaitot segvārdu, lomas un pievienošanās datumu |
discord_set_nickname(user_id, nickname) |
Mainīt dalībnieka servera segvārdu |
Bota lomai jābūt augstākai par lomu, ko tā piešķir.
Lomu @everyone un lomas, ko pārvalda integrācijas, ieskaitot citu botu lomas, nevar piešķirt.
Kanāli un biļetes
| Funkcija | Apraksts |
|---|---|
discord_create_channel(name, type, parent_id, permission_overwrites) |
Izveidot kanālu |
discord_delete_channel(channel_id) |
Dzēst kanālu |
discord_set_channel_permission(channel_id, target_id, allow, deny, type) |
Atļaut vai liegt kanāla atļaujas |
discord_create_invite(channel_id, max_age, max_uses) |
Izveidot ielūguma saiti |
discord_get_invites() |
Iegūt servera ielūguma saites |
Funkcijai discord_create_channel noklusējuma type ir:
| Vērtība | Kanāla veids |
|---|---|
0 |
Teksta kanāls |
2 |
Balss kanāls |
4 |
Kategorija |
Varat nodot kategorijas ID parent_id, lai izveidotu kanālu šajā kategorijā.
Funkcijai discord_set_channel_permission pēdējais arguments norāda, kurš saņem atļaujas:
| Vērtība | Mērķis |
|---|---|
1 |
Dalībnieks |
0 |
Loma |
Parametri allow un deny pieņem šādas vērtības:
| Vērtība | Atļauja |
|---|---|
1024 |
Skatīt kanālu |
2048 |
Sūtīt ziņojumus |
3072 |
Skatīt kanālu un sūtīt ziņojumus |
65536 |
Lasīt ziņojumu vēsturi |
Funkcijai discord_create_invite ielūguma derīguma termiņš ir norādīts sekundēs.
Piemēram:
86400
nozīmē 24 stundas.
Vērtība max_uses ar 0 nozīmē neierobežots lietojumu skaits.
Slīpsvītras komandas
| Funkcija | Apraksts |
|---|---|
discord_get_commands() |
Iegūt serverī reģistrētās komandas |
discord_set_commands(commands) |
Aizstāt visu komandu kopu |
discord_set_commands pieņem komandu sarakstu:
#{discord_set_commands('[
{
"name": "rules",
"description": "Rādīt servera noteikumus"
},
{
"name": "warn",
"description": "Izsniegt brīdinājumu",
"options": [
{
"type": 6,
"name": "user",
"description": "Lietotājs",
"required": true
},
{
"type": 3,
"name": "reason",
"description": "Iemesls",
"required": false
}
]
}
]')}
Discord prasības
-
namejāsatur tikai mazie burti, bez atstarpēm, un tā garumam jābūt no 1 līdz 32 rakstzīmēm. -
descriptionir obligāts un tā garumam jābūt no 1 līdz 100 rakstzīmēm. - Obligātās opcijas jāparādās pirms neobligātajām opcijām.
- Tukša saraksta nodošana noņem visas bota komandas no servera.
Opciju veidi
| Veids | Apraksts |
|---|---|
3 |
Virkne |
4 |
Vesels skaitlis |
5 |
Būla vērtība |
6 |
Dalībnieks |
7 |
Kanāls |
8 |
Loma |
Kad komanda tiek izsaukta, tā tiek nosūtīta piltuvei kā virkne, piemēram:
/warn @user spam
Citiem vārdiem sakot, komandas nosaukums un opciju vērtības ir atdalītas ar atstarpēm.
To var apstrādāt, izmantojot parastu teksta nosacījumu.
Atsevišķa funkcija pogām nav nepieciešama. Pogas tiek konfigurētas parastajā atbildes blokā, un pogas klikšķis tiek saņemts tāpat kā slīpsvītras komanda: pogas vērtība parādās tekstā.
Punkti un līderu saraksts
Discord integrācija ietver iebūvētu atzinības sistēmu. Punkti tiek piešķirti citētā ziņojuma autoram.
To var izmantot, lai izveidotu līmeņus, rindas un līderu sarakstus.
| Funkcija | Apraksts |
|---|---|
discord_add_thanks_score(value) |
Pievienot punktus citētā ziņojuma autoram |
discord_add_thanks_score_for_answer(value) |
Pievienot punktus dalībniekam, kurš atbildēja |
discord_minus_thanks_score(value) |
Noņemt punktus |
discord_get_score(user_id) |
Atgriezt dalībnieka punktus kā skaitli. Bez argumenta izmanto notikuma autoru |
discord_get_level(user_id, points_per_level) |
Iegūt dalībnieka līmeni. Noklusējuma slieksnis: 100 punkti uz līmeni |
discord_get_user_info(user_id) |
Iegūt punktus, līderu saraksta pozīciju un vārdu kā vienu objektu |
discord_get_top(count, shift, humanize, delimiter) |
Iegūt līderu sarakstu |
discord_get_top funkcijai:
-
count— atgriežamo rindu skaits; -
shift— izlaižamo rindu skaits, noderīgs lapošanai; -
humanize=true— atgriež gatavu attēlošanai tekstu; -
delimiter— atdalītājs starp dalībnieka vārdu un punktiem.
Salīdzinot punktus bloka nosacījumā, izmantojiet discord_get_score. Šī funkcija atgriež skaitli, tāpēc skaitliskie salīdzinājumi darbojas kā paredzēts.
Piemēri
Sagaidīt jaunu dalībnieku ar privātu ziņojumu
Bloka nosacījums:
member_join
Laukā Mainīgie:
discord_send_dm(
message_from,
'Sveiks, #{from_name}! Apskati piespraustos noteikumus.'
)
Dzēst ziņojumu, kas satur aizliegtu vārdu, un uzlikt dalībniekam pārtraukumu uz 24 stundām
Bloka nosacījums: aizliegto vārdu saraksts.
Papildu nosacījums:
is_admin != 1
Funkcijas:
discord_delete_message(discord_message_id)
discord_timeout_member(message_from, 86400)
Piešķirt lomu par reakciju uz konkrētu ziņojumu
Bloka nosacījums:
new_like 🍕
Papildu nosacījums:
contains(discord_message_id, '1534927170965602324')
Funkcija:
discord_add_role(
message_from,
'1465674567090704592'
)
Izveidot privātu biļešu kanālu no pogas
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,
'Apraksti savu problēmu vienā ziņojumā.'
)
Pirmā atļauju rinda slēpj kanālu no visiem (guild_id šeit apzīmē @everyone lomu).
Otrā rinda padara kanālu pieejamu dalībniekam, kurš izveidoja biļeti.
Piešķirt punktus par pateicību un piešķirt lomu, pamatojoties uz līmeni
Bloka nosacījums:
thanks;thx;thank you
Papildu nosacījums:
reply_from != '' and reply_from != message_from and reply_to_bot != 1
Funkcijas:
discord_add_thanks_score(1)
if (discord_get_level(reply_from) >= 1) {
discord_add_role(
reply_from,
'1465674567090704592'
)
}
Nosacījums:
reply_from != message_from
neļauj dalībniekiem piešķirt punktus sev.
Nosacījums:
reply_to_bot != 1
neļauj piešķirt punktus botam.
Parādīt savus punktus ar komandu
Bloka nosacījums:
/xp
Laukā Mainīgie:
points = discord_get_score()
lvl = discord_get_level()
Atbildes teksts:
#{from_name}, tev ir #{points} XP · Līmenis #{lvl}
Parādīt līderu sarakstu ar komandu
Bloka nosacījums:
/top
Atbildes teksts:
🏆 XP līderu saraksts:
#{discord_get_top(10, 0, true, ' — ')}