Synchronet v3.21e-Win32 (install) has been released (Mar-2026).

You can donate to the Synchronet project using PayPal.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
custom:atcodes [2026/01/09 17:34] – [Format Parameters] clean-up digital mancustom:atcodes [2026/02/22 22:21] (current) – [Format Parameters] add a space where a space should be nelgin
Line 53: Line 53:
  
 === Exceptions === === Exceptions ===
-@-codes that accept an parameter value, preceded by a colon ('':'') character, cannot be used with format modifiers when using the hyphen (-) modifier separator; use the pipe (|) modifier separator instead.+@-codes that accept parameter value, preceded by a colon ('':'') character, cannot be used with format modifiers when using the hyphen (-) modifier separator; use the pipe (|) modifier separator instead.
  
 ==== Format Parameters ==== ==== Format Parameters ====
Line 90: Line 90:
 === Formatted-Time Parameter === === Formatted-Time Parameter ===
  
-Some Time and Date related @-codes support a format parameter string that using [[strftime]] specifiers.+Some Time and Date related @-codes support a format parameter string that can include [[strftime]] specifiers.
  
-@-codes that support a Formatted-Time Parameter are specified with a ''//:t//'' suffix, or if it'optional, ''//[:t]//''.+For example, the code ''@DATE:%Y-%m-%d\x20%H:%M:%S@'' would produce output similar to: 
 +  2026-01-09 17:51:11 
 + 
 +@-codes that support a Formatted-Time Parameter are specified with a ''//:t//'' suffix, and when optional, ''//[:t]//''.
  
 ===== System Information ===== ===== System Information =====
Line 122: Line 125:
 |INETADDR                      |System's Internet Address (as configured in SCFG)| |INETADDR                      |System's Internet Address (as configured in SCFG)|
 |JS_VER                        |JavaScript Library Version | |JS_VER                        |JavaScript Library Version |
-|LASTCALLERNODE |PREVON, LASTCALLERSYSTEM |Name of user last user to use the terminal server |+|LASTCALL//[:t]// |              |Date/time of last logout of the terminal server | 
 +|LASTCALLERNODE |PREVON, LASTCALLERSYSTEM |Name of user last user to logout of the terminal server |
 |LOCAL-IP                      |System's IP address | |LOCAL-IP                      |System's IP address |
 |LOCATION                      |System location (e.g. "city, state") | |LOCATION                      |System location (e.g. "city, state") |
Line 322: Line 326:
 |FILE_GROUP      |Current file's author's group (e.g. from FILE_ID.DIZ SAUCE record) | |FILE_GROUP      |Current file's author's group (e.g. from FILE_ID.DIZ SAUCE record) |
 |FILE_SIZE       |Current file size estimate in KB, MB, GB, etc. | |FILE_SIZE       |Current file size estimate in KB, MB, GB, etc. |
-|FILE_BYTES[:b] |Current file size (in bytes) |+|FILE_BYTES//[:b]// |Current file size (in bytes) |
 |FILE_COST       |Current file credit value or "FREE" when applicable | |FILE_COST       |Current file credit value or "FREE" when applicable |
-|FILE_CREDITS[:b] |Current file credit value |+|FILE_CREDITS//[:b]// |Current file credit value |
 |FILE_TIME       |Current file modification time and date | |FILE_TIME       |Current file modification time and date |
 |FILE_TIME_ULED  |Current file upload time and date | |FILE_TIME_ULED  |Current file upload time and date |
 |FILE_TIME_DLED  |Current file last download time and date | |FILE_TIME_DLED  |Current file last download time and date |
-|FILE_TIME_TO_DL[:b] |Current file transfer time estimate ("HH:MM:SS") at current CPS |+|FILE_TIME_TO_DL//[:b]// |Current file transfer time estimate ("HH:MM:SS") at current CPS |
 |FILE_DATE       |Current file modification date | |FILE_DATE       |Current file modification date |
 |FILE_DATE_ULED  |Current file upload date | |FILE_DATE_ULED  |Current file upload date |
Line 345: Line 349:
 ^Code         ^Aliases         ^Description ^ ^Code         ^Aliases         ^Description ^
 |ADDR1        |                |User's street address | |ADDR1        |                |User's street address |
 +|ADDR2        |FROM            |User's location (e.g. city, state) |
 |AGE          |                |User's age (in years since birth date) | |AGE          |                |User's age (in years since birth date) |
 |ALERTS                      |Node activity alerts enabled status (e.g. "On" or "Off") | |ALERTS                      |Node activity alerts enabled status (e.g. "On" or "Off") |
Line 353: Line 358:
 |AUTOHANG                    |Automatically hang-up after file transfers (e.g. "On" or "Off") | |AUTOHANG                    |Automatically hang-up after file transfers (e.g. "On" or "Off") |
 |AUTOLOGON    |                |Automatically login via IP address (e.g. "On" or "Off") | |AUTOLOGON    |                |Automatically login via IP address (e.g. "On" or "Off") |
-|BDATE                       |User's birth date (in "MM/DD/YY" or "DD/MM/YY" format) | +|BDATE//[:t]// |               |User's birth date |
-|BDATE://t//  |BIRTH://t//     |User's birth date in the specified [[strftime]] format |+
 |BDATEFMT     |BIRTHFMT        |User birthdate input format (i.e. either "MM/DD/YYYY" or "DD/MM/YYYY") | |BDATEFMT     |BIRTHFMT        |User birthdate input format (i.e. either "MM/DD/YYYY" or "DD/MM/YYYY") |
 |BIRTH        |                |User's birth date (in "MM/DD/YYYY" or "DD/MM/YYYY" format) | |BIRTH        |                |User's birth date (in "MM/DD/YYYY" or "DD/MM/YYYY" format) |
-|BTODAY[:b]                  |Bytes downloaded (in files) today, in estimated KiB, MiB, etc. quantities (e.g. "1.2M") |+|BTODAY//[:b]//              |Bytes downloaded (in files) today, in estimated KiB, MiB, etc. quantities (e.g. "1.2M") |
 |BYTELIMIT    |                |User's free credits per day                     | |BYTELIMIT    |                |User's free credits per day                     |
 |BYTESLEFT    |                |User's total credits                            | |BYTESLEFT    |                |User's total credits                            |
 |CALLS        |NUMTIMESON      |Total number of logons for user | |CALLS        |NUMTIMESON      |Total number of logons for user |
-|CDTLEFT[:b]  |                |Estimated **total** credits (including free credits) that the user has currently | +|CDTLEFT//[:b]//                 |Estimated **total** credits (including free credits) that the user has currently | 
-|CDTPERD[:b]  |                |Estimated number of free credits awarded the user per day based on their security level | +|CDTPERD//[:b]//                 |Estimated number of free credits awarded the user per day based on their security level | 
-|CDTUSED[:b]  |                |Estimated number of free credits used by the user thus far today, see USEDCDT |+|CDTUSED//[:b]//                 |Estimated number of free credits used by the user thus far today, see USEDCDT |
 |CITY                        |User's city |                                      |CITY                        |User's city |                                     
-|CREDITS[:b]  |                |Total unspent credits the user has earned |+|CREDITS//[:b]//                 |Total unspent credits the user has earned |
 |DAYBYTES                    |Bytes downloaded (in files) today | |DAYBYTES                    |Bytes downloaded (in files) today |
-|DLB[:b]      |                |Total bytes (estimated KiB, MiB, etc.) downloaded by user |+|DLB//[:b]//  |                |Total bytes (estimated KiB, MiB, etc.) downloaded by user |
 |DLBYTES      |                |Total bytes downloaded by user | |DLBYTES      |                |Total bytes downloaded by user |
 |DLFILES      |DOWNS           |Total files downloaded by user | |DLFILES      |DOWNS           |Total files downloaded by user |
Line 377: Line 381:
 |EMAILS                      |Total number of emails sent by user | |EMAILS                      |Total number of emails sent by user |
 |ETODAY                      |Number of emails sent today by user | |ETODAY                      |Number of emails sent today by user |
-|EXPDATE      |EXDATE          |User's expiration date (in "MM/DD/YY" or "DD/MM/YY" format) | +|EXPDATE//[:t]// |EXDATE       |User's expiration date |
-|EXPDATE://t// |             |User's expiration date in specified [[strftime]] format |+
 |EXPDAYS      |                |Days left before user expires | |EXPDAYS      |                |Days left before user expires |
 |EXPERT                      |Expert menu mode enabled ('On' or 'Off')| |EXPERT                      |Expert menu mode enabled ('On' or 'Off')|
Line 385: Line 388:
 |FILEFLAG                    |Display file flagging prompt in file listings ('On' or 'Off')| |FILEFLAG                    |Display file flagging prompt in file listings ('On' or 'Off')|
 |FIRST        |                |First word of user's alias                     | |FIRST        |                |First word of user's alias                     |
-|FIRSTON                     |Date and time of user's first logon              | +|FIRSTON//[:t]// |             |Date and time of user's first logon              |
-|FIRSTON://t//             |Date and time of user's first logon in specified [[strftime]] format |+
 |FIRSTDATEON  |SINCE           |Date of user's first logon (in "MM/DD/YY" or "DD/MM/YY" format) | |FIRSTDATEON  |SINCE           |Date of user's first logon (in "MM/DD/YY" or "DD/MM/YY" format) |
 |FIRSTTIMEON  |                |Time of user's first logon (in "HH:MM am" or "HH:MM:SS" format) | |FIRSTTIMEON  |                |Time of user's first logon (in "HH:MM am" or "HH:MM:SS" format) |
 |FIRSTREAL    |REAL            |First word of user's real name                 | |FIRSTREAL    |REAL            |First word of user's real name                 |
-|FROM                        |User's location (e.g. "City, State"                | +|FROM         |ADDR2           |User's location (e.g. "City, State"                | 
-|FREECDT[:b]  |                |User's remaining freely-awarded (unearned) credits for today (see USEDCDT)        |+|FREECDT//[:b]//                 |User's remaining freely-awarded (unearned) credits for today (see USEDCDT)        |
 |FWD            |                |User's netmail forward status (e.g. "On" or "Off") (new in v3.18c)| |FWD            |                |User's netmail forward status (e.g. "On" or "Off") (new in v3.18c)|
 |GENDER         |SEX             |User's gender or sex as a single letter | |GENDER         |SEX             |User's gender or sex as a single letter |
 |HANDLE                        |User's chat handle                              | |HANDLE                        |User's chat handle                              |
-|HOTKEYS              |Hot-key user input mode enabled ('On' or 'Off')|+|HOTKEYS                       |Hot-key user input mode enabled ('On' or 'Off')|
 |HOST           |CPU             |Client's hostname | |HOST           |CPU             |Client's hostname |
 |IP             |CID             |Client's IP address or Caller-ID information     | |IP             |CID             |Client's IP address or Caller-ID information     |
Line 404: Line 406:
 |LASTDATEON                    |Date of user's last logon (in "MM/DD/YY" or "DD/MM/YY" format) | |LASTDATEON                    |Date of user's last logon (in "MM/DD/YY" or "DD/MM/YY" format) |
 |LASTIP                        |IP address of user's last logoff (new in v3.18c) | |LASTIP                        |IP address of user's last logoff (new in v3.18c) |
-|LASTNEW                       |Date of user's last new file scan (in "MM/DD/YY" or "DD/MM/YY" format)   |  +|LASTNEW//[:t]// |               |Date of user's last new file scan  |  
-|LASTNEW://t//                 |Date and time of user's last new file scan in specified [[strftime]] format +|LASTON//[:t]// |                |Date and time of user's last logon              |
-|LASTON         |                |Date and time of user's last logon              | +
-|LASTON://t//   |                |Date and time of user's last logon in specified [[strftime]] format |+
 |LASTREAL                      |Last word of user's real name                   | |LASTREAL                      |Last word of user's real name                   |
 |LASTTIMEON                    |Time of user's last logon (in "HH:MM am" or "HH:MM:SS" format) | |LASTTIMEON                    |Time of user's last logon (in "HH:MM am" or "HH:MM:SS" format) |
Line 424: Line 424:
 |MAXMAILS                    |Maximum number of sent emails per day allowed per user's security level | |MAXMAILS                    |Maximum number of sent emails per day allowed per user's security level |
 |MAXPOSTS                    |Maximum number of posted messages per day allowed per user's security level | |MAXPOSTS                    |Maximum number of posted messages per day allowed per user's security level |
-|MBANKED[:d]  |                |Minutes banked by user, see also TBANKED | +|MBANKED//[:d]//                 |Minutes banked by user, see also TBANKED | 
-|MEXTRA[:d]                  |Extra time earned today, in minutes, see also TEXTRA | +|MEXTRA//[:d]//   |                |Extra time earned today, in minutes, see also TEXTRA | 
-|MPERC[:d]    |TIMELIMIT       |Minutes allowed per call/logon, see also HPERC | +|MPERC//[:d]//    |TIMELIMIT       |Minutes allowed per call/logon, see also HPERC | 
-|MPERD[:d]    |                |Minutes allowed per day, see also HPERD |+|MPERD//[:d]//                   |Minutes allowed per day, see also HPERD |
 |MSGCLS                      |Clear screen before each message ('On' or 'Off')| |MSGCLS                      |Clear screen before each message ('On' or 'Off')|
 |MSGLEFT      |MSGSLEFT        |Total number of messages posted by user | |MSGLEFT      |MSGSLEFT        |Total number of messages posted by user |
Line 437: Line 437:
 |NODE_USER    |                |User's alias or "UNKNOWN USER" if the current node is in anonymous mode (new in v3.20)| |NODE_USER    |                |User's alias or "UNKNOWN USER" if the current node is in anonymous mode (new in v3.20)|
 |NOTE         |MEMO1           |User's note (new in v3.18c) | |NOTE         |MEMO1           |User's note (new in v3.18c) |
 +|ONOFF://ars//               |The text string for "On" or "Off" based on the comparison of the specified [[access:requirements|Access Requirements String]] (without spaces). |
 |PAGER        |                |Chat pager enabled status (e.g. "On" or "Off")| |PAGER        |                |Chat pager enabled status (e.g. "On" or "Off")|
 |PAUSESPIN    |                |Spinning cursor at pause prompts ('On' or 'Off')| |PAUSESPIN    |                |Spinning cursor at pause prompts ('On' or 'Off')|
 |PCR          |                |User's post/call ratio, as a percentage (not capped at 100) | |PCR          |                |User's post/call ratio, as a percentage (not capped at 100) |
 |PHONE        |HOMEPHONE, DATA, DATAPHONE |User's phone number | |PHONE        |HOMEPHONE, DATA, DATAPHONE |User's phone number |
-|PROT                        |Default file transfer protocol (key/character) | +|PROP:[//section//:]//key// |  |The value of a user property from the specified (or //root//) section of the ''[[dir:data]]/user/####.ini'' file | 
-|PROTNAME                    |Full name of default file transfer protocol |+|PROT                        |User's default file transfer protocol (key/character) | 
 +|PROTNAME     |PROTOCOL        |Full name of user'default file transfer protocol |
 |PTODAY                      |Number of messages posted by user today | |PTODAY                      |Number of messages posted by user today |
 |PWAGE        |                |Age (in days) of the current user's password | |PWAGE        |                |Age (in days) of the current user's password |
-|PWDATE       |MEMO            |Date of user's last password modification (in "MM/DD/YY" or "DD/MM/YY" format) | +|PWDATE//[:t]//  |MEMO         |Date of user's last password modification  |
-|PWDATE://t// |               |Date/time of user's last password modified in specified [[strftime]] format |+
 |QUIET        |                |Quiet logon mode enabled (e.g. "On" or "Off") | |QUIET        |                |Quiet logon mode enabled (e.g. "On" or "Off") |
 |REALNAME     |COMPANY, MEMO2  |User's real name | |REALNAME     |COMPANY, MEMO2  |User's real name |
Line 457: Line 458:
 |SPLITP                |Split-screen private chat enabled status (e.g. "On" or "Off")| |SPLITP                |Split-screen private chat enabled status (e.g. "On" or "Off")|
 |STATE        |          |User's state (from location)| |STATE        |          |User's state (from location)|
-|TBANKED[:d]  |          |Banked time in HH:MM format, see also MBANKED | +|TBANKED//[:d]//           |Banked time in HH:MM format, see also MBANKED | 
-|TEXTRA[:d]            |Extra time earned by user, in H:MM format |+|TEXTRA//[:d]//   |          |Extra time earned by user, in H:MM format |
 |TIMELEFT     |MINLEFT   |User's time left in minutes | |TIMELEFT     |MINLEFT   |User's time left in minutes |
-|TIMEON[:d]            |Time since user logged on |+|TIMEON//[:d]//   |          |Time since user logged on |
 |TIMEUSED              |Time used this call in minutes (see also TUSED) | |TIMEUSED              |Time used this call in minutes (see also TUSED) |
-|TLAST[:d]    |          |Time used by user during last logon | +|TLAST//[:d]//             |Time used by user during last logon | 
-|TLEFT[:d]    |          |Time left (in "H:MM:SS" format)| +|TLEFT//[:d]//             |Time left (in "H:MM:SS" format)|
 |TMP          |          |Temporary file type chosen by user (e.g. "ZIP") (new in v3.18c) | |TMP          |          |Temporary file type chosen by user (e.g. "ZIP") (new in v3.18c) |
-|TPERC[:d]    |          |Time allowed per call (in "H:MM:SS" format) | +|TPERC//[:d]//             |Time allowed per call (in "H:MM:SS" format) | 
-|TPERD[:d]    |          |Time allowed per day (in "H:MM:SS" format) |  +|TPERD//[:d]//             |Time allowed per day (in "H:MM:SS" format) |  
-|TTODAY[:d]            |Time used by user today (in "H:MM format) | +|TTODAY//[:d]//   |          |Time used by user today (in "H:MM format) | 
-|TTOTAL[:d]            |Total time used by user for all previous calls/logons (in "HH:MM" format) | +|TTOTAL//[:d]//   |          |Total time used by user for all previous calls/logons (in "HH:MM" format) | 
-|TUSED[:d]    |          |Time used this call (in "H:MM:SS" format) | +|TUSED//[:d]//             |Time used this call (in "H:MM:SS" format) |
 |UDR          |BYTERATIO |User's upload/download byte ratio, as a percentage (not capped at 100) | |UDR          |BYTERATIO |User's upload/download byte ratio, as a percentage (not capped at 100) |
 |UDFR                  |User's upload/download file ratio, as a percentage (not capped at 100) | |UDFR                  |User's upload/download file ratio, as a percentage (not capped at 100) |
 |UPAUSE                |Automatic screen-pausing ('Hit a key' prompting) ('On' or 'Off')| |UPAUSE                |Automatic screen-pausing ('Hit a key' prompting) ('On' or 'Off')|
-|UPB[:b]      |          |Total bytes (estimated KiB, MiB, etc.) uploaded by user |+|UPB//[:b]//               |Total bytes (estimated KiB, MiB, etc.) uploaded by user |
 |UPBYTES      |          |Total bytes uploaded by user | |UPBYTES      |          |Total bytes uploaded by user |
 |UPFILES      |UPS       |Total files uploaded by user |  |UPFILES      |UPS       |Total files uploaded by user |
Line 479: Line 480:
 |USEDCDT      |          |Number of free credits used today by user (see FREECDT and CDTUSED) | |USEDCDT      |          |Number of free credits used today by user (see FREECDT and CDTUSED) |
 |USERNUM      |UN        |User's number (1-based index into user database) | |USERNUM      |UN        |User's number (1-based index into user database) |
 +|YESNO://ars//         |The text string for "Yes" or "No" based on the comparison of the specified [[access:requirements|Access Requirements String]] (without spaces). |
 |ZIP          |          |User's zip/postal code                        |   |ZIP          |          |User's zip/postal code                        |  
  
Line 564: Line 566:
 |TRUNCOFF        |        |Mark the end of a truncated text block (turn off long-line truncation) | |TRUNCOFF        |        |Mark the end of a truncated text block (turn off long-line truncation) |
 |WORDWRAP        |        |Word-wrap long lines in the following text | |WORDWRAP        |        |Word-wrap long lines in the following text |
-|WRAPOFF                |Mark the end of a word-wrapped text block |+|WRAP            |        |Ungracefully-wrap long lines in the following text | 
 +|WRAPOFF                |Mark the end of a word-wrapped / ungracefully-wrapped text block |
 |CENTER          |        |Middle-align the remaining text on the line | |CENTER          |        |Middle-align the remaining text on the line |
 |SYSONLY                |Toggle off/on visibility for non-sysops | |SYSONLY                |Toggle off/on visibility for non-sysops |
Line 588: Line 591:
 |RAINBOW://index-num// |           | Enable rainbow mode output starting at the specified (zero-based) rainbow attribute index | |RAINBOW://index-num// |           | Enable rainbow mode output starting at the specified (zero-based) rainbow attribute index |
 |RAINBOW://attr-list// |           | Set the rainbow attribute pattern with colon-separated attributes, using ''[[config:attr.ini]]'' syntax (e.g. ''RAINBOW:R:RH:B:BH:G:GH:C:CH'') | |RAINBOW://attr-list// |           | Set the rainbow attribute pattern with colon-separated attributes, using ''[[config:attr.ini]]'' syntax (e.g. ''RAINBOW:R:RH:B:BH:G:GH:C:CH'') |
 +|80COLS                |           | Specify that the remainder of the message/file should be formatted (e.g. truncated, word-wrapped, centered) based on an 80 column maximum terminal width |
 ==== C-Text ==== ==== C-Text ====
  
Line 645: Line 649:
 |EXEC_XTRN://code//   |Execute an external online program (e.g. door) by specifying the internal code| |EXEC_XTRN://code//   |Execute an external online program (e.g. door) by specifying the internal code|
 |SETSTR://str//       |Sets the current Baja/PCMS command string to //str//| |SETSTR://str//       |Sets the current Baja/PCMS command string to //str//|
-|STR              |Display the current Baja/PCMS command string value |\+|STR                  |Display the current Baja/PCMS command string value (e.g. settable via ''bbs.command_str'' JavaScript property) |
 |STRVAR://name//      |Display the contents of a Baja/PCMS command shell string variable, specify //name// in ALL-CAPS unless ''baja -c'' was used((this feature only works for variables defined in command shells)) | |STRVAR://name//      |Display the contents of a Baja/PCMS command shell string variable, specify //name// in ALL-CAPS unless ''baja -c'' was used((this feature only works for variables defined in command shells)) |
-|JS://name//          |Display the value of a named JavaScript property |+|OPTEXT               |Display the value of the ''bbs.optext'' JavaScript property | 
 +|JS://name//          |Display the value of a named JavaScript property in the global namespace or the JavaScript scope object passed to the ''console.printfile()'' or ''bbs.menu()'' JavaScript methods |
 |TEXT://number//      |Display the specified string number from the ''[[dir:ctrl]]/[[custom:text.dat]]'' file.| |TEXT://number//      |Display the specified string number from the ''[[dir:ctrl]]/[[custom:text.dat]]'' file.|
 |Text-ID              |Any text string ID (e.g. from the ''[[dir:ctrl]]/[[custom:text.dat]]'' file) can be specified via an @-code | |Text-ID              |Any text string ID (e.g. from the ''[[dir:ctrl]]/[[custom:text.dat]]'' file) can be specified via an @-code |