फ़ॉर्मूला

फ़ॉर्मूला GetMyBot की अंतर्निहित गणना भाषा है। इससे डिस्काउंट राशि की गणना, स्ट्रिंग असेम्बल, शर्त जाँचना, सूची या दिनांक रूपांतरित करना — सीधे संदेश टेक्स्ट में, «गणना» कार्य में और निर्णय तालिका की शर्तों में किया जा सकता है। सिंटैक्स स्प्रेडशीट फ़ॉर्मूला के करीब है और रूसी फ़ंक्शन नाम सपोर्ट करता है।

फ़ॉर्मूला कहाँ काम करते हैं

  • टेक्स्ट में{{= expression}} कंस्ट्रक्शन एक्सप्रेशन की गणना करता है और परिणाम सब्स्टिट्यूट करता है। उदाहरण के लिए, {{= ROUND(param.total * 0.9) }}
  • «गणना» कार्य (compute) — एक्सप्रेशन की गणना करता है और परिणाम ctx (फ़ील्ड «ctx में सहेजें») और/या सब्सक्राइबर पैरामीटर (फ़ील्ड «पैरामीटर में सहेजें») में सहेजता है।
  • निर्णय तालिका — «गणना» कार्य में एक एक्सप्रेशन के बजाय «जब → तब» नियमों की सूची सेट की जा सकती है: पहले नियम का मूल्य जिसकी शर्त सत्य है वापस किया जाता है, अन्यथा डिफ़ॉल्ट मूल्य।

सिंटैक्स

  • ऑपरेटर: अंकगणित + - * / %, तुलना == != < > <= >=, लॉजिक && || !, कोष्ठक ( )
  • लिटरल: संख्याएँ (42, 3.14), उद्धरण में स्ट्रिंग ("नमस्ते"), बूलियन (true, false)।
  • डेटा संदर्भ: एक्सप्रेशन में पैरामीटर और कॉन्टेक्स्ट मूल्यों का नाम से उल्लेख — param.total, ctx.items, recipient.email
  • फ़ंक्शन कॉल: NAME(argument1, argument2). नाम केस-इनसेंसिटिव हैं और रूसी उपनाम समझते हैं।

फ़ंक्शन

नाम कैनोनिकल (अंग्रेज़ी) रूप में दिए गए हैं। केस महत्वपूर्ण नहीं।

गणित

SUM, AVERAGE, MAX, MIN, MOD, POW, SQRT, PI, ROUND, CEIL, FLOOR, TRUNC, ABS, RANDBETWEEN.

टेक्स्ट

LEN, LEFT, RIGHT, MID, LOWER, UPPER, UPPERFIRST, REPEAT, CONCAT, SUBSTITUTE, FIND, SEARCH, FIELD, TRIM, LTRIM, RTRIM, PADLEFT, PADRIGHT, SPLIT, JOIN, STARTSWITH, ENDSWITH, CONTAINS, NL.

लॉजिक

IF, AND, OR, NOT, EMPTY, ISNUMBER, COALESCE.

सूचियाँ

SORT, RSORT, UNIQUE, FILTER, FOREACH, REDUCE, INDEX, SLICE, COUNTA, COUNTUNIQUE, ARRAYADD, ARRAYREMOVE, ARRAYREPLACE, ARRAYFIND.

दिनांक और समय

TODAY, NOW, DATEADD, DATESUB, DATEDIF, DATEFORMAT, DATEVALUE, WEEKDAY.

JSON

TOJSON, FROMJSON, JSONPATH, JP, JSONOBJECT, JSONARRAY, KEYS, VALUES.

क्रिप्टोग्राफ़ी और एन्कोडिंग

HASH, TOBASE64, FROMBASE64, FROMJWT, FROMJWK.

पैरामीटर

PARAMID, PARAMREPLACE, PARAMREMOVE.

उदाहरण

  • राशि पर 10% डिस्काउंट: {{= ROUND(param.total * 0.9) }}
  • शर्त: {{= IF(param.total > 1000, "थोक", "खुदरा") }}
  • स्ट्रिंग असेम्बल: {{= CONCAT("ऑर्डर №", ctx.order_id) }}
  • सूची का आकार: {{= COUNTA(ctx.items) }}

फ़ॉर्मूला परीक्षण

«गणना» कार्य के एडिटर में एक जाँच बटन है: आप एक्सप्रेशन और नमूना डेटा दर्ज करते हैं, और प्लेटफ़ॉर्म परिणाम देता है और सिंटैक्स त्रुटियों को हाइलाइट करता है — कंस्ट्रक्टर छोड़े बिना। रिएक्शन सहेजने से पहले लंबे फ़ॉर्मूला डीबग करने के लिए यह सुविधाजनक है।

आगे क्या