This document provides a comprehensive reference of all BASIC keywords in General Bots, including existing implementations and planned additions.
| Keyword | Status | Category | Description |
TALK | β
Implemented | Dialog | Send message to user |
HEAR | β
Implemented | Dialog | Get input from user |
WAIT | β
Implemented | Dialog | Pause execution |
PRINT | β
Implemented | Debug | Debug output |
SET | β
Implemented | Variables | Set variable value |
GET | β
Implemented | Variables | Get variable or fetch data |
LET | β
Implemented | Variables | Assign variable (classic BASIC) |
SET BOT MEMORY | β
Implemented | Memory | Persist bot-level data |
GET BOT MEMORY | β
Implemented | Memory | Retrieve bot-level data |
REMEMBER | β
Implemented | Memory | Store user-specific memory |
LLM | β
Implemented | AI | Query language model |
SET CONTEXT | β
Implemented | AI | Add context for LLM |
SET USER | β
Implemented | Session | Set user context |
USE KB | β
Implemented | Knowledge | Load knowledge base |
THINK KB | β
Implemented | Knowledge | Explicit KB search with structured results |
CLEAR KB | β
Implemented | Knowledge | Unload knowledge base |
USE WEBSITE | β
Implemented | Knowledge | Associate website |
ADD TOOL | β
Implemented | Tools | Register tool |
USE TOOL | β
Implemented | Tools | Load tool definition |
CLEAR TOOLS | β
Implemented | Tools | Remove all tools |
ADD SUGGESTION | β
Implemented | UI | Add clickable button |
CLEAR SUGGESTIONS | β
Implemented | UI | Remove buttons |
SAVE | β
Implemented | Data | Save to table |
FIND | β
Implemented | Data | Search in files |
INSERT | β
Implemented | Data | Insert record |
UPDATE | β
Implemented | Data | Update records |
DELETE | β
Implemented | Data | Delete records |
FILTER | β
Implemented | Data | Filter records |
AGGREGATE | β
Implemented | Data | SUM, AVG, COUNT, etc. |
JOIN | β
Implemented | Data | Join datasets |
MERGE | β
Implemented | Data | Merge data |
MAP | β
Implemented | Data | Map field names |
FILL | β
Implemented | Data | Fill template |
PIVOT | β
Implemented | Data | Create pivot table |
GROUP BY | β
Implemented | Data | Group data |
FIRST | β
Implemented | Data | Get first element |
LAST | β
Implemented | Data | Get last element |
FORMAT | β
Implemented | Data | Format values |
SAVE FROM UNSTRUCTURED | β
Implemented | Data | Extract structured data |
POST | β
Implemented | HTTP | HTTP POST |
PUT | β
Implemented | HTTP | HTTP PUT |
PATCH | β
Implemented | HTTP | HTTP PATCH |
DELETE HTTP | β
Implemented | HTTP | HTTP DELETE |
SET HEADER | β
Implemented | HTTP | Set HTTP header |
CLEAR HEADERS | β
Implemented | HTTP | Clear headers |
GRAPHQL | β
Implemented | HTTP | GraphQL query |
SOAP | β
Implemented | HTTP | SOAP call |
READ | β
Implemented | Files | Read file |
WRITE | β
Implemented | Files | Write file |
DELETE FILE | β
Implemented | Files | Delete file |
COPY | β
Implemented | Files | Copy file |
MOVE | β
Implemented | Files | Move/rename file |
LIST | β
Implemented | Files | List directory |
UPLOAD | β
Implemented | Files | Upload file |
DOWNLOAD | β
Implemented | Files | Download file |
COMPRESS | β
Implemented | Files | Create ZIP |
EXTRACT | β
Implemented | Files | Extract ZIP |
GENERATE PDF | β
Implemented | Files | Generate PDF |
MERGE PDF | β
Implemented | Files | Merge PDFs |
IF...THEN...ELSE...END IF | β
Implemented | Control | Conditional |
FOR EACH...NEXT | β
Implemented | Control | Loop |
EXIT FOR | β
Implemented | Control | Exit loop |
WHILE...WEND | β
Implemented | Control | While loop |
DO...LOOP | β
Implemented | Control | Do loop |
SWITCH...CASE...END SWITCH | β
Implemented | Control | Switch |
SUB...END SUB | β
Implemented | Procedures | Define subroutine |
FUNCTION...END FUNCTION | β
Implemented | Procedures | Define function |
CALL | β
Implemented | Procedures | Call procedure |
RETURN | β
Implemented | Procedures | Return value |
ON | β
Implemented | Events | Event handler |
SET SCHEDULE | β
Implemented | Events | Schedule execution |
WEBHOOK | β
Implemented | Events | Create webhook |
SEND MAIL | β
Implemented | Communication | Send email |
CREATE DRAFT | β
Implemented | Communication | Create email draft |
ADD MEMBER | β
Implemented | Communication | Add to group |
CREATE TASK | β
Implemented | Tools | Create task |
CREATE SITE | β
Implemented | Tools | Generate website |
BOOK | β
Implemented | Special | Book appointment |
WEATHER | β
Implemented | Special | Get weather |
INSTR | β
Implemented | String | Find substring |
IS NUMERIC | β
Implemented | Validation | Check if numeric |
ON ERROR RESUME NEXT | β
Implemented | Errors | Enable error trapping |
ON ERROR GOTO 0 | β
Implemented | Errors | Disable error trapping |
ERROR | β
Implemented | Errors | Check if error occurred |
ERROR MESSAGE | β
Implemented | Errors | Get error message |
ERR | β
Implemented | Errors | Get error number |
CLEAR ERROR | β
Implemented | Errors | Clear error state |
THROW | β
Implemented | Errors | Raise custom error |
ASSERT | β
Implemented | Errors | Assert condition |
| Keyword | Syntax | Description | Priority |
LEN | length = LEN(string) | Get string length | βββ |
LEFT | result = LEFT(string, n) | Get left n characters | βββ |
RIGHT | result = RIGHT(string, n) | Get right n characters | βββ |
MID | result = MID(string, start, length) | Get substring | βββ |
TRIM | result = TRIM(string) | Remove whitespace | βββ |
LTRIM | result = LTRIM(string) | Remove left whitespace | ββ |
RTRIM | result = RTRIM(string) | Remove right whitespace | ββ |
UCASE | result = UCASE(string) | Convert to uppercase | βββ |
LCASE | result = LCASE(string) | Convert to lowercase | βββ |
REPLACE | result = REPLACE(string, old, new) | Replace substring | βββ |
SPLIT | array = SPLIT(string, delimiter) | Split string to array | βββ |
ASC | code = ASC(char) | Get ASCII code | ββ |
CHR | char = CHR(code) | Get character from code | ββ |
| Keyword | Syntax | Description | Priority |
ABS | result = ABS(number) | Absolute value | βββ |
ROUND | result = ROUND(number, decimals) | Round number | βββ |
INT | result = INT(number) | Integer part | βββ |
SQRT | result = SQRT(number) | Square root | ββ |
MAX | result = MAX(a, b) or MAX(array) | Maximum value | βββ |
MIN | result = MIN(a, b) or MIN(array) | Minimum value | βββ |
MOD | result = a MOD b | Modulo/remainder | βββ |
RND | result = RND() | Random 0-1 | ββ |
RANDOM | result = RANDOM(min, max) | Random in range | βββ |
CEILING | result = CEILING(number) | Round up | ββ |
FLOOR | result = FLOOR(number) | Round down | ββ |
SGN | result = SGN(number) | Sign (-1, 0, 1) | β |
| Keyword | Syntax | Description | Priority |
NOW | datetime = NOW() | Current date/time | βββ |
TODAY | date = TODAY() | Current date | βββ |
YEAR | year = YEAR(date) | Extract year | βββ |
MONTH | month = MONTH(date) | Extract month | βββ |
DAY | day = DAY(date) | Extract day | βββ |
HOUR | hour = HOUR(datetime) | Extract hour | ββ |
MINUTE | minute = MINUTE(datetime) | Extract minute | ββ |
SECOND | second = SECOND(datetime) | Extract second | ββ |
WEEKDAY | dow = WEEKDAY(date) | Day of week (1-7) | ββ |
DATEADD | date = DATEADD(date, n, "day") | Add to date | βββ |
DATEDIFF | days = DATEDIFF(date1, date2, "day") | Date difference | βββ |
DATEVALUE | date = DATEVALUE("2025-01-15") | Parse date string | ββ |
TIMEVALUE | time = TIMEVALUE("14:30:00") | Parse time string | ββ |
EOMONTH | date = EOMONTH(date, 0) | End of month | ββ |
| Keyword | Syntax | Description | Priority |
VAL | number = VAL(string) | String to number | βββ |
STR | string = STR(number) | Number to string | βββ |
CINT | integer = CINT(value) | Convert to integer | ββ |
CDBL | double = CDBL(value) | Convert to double | ββ |
CSTR | string = CSTR(value) | Convert to string | ββ |
CBOOL | boolean = CBOOL(value) | Convert to boolean | ββ |
CDATE | date = CDATE(value) | Convert to date | ββ |
| Keyword | Syntax | Description | Priority |
ISNULL | result = ISNULL(value) | Check if null | βββ |
ISEMPTY | result = ISEMPTY(value) | Check if empty | βββ |
ISDATE | result = ISDATE(value) | Check if valid date | ββ |
ISARRAY | result = ISARRAY(value) | Check if array | ββ |
| Keyword | Syntax | Description | Priority |
ARRAY | arr = ARRAY(1, 2, 3) | Create array | βββ |
UBOUND | size = UBOUND(array) | Get array size | βββ |
LBOUND | start = LBOUND(array) | Get array start | ββ |
REDIM | REDIM array(10) | Resize array | ββ |
SORT | sorted = SORT(array) | Sort array | βββ |
UNIQUE | distinct = UNIQUE(array) | Remove duplicates | βββ |
CONTAINS | result = CONTAINS(array, value) | Check membership | βββ |
PUSH | PUSH array, value | Add to end | ββ |
POP | value = POP(array) | Remove from end | ββ |
REVERSE | reversed = REVERSE(array) | Reverse array | β |
| Keyword | Syntax | Description | Status |
ON ERROR RESUME NEXT | ON ERROR RESUME NEXT | Enable error trapping | β
Implemented |
ON ERROR GOTO 0 | ON ERROR GOTO 0 | Disable error trapping | β
Implemented |
ERROR | IF ERROR THEN | Check if error occurred | β
Implemented |
ERROR MESSAGE | msg = ERROR MESSAGE | Get error message | β
Implemented |
ERR | code = ERR | Get error number | β
Implemented |
CLEAR ERROR | CLEAR ERROR | Clear error state | β
Implemented |
THROW | THROW "error message" | Raise custom error | β
Implemented |
ASSERT | ASSERT cond, "msg" | Assert condition | β
Implemented |
TRY...CATCH...END TRY | TRY ... CATCH e ... END TRY | Structured errors | π Planned |
| Keyword | Syntax | Description | Priority |
POST TO | POST TO "instagram" image, caption | Post to social | βββ |
GET METRICS | metrics = GET INSTAGRAM METRICS "id" | Get engagement | ββ |
SCHEDULE POST | SCHEDULE POST TO "instagram" AT datetime | Schedule post | ββ |
| Keyword | Syntax | Description | Priority |
CREATE LANDING PAGE | CREATE LANDING PAGE "name" | Build page | βββ |
ADD TO CAMPAIGN | ADD TO CAMPAIGN email, "name" | Add to sequence | βββ |
TRACK CONVERSION | TRACK CONVERSION "campaign", "event" | Track event | ββ |
GET CAMPAIGN STATS | stats = GET CAMPAIGN STATS "name" | Get analytics | ββ |
| Keyword | Syntax | Description | Priority |
AND | IF a AND b THEN | Logical AND | β
Implemented |
OR | IF a OR b THEN | Logical OR | β
Implemented |
NOT | IF NOT a THEN | Logical NOT | β
Implemented |
XOR | result = a XOR b | Exclusive OR | β |
IIF | result = IIF(condition, true, false) | Inline IF | ββ |
LIKE | IF name LIKE "John*" THEN | Pattern match | ββ |
IN | IF value IN (1, 2, 3) THEN | Set membership | ββ |
BETWEEN | IF value BETWEEN 1 AND 10 THEN | Range check | ββ |
' Basic conversation
TALK "Hello! How can I help you?"
HEAR response
' Typed input
HEAR name AS STRING
HEAR age AS INTEGER
HEAR email AS EMAIL
HEAR date AS DATE
HEAR amount AS MONEY
HEAR phone AS MOBILE
HEAR confirm AS BOOLEAN
' Menu selection
HEAR choice AS "Option 1", "Option 2", "Option 3"
' File upload
HEAR document AS FILE
HEAR audio AS AUDIO
HEAR image AS IMAGE
HEAR qrcode AS QRCODE
' Local variables
LET name = "John"
SET age = 25
' Bot-level memory (shared across sessions)
SET BOT MEMORY "config_key", "value"
value = GET BOT MEMORY("config_key")
' User-specific memory
REMEMBER "preference", "dark_mode"
' Query LLM
response = LLM "Summarize this text: " + text
' Set context for LLM
SET CONTEXT "assistant" AS "You are a helpful sales assistant."
' Load knowledge base
USE KB "product-docs"
USE KB "faq"
CLEAR KB "product-docs"
CLEAR KB
' Load website content
USE WEBSITE "https://example.com"
' Register tools
ADD TOOL "create-ticket"
ADD TOOL "send-email"
USE TOOL "search-database"
CLEAR TOOLS
' Create tasks
CREATE TASK "Review document", "Please review the attached file"
' Generate websites
CREATE SITE "promo" WITH TEMPLATE "landing" USING PROMPT "..."
' Create email drafts
CREATE DRAFT "user@example.com", "Subject", "Body"
' Save data (variable names = field names)
SAVE "customers.csv", name, email, phone, created
' Find data
customers = FIND "customers.csv"
active = FIND "customers.csv", "status=active"
' Filter data
highValue = FILTER customers, "amount>1000"
recent = FILTER customers, "created>=2025-01-01"
' Aggregate data
total = AGGREGATE "SUM", orders, "amount"
average = AGGREGATE "AVG", orders, "amount"
count = AGGREGATE "COUNT", orders, "id"
' Join datasets
joined = JOIN orders, customers, "customer_id"
' Group and pivot
byCategory = GROUP BY sales, "category"
pivoted = PIVOT sales, "month", "amount"
' Transform data
mapped = MAP data, "firstName->name, lastName->surname"
filled = FILL template, data
' CRUD operations
INSERT "table", data
UPDATE "table", "filter", data
DELETE "table", "filter"
MERGE "table", data, "key_field"
' Extract from text
SAVE FROM UNSTRUCTURED "contacts", unstructuredText
' GET request
data = GET "https://api.example.com/users"
' POST request
response = POST "https://api.example.com/users", userData
' PUT request
response = PUT "https://api.example.com/users/123", userData
' PATCH request
response = PATCH "https://api.example.com/users/123", partialData
' DELETE request
response = DELETE HTTP "https://api.example.com/users/123"
' Set headers
SET HEADER "Authorization", "Bearer " + token
SET HEADER "Content-Type", "application/json"
CLEAR HEADERS
' GraphQL
result = GRAPHQL "https://api.example.com/graphql", query, variables
' SOAP
result = SOAP "https://api.example.com/service.wsdl", "Operation", params
' Read/Write
content = READ "config.json"
WRITE "output.txt", content
' Copy/Move
COPY "source.txt", "backup/source.txt"
MOVE "temp.txt", "final/document.txt"
' Delete
DELETE FILE "temp/old-file.txt"
' List directory
files = LIST "documents/"
' Upload/Download
url = UPLOAD localFile, "uploads/document.pdf"
path = DOWNLOAD "https://example.com/file.pdf", "downloads/file.pdf"
' Archive
archive = COMPRESS files, "backup.zip"
extracted = EXTRACT "archive.zip", "extracted/"
' PDF operations
pdf = GENERATE PDF "template.html", data, "output.pdf"
merged = MERGE PDF pdfFiles, "combined.pdf"
' Conditional
IF age >= 18 THEN
TALK "You are an adult."
ELSE
TALK "You are a minor."
END IF
' Switch/Case
SWITCH category
CASE "A"
TALK "Category A"
CASE "B"
TALK "Category B"
CASE ELSE
TALK "Other category"
END SWITCH
' Loops
FOR EACH item IN items
TALK item.name
NEXT item
WHILE count < 10
count = count + 1
WEND
DO
result = processItem()
LOOP UNTIL result = "done"
' Exit loop
FOR EACH item IN items
IF item.skip THEN EXIT FOR
TALK item.name
NEXT item
' Define subroutine
SUB ProcessOrder(orderId)
order = FIND "orders.csv", "id=" + orderId
TALK "Processing order: " + order.id
END SUB
' Define function
FUNCTION CalculateTotal(items)
total = 0
FOR EACH item IN items
total = total + item.price * item.quantity
NEXT item
RETURN total
END FUNCTION
' Call procedures
CALL ProcessOrder("ORD-001")
total = CalculateTotal(cartItems)
' Event handlers
ON "new_message" CALL HandleMessage
' Scheduled jobs
SET SCHEDULE "0 8 * * *" ' Every day at 8 AM
' Webhooks
WEBHOOK "order-received"
' Endpoint: /api/{bot}/webhook/order-received
' Send email
SEND MAIL "user@example.com", "Subject", "Body"
' Send to specific number
SEND MAIL TO "5521999999999", "Subject", "Body"
' Add to group
ADD MEMBER "user@example.com", "sales-team"
' Add quick reply buttons
ADD SUGGESTION "help" AS "Get Help"
ADD SUGGESTION "menu" AS "Show Menu"
ADD SUGGESTION "cancel" AS "Cancel"
' Clear suggestions
CLEAR SUGGESTIONS
| Type | Example | Description |
STRING | HEAR name AS STRING | Any text input |
INTEGER | HEAR age AS INTEGER | Whole number |
NUMBER | HEAR price AS NUMBER | Decimal number |
BOOLEAN | HEAR confirm AS BOOLEAN | Yes/No, True/False |
DATE | HEAR birthday AS DATE | Date value |
EMAIL | HEAR contact AS EMAIL | Valid email address |
MOBILE | HEAR phone AS MOBILE | Phone number |
MONEY | HEAR amount AS MONEY | Currency amount |
HOUR | HEAR time AS HOUR | Time value |
ZIPCODE | HEAR zip AS ZIPCODE | Postal code |
LANGUAGE | HEAR lang AS LANGUAGE | Language code |
FILE | HEAR doc AS FILE | File upload |
AUDIO | HEAR recording AS AUDIO | Audio upload |
IMAGE | HEAR photo AS IMAGE | Image upload |
QRCODE | HEAR code AS QRCODE | QR code from image |
LOGIN | HEAR user AS LOGIN | Authenticated user |
| Menu | HEAR choice AS "A", "B", "C" | Selection from options |
| Pattern | Example | Result |
YYYY | FORMAT date AS "YYYY" | 2025 |
MM | FORMAT date AS "MM" | 01 |
DD | FORMAT date AS "DD" | 15 |
YYYY-MM-DD | FORMAT date AS "YYYY-MM-DD" | 2025-01-15 |
HH:mm:ss | FORMAT time AS "HH:mm:ss" | 14:30:00 |
#,##0 | FORMAT number AS "#,##0" | 1,234 |
#,##0.00 | FORMAT number AS "#,##0.00" | 1,234.56 |
0% | FORMAT decimal AS "0%" | 75% |
| Operation | Example | Description |
SUM | AGGREGATE "SUM", data, "amount" | Sum of values |
AVG | AGGREGATE "AVG", data, "amount" | Average |
COUNT | AGGREGATE "COUNT", data, "id" | Count records |
MIN | AGGREGATE "MIN", data, "price" | Minimum value |
MAX | AGGREGATE "MAX", data, "price" | Maximum value |
| Pattern | Description |
0 8 * * * | Every day at 8:00 AM |
0 9 * * 1 | Every Monday at 9:00 AM |
0 0 1 * * | First day of every month |
*/15 * * * * | Every 15 minutes |
0 8,17 * * * | At 8:00 AM and 5:00 PM |
0 8 * * 1-5 | Weekdays at 8:00 AM |
' Use descriptive variable names
let customername = "John Smith"
let orderamount = 150.00
' Use SAVE with variable names as field names
SAVE "orders.csv", customername, orderamount, orderdate
' Use spaces in keywords
SET BOT MEMORY "last_order", orderid
SET CONTEXT "assistant" AS "You are helpful."
ADD SUGGESTION "help" AS "Get Help"
CLEAR SUGGESTIONS
USE KB "products"
USE TOOL "search"
' Use HEAR AS for type validation
HEAR email AS EMAIL
HEAR amount AS MONEY
HEAR confirm AS BOOLEAN
' Don't use underscores in keywords (old syntax)
SET_BOT_MEMORY "key", value ' WRONG - use spaces
' Don't use complex object operations
SET object.field = value ' WRONG
SAVE "table", object.id, object ' WRONG
' Don't skip input validation
HEAR value ' OK but less safe
' Better: HEAR value AS STRING
| Old Syntax | New Syntax |
SET_BOT_MEMORY | SET BOT MEMORY |
GET_BOT_MEMORY() | GET BOT MEMORY() |
SET_CONTEXT | SET CONTEXT |
ADD_SUGGESTION | ADD SUGGESTION |
CLEAR_SUGGESTIONS | CLEAR SUGGESTIONS |
USE_KB | USE KB |
USE_TOOL | USE TOOL |
CLEAR_KB | CLEAR KB |
CLEAR_TOOLS | CLEAR TOOLS |
SET_SCHEDULE | SET SCHEDULE |
SET_HEADER | SET HEADER |
CLEAR_HEADERS | CLEAR HEADERS |
DELETE_HTTP | DELETE HTTP |
DELETE_FILE | DELETE FILE |
GENERATE_PDF | GENERATE PDF |
MERGE_PDF | MERGE PDF |
GROUP_BY | GROUP BY |
SAVE_FROM_UNSTRUCTURED | SAVE FROM UNSTRUCTURED |
Last updated: January 2025