{
"kind": "open-flow-workflow",
"version": 1,
"name": "WooCommerce Processing Orders to Telegram",
"content": {
"modelVersion": 14,
"document": {
"bindings": {},
"graph": {
"nodes": {
"n_c04ee8badb8a29ff": {
"name": "Order updated",
"kind": "integration",
"config": {
"events": {
"kind": "value",
"value": [
"order.updated"
]
},
"webhookName": {
"kind": "value",
"value": "Processing order Telegram notice"
}
},
"definition": {
"configInputs": [
{
"jsonSchema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"coupon.created",
"coupon.updated",
"coupon.deleted",
"coupon.restored",
"customer.created",
"customer.updated",
"customer.deleted",
"order.created",
"order.updated",
"order.deleted",
"order.restored",
"product.created",
"product.updated",
"product.deleted",
"product.restored",
"product.published"
]
},
"minItems": 1,
"maxItems": 16,
"uniqueItems": true
},
"nullable": false,
"handle": "events"
},
{
"jsonSchema": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"nullable": false,
"handle": "webhookName",
"value": "OOMOL Trigger"
}
],
"definitionVersion": 2,
"description": "Triggers when selected WooCommerce store events occur.",
"displayName": "Store Event",
"key": "woocommerce.on_store_event",
"name": "on_store_event",
"outputs": [
{
"jsonSchema": {
"type": "object"
},
"nullable": false,
"handle": "body"
},
{
"jsonSchema": {
"type": "string"
},
"nullable": false,
"handle": "deliveryId"
},
{
"jsonSchema": {
"type": "string"
},
"nullable": false,
"handle": "event"
},
{
"jsonSchema": {
"type": "string"
},
"nullable": false,
"handle": "resource"
},
{
"jsonSchema": {
"type": "string"
},
"nullable": false,
"handle": "source"
},
{
"jsonSchema": {
"type": "string"
},
"nullable": false,
"handle": "topic"
},
{
"jsonSchema": {
"type": "string"
},
"nullable": false,
"handle": "webhookId"
}
],
"provider": "woocommerce",
"type": "integration",
"endpoint": {
"body": {
"allowArray": false,
"allowEmpty": false,
"formats": [
"json"
]
},
"methods": [
"POST"
],
"successStatus": 202
}
}
},
"n_8478fb706f339e73": {
"inputs": {
"order": {
"kind": "sources",
"sources": [
{
"kind": "node",
"nodeId": "n_c04ee8badb8a29ff",
"output": "body"
}
]
}
},
"name": "Check order status",
"kind": "task",
"task": {
"inputs": [
{
"jsonSchema": {
"type": "object",
"additionalProperties": true
},
"nullable": false,
"handle": "order"
}
],
"outputs": [
{
"jsonSchema": {
"type": "boolean"
},
"nullable": false,
"handle": "processing"
}
],
"name": "Check order status",
"moduleId": "n_e4d158e9ed28f8ae",
"capabilities": [
{
"kind": "connector",
"mode": "independent",
"actions": []
}
]
}
},
"n_83c1f8a586f90284": {
"inputs": {},
"name": "Order is processing",
"kind": "condition",
"matchMode": "first",
"cases": [
{
"output": "yes",
"groups": [
{
"expressions": [
{
"left": {
"kind": "source",
"source": {
"kind": "node",
"nodeId": "n_8478fb706f339e73",
"output": "processing"
}
},
"operator": "isTrue"
}
]
}
]
}
]
},
"n_7a1d3e8127ff6b04": {
"inputs": {
"order": {
"kind": "sources",
"sources": [
{
"kind": "node",
"nodeId": "n_c04ee8badb8a29ff",
"output": "body"
}
]
}
},
"name": "Format the order notice",
"kind": "task",
"task": {
"inputs": [
{
"jsonSchema": {
"type": "object",
"additionalProperties": true
},
"nullable": false,
"handle": "order"
}
],
"outputs": [
{
"jsonSchema": {
"type": "string",
"maxLength": 4096,
"minLength": 1,
"description": "The text of the message to send."
},
"nullable": false,
"handle": "text"
}
],
"name": "Format the order notice",
"moduleId": "n_47f657d8c5221dbc",
"capabilities": [
{
"kind": "connector",
"mode": "independent",
"actions": []
}
]
}
},
"n_d21652976621f695": {
"inputs": {
"chatId": {
"kind": "value",
"value": "YOUR_TELEGRAM_CHAT_ID"
},
"text": {
"kind": "sources",
"sources": [
{
"kind": "node",
"nodeId": "n_7a1d3e8127ff6b04",
"output": "text"
}
]
},
"parseMode": {
"kind": "value",
"value": "HTML"
}
},
"name": "Send the Telegram notice",
"kind": "task",
"task": {
"inputs": [
{
"description": "The target Telegram chat ID or channel username.",
"jsonSchema": {
"anyOf": [
{
"type": "integer",
"description": "A numeric Telegram chat identifier."
},
{
"type": "string",
"pattern": "^-?[0-9]+$",
"description": "A numeric Telegram chat identifier encoded as a string."
},
{
"type": "string",
"pattern": "^@[A-Za-z0-9_]+$",
"description": "A Telegram @username that identifies a public chat or channel."
}
],
"description": "The target Telegram chat ID or channel username."
},
"nullable": false,
"handle": "chatId"
},
{
"description": "The text of the message to send.",
"jsonSchema": {
"type": "string",
"maxLength": 4096,
"minLength": 1,
"description": "The text of the message to send."
},
"nullable": false,
"handle": "text"
},
{
"description": "The unique identifier of the Telegram business connection.",
"jsonSchema": {
"type": "string",
"minLength": 1,
"description": "The unique identifier of the Telegram business connection."
},
"nullable": true,
"handle": "businessConnectionId",
"value": null
},
{
"description": "The parse mode used for message entities.",
"jsonSchema": {
"type": "string",
"enum": [
"Markdown",
"MarkdownV2",
"HTML"
],
"description": "The parse mode used for message entities."
},
"nullable": true,
"handle": "parseMode",
"value": null
},
{
"description": "Whether to send the message silently.",
"jsonSchema": {
"type": "boolean",
"description": "Whether to send the message silently."
},
"nullable": true,
"handle": "disableNotification",
"value": null
},
{
"description": "Whether to protect the sent message from forwarding and saving.",
"jsonSchema": {
"type": "boolean",
"description": "Whether to protect the sent message from forwarding and saving."
},
"nullable": true,
"handle": "protectContent",
"value": null
},
{
"description": "Whether to disable link previews in the message.",
"jsonSchema": {
"type": "boolean",
"description": "Whether to disable link previews in the message."
},
"nullable": true,
"handle": "disableWebPagePreview",
"value": null
},
{
"description": "The forum topic ID for the target message thread.",
"jsonSchema": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "The forum topic ID for the target message thread."
},
"nullable": true,
"handle": "messageThreadId",
"value": null
},
{
"description": "The message ID to reply to.",
"jsonSchema": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "The message ID to reply to."
},
"nullable": true,
"handle": "replyToMessageId",
"value": null
}
],
"outputs": [
{
"description": "A normalized Telegram message record.",
"jsonSchema": {
"type": "object",
"properties": {
"messageId": {
"type": "integer",
"description": "The unique message identifier inside the chat."
},
"date": {
"type": "integer",
"description": "The Unix timestamp when the message was sent."
},
"chat": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The unique identifier of the chat."
},
"type": {
"type": "string",
"description": "The chat type."
},
"title": {
"type": "string",
"description": "The chat title."
},
"username": {
"type": "string",
"description": "The public username of the chat."
},
"firstName": {
"type": "string",
"description": "The first name for a private chat counterpart."
},
"lastName": {
"type": "string",
"description": "The last name for a private chat counterpart."
}
},
"required": [
"id",
"type"
],
"additionalProperties": true,
"description": "A Telegram chat record."
},
"businessConnectionId": {
"type": "string",
"minLength": 1,
"description": "The unique identifier of the Telegram business connection."
},
"from": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The unique identifier of the user or bot."
},
"isBot": {
"type": "boolean",
"description": "Whether the account is a bot."
},
"firstName": {
"type": "string",
"description": "The first name of the user or bot."
},
"username": {
"type": "string",
"description": "The username of the user or bot."
}
},
"required": [
"id",
"isBot",
"firstName"
],
"additionalProperties": true,
"description": "A Telegram user record."
},
"senderChat": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The unique identifier of the chat."
},
"type": {
"type": "string",
"description": "The chat type."
},
"title": {
"type": "string",
"description": "The chat title."
},
"username": {
"type": "string",
"description": "The public username of the chat."
},
"firstName": {
"type": "string",
"description": "The first name for a private chat counterpart."
},
"lastName": {
"type": "string",
"description": "The last name for a private chat counterpart."
}
},
"required": [
"id",
"type"
],
"additionalProperties": true,
"description": "A Telegram chat record."
},
"text": {
"type": "string",
"description": "The message text, when present."
},
"caption": {
"type": "string",
"description": "The media caption, when present."
},
"photo": {
"type": "array",
"items": {
"type": "object",
"properties": {
"fileId": {
"type": "string",
"description": "The file identifier used to download or reuse the photo."
},
"fileUniqueId": {
"type": "string",
"description": "The stable unique identifier of the photo."
},
"width": {
"type": "integer",
"description": "The photo width in pixels."
},
"height": {
"type": "integer",
"description": "The photo height in pixels."
},
"fileSize": {
"type": "integer",
"description": "The photo file size in bytes."
}
},
"required": [
"fileId",
"fileUniqueId",
"width",
"height"
],
"additionalProperties": true,
"description": "A Telegram photo or thumbnail size."
},
"description": "The available sizes of the attached photo."
},
"document": {
"type": "object",
"properties": {
"fileId": {
"type": "string",
"description": "The file identifier used to download or reuse the document."
},
"fileUniqueId": {
"type": "string",
"description": "The stable unique identifier of the document."
},
"fileName": {
"type": "string",
"description": "The original document filename."
},
"mimeType": {
"type": "string",
"description": "The MIME type of the document."
},
"fileSize": {
"type": "integer",
"description": "The document file size in bytes."
}
},
"required": [
"fileId",
"fileUniqueId"
],
"additionalProperties": true,
"description": "A Telegram document file."
},
"location": {
"type": "object",
"properties": {
"latitude": {
"type": "number",
"description": "The latitude of the location."
},
"longitude": {
"type": "number",
"description": "The longitude of the location."
},
"horizontalAccuracy": {
"type": "number",
"description": "The radius of uncertainty in meters."
},
"livePeriod": {
"type": "integer",
"description": "The live location update period in seconds."
},
"heading": {
"type": "integer",
"description": "The direction of travel in degrees."
},
"proximityAlertRadius": {
"type": "integer",
"description": "The proximity alert radius in meters."
}
},
"required": [
"latitude",
"longitude"
],
"additionalProperties": true,
"description": "A Telegram geographic location."
},
"poll": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The unique poll identifier."
},
"question": {
"type": "string",
"description": "The poll question."
},
"options": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The poll option text."
},
"voterCount": {
"type": "integer",
"description": "The number of votes for the option."
}
},
"required": [
"text",
"voterCount"
],
"additionalProperties": true,
"description": "A Telegram poll option."
},
"description": "The available poll options."
},
"totalVoterCount": {
"type": "integer",
"description": "The total number of poll voters."
},
"isClosed": {
"type": "boolean",
"description": "Whether the poll is closed."
},
"isAnonymous": {
"type": "boolean",
"description": "Whether the poll is anonymous."
},
"type": {
"type": "string",
"enum": [
"regular",
"quiz"
],
"description": "The poll type."
},
"allowsMultipleAnswers": {
"type": "boolean",
"description": "Whether the poll allows multiple answers."
},
"closeDate": {
"type": "integer",
"description": "The Unix timestamp when the poll closes."
},
"openPeriod": {
"type": "integer",
"description": "The number of seconds the poll remains open."
},
"explanation": {
"type": "string",
"description": "The explanation shown for a quiz poll."
},
"correctOptionId": {
"type": "integer",
"description": "The zero-based identifier of the correct quiz option."
}
},
"required": [
"id",
"question",
"options",
"totalVoterCount",
"isClosed",
"isAnonymous",
"type",
"allowsMultipleAnswers"
],
"additionalProperties": true,
"description": "A Telegram poll."
},
"entities": {
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": true,
"description": "A Telegram MessageEntity object."
},
"description": "The entities parsed from the message text."
},
"captionEntities": {
"type": "array",
"items": {
"type": "object",
"properties": {},
"additionalProperties": true,
"description": "A Telegram MessageEntity object."
},
"description": "The entities parsed from the media caption."
},
"forwardDate": {
"type": "integer",
"description": "The Unix timestamp of the original forwarded message."
},
"forwardFrom": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The unique identifier of the user or bot."
},
"isBot": {
"type": "boolean",
"description": "Whether the account is a bot."
},
"firstName": {
"type": "string",
"description": "The first name of the user or bot."
},
"username": {
"type": "string",
"description": "The username of the user or bot."
}
},
"required": [
"id",
"isBot",
"firstName"
],
"additionalProperties": true,
"description": "A Telegram user record."
},
"forwardFromChat": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The unique identifier of the chat."
},
"type": {
"type": "string",
"description": "The chat type."
},
"title": {
"type": "string",
"description": "The chat title."
},
"username": {
"type": "string",
"description": "The public username of the chat."
},
"firstName": {
"type": "string",
"description": "The first name for a private chat counterpart."
},
"lastName": {
"type": "string",
"description": "The last name for a private chat counterpart."
}
},
"required": [
"id",
"type"
],
"additionalProperties": true,
"description": "A Telegram chat record."
},
"forwardFromMessageId": {
"type": "integer",
"description": "The original message identifier inside the source chat."
},
"forwardSignature": {
"type": "string",
"description": "The original author signature for a forwarded channel post."
},
"forwardSenderName": {
"type": "string",
"description": "The display name of a forwarded sender who disallows linking."
},
"linkPreviewOptions": {
"type": "object",
"properties": {},
"additionalProperties": true,
"description": "The link preview options attached to the message."
},
"video": {
"type": "object",
"properties": {
"fileId": {
"type": "string",
"description": "The file identifier used to download or reuse the video."
},
"fileUniqueId": {
"type": "string",
"description": "The stable unique identifier of the video."
},
"width": {
"type": "integer",
"description": "The video width in pixels."
},
"height": {
"type": "integer",
"description": "The video height in pixels."
},
"duration": {
"type": "integer",
"description": "The video duration in seconds."
},
"thumbnail": {
"type": "object",
"properties": {
"fileId": {
"type": "string",
"description": "The file identifier used to download or reuse the photo."
},
"fileUniqueId": {
"type": "string",
"description": "The stable unique identifier of the photo."
},
"width": {
"type": "integer",
"description": "The photo width in pixels."
},
"height": {
"type": "integer",
"description": "The photo height in pixels."
},
"fileSize": {
"type": "integer",
"description": "The photo file size in bytes."
}
},
"required": [
"fileId",
"fileUniqueId",
"width",
"height"
],
"additionalProperties": true,
"description": "A Telegram photo or thumbnail size."
},
"cover": {
"type": "array",
"items": {
"type": "object",
"properties": {
"fileId": {
"type": "string",
"description": "The file identifier used to download or reuse the photo."
},
"fileUniqueId": {
"type": "string",
"description": "The stable unique identifier of the photo."
},
"width": {
"type": "integer",
"description": "The photo width in pixels."
},
"height": {
"type": "integer",
"description": "The photo height in pixels."
},
"fileSize": {
"type": "integer",
"description": "The photo file size in bytes."
}
},
"required": [
"fileId",
"fileUniqueId",
"width",
"height"
],
"additionalProperties": true,
"description": "A Telegram photo or thumbnail size."
},
"description": "The available sizes of the video cover."
},
"startTimestamp": {
"type": "integer",
"description": "The start timestamp for the video in the message."
},
"qualities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"fileId": {
"type": "string",
"description": "The file identifier used to download or reuse this video quality."
},
"fileUniqueId": {
"type": "string",
"description": "The stable unique identifier of this video quality."
},
"width": {
"type": "integer",
"description": "The video width in pixels."
},
"height": {
"type": "integer",
"description": "The video height in pixels."
},
"codec": {
"type": "string",
"description": "The codec used to encode the video."
},
"fileSize": {
"type": "integer",
"description": "The video quality file size in bytes."
}
},
"required": [
"fileId",
"fileUniqueId",
"width",
"height",
"codec"
],
"additionalProperties": true,
"description": "A Telegram video file at one available quality."
},
"description": "The available encoded video qualities."
},
"fileName": {
"type": "string",
"description": "The original video filename."
},
"mimeType": {
"type": "string",
"description": "The MIME type of the video."
},
"fileSize": {
"type": "integer",
"description": "The video file size in bytes."
}
},
"required": [
"fileId",
"fileUniqueId",
"width",
"height",
"duration"
],
"additionalProperties": true,
"description": "A Telegram video file."
},
"audio": {
"type": "object",
"properties": {
"fileId": {
"type": "string",
"description": "The file identifier used to download or reuse the audio."
},
"fileUniqueId": {
"type": "string",
"description": "The stable unique identifier of the audio."
},
"duration": {
"type": "integer",
"description": "The audio duration in seconds."
},
"performer": {
"type": "string",
"description": "The performer of the audio."
},
"title": {
"type": "string",
"description": "The audio track title."
},
"fileName": {
"type": "string",
"description": "The original audio filename."
},
"mimeType": {
"type": "string",
"description": "The MIME type of the audio."
},
"fileSize": {
"type": "integer",
"description": "The audio file size in bytes."
},
"thumbnail": {
"type": "object",
"properties": {
"fileId": {
"type": "string",
"description": "The file identifier used to download or reuse the photo."
},
"fileUniqueId": {
"type": "string",
"description": "The stable unique identifier of the photo."
},
"width": {
"type": "integer",
"description": "The photo width in pixels."
},
"height": {
"type": "integer",
"description": "The photo height in pixels."
},
"fileSize": {
"type": "integer",
"description": "The photo file size in bytes."
}
},
"required": [
"fileId",
"fileUniqueId",
"width",
"height"
],
"additionalProperties": true,
"description": "A Telegram photo or thumbnail size."
}
},
"required": [
"fileId",
"fileUniqueId",
"duration"
],
"additionalProperties": true,
"description": "A Telegram audio file."
},
"voice": {
"type": "object",
"properties": {
"fileId": {
"type": "string",
"description": "The file identifier used to download or reuse the voice message."
},
"fileUniqueId": {
"type": "string",
"description": "The stable unique identifier of the voice message."
},
"duration": {
"type": "integer",
"description": "The voice message duration in seconds."
},
"mimeType": {
"type": "string",
"description": "The MIME type of the voice message."
},
"fileSize": {
"type": "integer",
"description": "The voice message file size in bytes."
}
},
"required": [
"fileId",
"fileUniqueId",
"duration"
],
"additionalProperties": true,
"description": "A Telegram voice message file."
},
"animation": {
"type": "object",
"properties": {
"fileId": {
"type": "string",
"description": "The file identifier used to download or reuse the animation."
},
"fileUniqueId": {
"type": "string",
"description": "The stable unique identifier of the animation."
},
"width": {
"type": "integer",
"description": "The animation width in pixels."
},
"height": {
"type": "integer",
"description": "The animation height in pixels."
},
"duration": {
"type": "integer",
"description": "The animation duration in seconds."
},
"thumbnail": {
"type": "object",
"properties": {
"fileId": {
"type": "string",
"description": "The file identifier used to download or reuse the photo."
},
"fileUniqueId": {
"type": "string",
"description": "The stable unique identifier of the photo."
},
"width": {
"type": "integer",
"description": "The photo width in pixels."
},
"height": {
"type": "integer",
"description": "The photo height in pixels."
},
"fileSize": {
"type": "integer",
"description": "The photo file size in bytes."
}
},
"required": [
"fileId",
"fileUniqueId",
"width",
"height"
],
"additionalProperties": true,
"description": "A Telegram photo or thumbnail size."
},
"fileName": {
"type": "string",
"description": "The original animation filename."
},
"mimeType": {
"type": "string",
"description": "The MIME type of the animation."
},
"fileSize": {
"type": "integer",
"description": "The animation file size in bytes."
}
},
"required": [
"fileId",
"fileUniqueId",
"width",
"height",
"duration"
],
"additionalProperties": true,
"description": "A Telegram animation file."
},
"contact": {
"type": "object",
"properties": {
"phoneNumber": {
"type": "string",
"description": "The contact phone number."
},
"firstName": {
"type": "string",
"description": "The contact first name."
},
"lastName": {
"type": "string",
"description": "The contact last name."
},
"userId": {
"type": "integer",
"description": "The Telegram user identifier associated with the contact."
},
"vcard": {
"type": "string",
"description": "Additional contact data in vCard format."
}
},
"required": [
"phoneNumber",
"firstName"
],
"additionalProperties": true,
"description": "A Telegram contact."
},
"venue": {
"type": "object",
"properties": {
"location": {
"type": "object",
"properties": {
"latitude": {
"type": "number",
"description": "The latitude of the location."
},
"longitude": {
"type": "number",
"description": "The longitude of the location."
},
"horizontalAccuracy": {
"type": "number",
"description": "The radius of uncertainty in meters."
},
"livePeriod": {
"type": "integer",
"description": "The live location update period in seconds."
},
"heading": {
"type": "integer",
"description": "The direction of travel in degrees."
},
"proximityAlertRadius": {
"type": "integer",
"description": "The proximity alert radius in meters."
}
},
"required": [
"latitude",
"longitude"
],
"additionalProperties": true,
"description": "A Telegram geographic location."
},
"title": {
"type": "string",
"description": "The venue name."
},
"address": {
"type": "string",
"description": "The venue address."
},
"foursquareId": {
"type": "string",
"description": "The Foursquare place identifier."
},
"foursquareType": {
"type": "string",
"description": "The Foursquare place type."
},
"googlePlaceId": {
"type": "string",
"description": "The Google Places identifier."
},
"googlePlaceType": {
"type": "string",
"description": "The Google Places type."
}
},
"required": [
"location",
"title",
"address"
],
"additionalProperties": true,
"description": "A Telegram venue."
},
"dice": {
"type": "object",
"properties": {
"emoji": {
"type": "string",
"description": "The emoji used for the animation."
},
"value": {
"type": "integer",
"description": "The generated dice value."
}
},
"required": [
"emoji",
"value"
],
"additionalProperties": true,
"description": "A Telegram animated dice result."
}
},
"required": [
"messageId",
"date",
"chat"
],
"additionalProperties": true,
"description": "A normalized Telegram message record."
},
"nullable": false,
"handle": "output"
}
],
"name": "Send the Telegram notice",
"executor": {
"kind": "connector",
"action": "telegram.send_message",
"outputMode": "value"
}
}
}
},
"edges": [
{
"source": "n_c04ee8badb8a29ff",
"target": "n_8478fb706f339e73"
},
{
"source": "n_8478fb706f339e73",
"target": "n_83c1f8a586f90284"
},
{
"source": "n_83c1f8a586f90284",
"target": "n_7a1d3e8127ff6b04",
"sourceHandle": "yes"
},
{
"source": "n_7a1d3e8127ff6b04",
"target": "n_d21652976621f695"
}
]
}
},
"modules": {
"n_e4d158e9ed28f8ae": {
"name": "Check order status",
"imports": [],
"source": "export default function status({order}) {if(!order||typeof order!=='object'||Array.isArray(order)||typeof order.status!=='string')throw Error('Invalid order status');return {processing:order.status==='processing'};}\n"
},
"n_47f657d8c5221dbc": {
"name": "Format the order notice",
"imports": [],
"source": "export default function format({order}) {\n const str=(v,name)=>{if(typeof v!=='string')throw Error('Missing '+name);return v},escape=s=>s.replace(/&/g,'&').replace(//g,'>');\n if(!order||typeof order!=='object'||Array.isArray(order)||!Number.isSafeInteger(order.id)||order.id<=0)throw Error('Invalid order ID');\n const total=str(order.total,'total'),currency=str(order.currency,'currency');if(!/^-?\\d+(?:\\.\\d+)?$/.test(total)||!/^[A-Z]{3}$/.test(currency))throw Error('Invalid total or currency');\n const raw=str(order.date_created_gmt,'creation date'),match=/^(\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d)Z?$/.exec(raw);if(!match)throw Error('Invalid GMT creation date');const dt=new Date(match[1]+'Z');if(!Number.isFinite(dt.getTime())||dt.toISOString().slice(0,19)!==match[1])throw Error('Invalid GMT creation date');\n if(!order.billing||typeof order.billing!=='object'||Array.isArray(order.billing)||!Array.isArray(order.line_items))throw Error('Missing billing or line items');const b=order.billing,name=str(b.first_name,'first name')+' '+str(b.last_name,'last name'),city=str(b.city,'city'),phone=str(b.phone,'phone'),note=str(order.customer_note,'customer note');\n const products=order.line_items.map(item=>{if(!item||typeof item.name!=='string'||!Number.isSafeInteger(item.quantity)||item.quantity<0)throw Error('Invalid line item');return 'š¹ '+escape(item.name)+' ('+item.quantity+' items)';}).join('\\n');\n const text='š Order ID: '+order.id+'\\n\\nš¦š» Customer Name: '+escape(name)+'\\n\\nšµ Amount: '+escape(total)+' '+escape(currency)+'\\n\\nš
Order Date:\\nā '+match[1].replace('T',' ')+' UTC\\n\\nš City: '+escape(city)+'\\n\\nš Phone: '+escape(phone)+'\\n\\nāš» Order Note:\\n'+escape(note||'No notes')+'\\n\\nš¦ Ordered Products:\\n\\n'+products;\n if(text.length>4096)throw Error('Order notice exceeds the Telegram message limit');return {text};\n}\n"
}
}
},
"presentation": {
"designer": {
"version": 1,
"flow": {
"direction": "vertical"
}
}
}
}