Hyvexالشروحات
الأوامر المخصصة

لغة الكود

شرح الكتابة بالكود من الصفر بنفس صيغة قوالب YAGPDB.

افتح لوحة التحكم

الأساس

النص العادي ينطبع كما هو، وأي شيء بين {{ }} كود.

أهلًا {{.User.Mention}}، أنت في {{.Guild.Name}}!
اكتب علامات الاقتباس العادية " وليس المنسقة “ ”. والمحرر ينبهك عليها.

المتغيرات

{{$count := 5}}         تعريف أول مرة
{{$count = add $count 1}} تغيير القيمة
{{$count}}               طباعتها

استدعاء الدوال

اسم الدالة ثم القيم بمسافات، بدون فواصل. والأقواس لدالة داخل دالة، و| يمرر النتيجة كآخر قيمة للدالة بعدها.

{{add 1 2}}                → 3
{{mult 2 (add 1 2)}}       → 6
{{.StrippedMsg | upper}}   → النص بأحرف كبيرة

الشروط

{{if eq .User.ID "123456789012345678"}}
  أهلًا يا مدير
{{else if hasRoleID "223456789012345678"}}
  أهلًا يا مميز
{{else}}
  أهلًا
{{end}}

المقارنة: eq يساوي، ne لا يساوي، lt أصغر، le أصغر أو يساوي، gt أكبر، ge أكبر أو يساوي. والربط: and وor وnot.

المعرفات تُحفظ كنصوص لأنها أكبر من أن تتسع في رقم عادي، فاكتبها بين علامتي اقتباس.

الحلقات

{{range $i, $word := .CmdArgs}}
  {{add $i 1}}. {{$word}}
{{else}}
  ما كتبت شيء
{{end}}

{{$n := 0}}
{{while lt $n 3}}{{$n = add $n 1}}{{end}}

و{{break}} يطلع من الحلقة، و{{continue}} ينتقل للتكرار التالي.

القوائم والقواميس

{{$list := cslice "أ" "ب"}}
{{$list = $list.Append "ج"}}
{{index $list 0}}

{{$d := sdict "name" "سعد" "age" 20}}
{{$d.Set "city" "جدة"}}
{{$d.name}}
{{if $d.HasKey "age"}}موجود{{end}}

مدخلات الأمر

.CmdArgs الكلمات بعد الأمر، و.StrippedMsg النص كاملًا. وparseArgs يتحقق من النوع، ويرد برسالة استخدام عند الخطأ.

{{$a := parseArgs 2 "" (carg "member" "العضو") (carg "int" "المبلغ" 1 100) (carg "string" "السبب")}}
{{($a.Get 0).Mention}} {{$a.Get 1}}
{{if $a.IsSet 2}}السبب: {{$a.Get 2}}{{end}}

الأنواع: string وint وfloat وduration وuser وuserid وmember وchannel وrole. والرقم الأول عدد المدخلات الإجبارية.

الرسائل والـEmbed

أي نص يطبعه الكود يصير رد الأمر. وللـEmbed استخدم respond، وهي ترد بالطريقة الصحيحة في الرسالة والسلاش والزر.

{{respond (cembed "title" "العنوان" "description" "الوصف" "color" 0x5d6cff "fields" (cslice (sdict "name" "حقل" "value" "قيمة" "inline" true)))}}

{{$id := sendMessageRetID "CHANNEL_ID" "رسالة في قناة ثانية"}}
{{addMessageReactions "CHANNEL_ID" $id "👍"}}

{{respond (ccontainer "color" 0x5d6cff "text" "## عنوان\nنص" "buttons" (cbutton "label" "الموقع" "url" "https://hyvexbot.xyz"))}}
المنشن مقفل افتراضيًا إلا منشن الأعضاء. وmentionEveryone وmentionRoleID يفتحونه. ولا تمرر نص الأعضاء في دوال NoEscape، لأنهم يقدرون يسوون @everyone.

الأخطاء

{{try}}
  {{addRoleID "123"}}
{{catch}}
  ما قدرت: {{.Error}}
{{end}}

المحرر يعرض أخطاء الكتابة برقم السطر قبل الحفظ. وأخطاء التشغيل تظهر في صفحة الأوامر والسجل وقناة الأخطاء، وفي نفس القناة إذا فعّلت إظهار الأخطاء.

القوالب وتشغيل الأوامر

{{define "hello"}}أهلًا {{.}}{{end}}
{{template "hello" "سعد"}}

{{define "double"}}{{return mult . 2}}{{end}}
{{execTemplate "double" 4}}

{{execCC 2 nil 0 (sdict "n" 7)}}             شغّل الأمر 2 الآن
{{scheduleUniqueCC 2 nil 3600 "key" "بيانات"}}  بعد ساعة

البيانات تصل في .ExecData. وتشغيل أمر من أمر بدون تأخير له عمق مرتين فقط، وأقصى تأخير 30 يوم.

المسافات والتعليقات

{{/* تعليق ما ينطبع */}}
{{- ... -}}  يشيل المسافات والأسطر حوله

الفرق عن YAGPDB

  • غير موجود: أوامر السلاش الفرعية، وexec، وطلبات الإنترنت، ودوال المنتديات، وcreateTicket، وgetWarnings، وcomponentBuilder.
  • إضافات: respond وccontainer وreplace وreverse وtimeoutMember وkickMember وbanMember وunbanMember.
  • parseTime أبسط، ويقرأ التواريخ المعتادة ويعتبرها UTC.