Gli identificatori ($qualcosa) vengono sostituiti col loro valore prima che una riga di script (o
un comando digitato con //) venga eseguita.
Argomenti
Identificatore
Valore
$1 ... $9
Gli argomenti passati al comando/alias.
$0
Quanti argomenti sono stati passati.
$N-
Da N in poi, es. $2-.
$N-M
Un intervallo, es. $2-4.
%variabile
Il valore di una variabile impostata con set (vedi Scripting).
Contesto (chi/dove/cosa)
Identificatore
Valore
$nick
Chi ha scritto/cliccato (o, nei popup nicklist, il nick su cui hai fatto click destro).
$chan
Il nome del canale/gruppo per gli eventi di canale, vuoto per chat private/Status.
$network
La rete della finestra corrente: telegram, whatsapp, oppure - per una finestra IRC - un identificativo che comincia per irc: e distingue ogni server connesso (uno per ciascuno, dato che IRC è multi-server, vedi IRC) - usa iswm per riconoscerlo in generale: if ($network iswm irc:*).
$me
Il tuo nome.
$event
Il nome dell'evento in corso - utile se più "on" condividono lo stesso alias/codice.
Media (aggiunta nostra - IRC non ha allegati)
Identificatore
Valore
$mediatype
Dentro "on message": photo/video/audio/document/sticker se il messaggio ha un allegato, vuoto se è solo testo.
$filename
Nome file per i documenti, vuoto altrimenti.
Notifiche (aggiunta nostra)
Identificatore
Valore
$noticetype
Dentro "on notice": distingue il tipo di notifica sintetica. Vedi Notifiche ed eventi di sistema per l'elenco completo dei valori.
Percorsi (come nel vero mIRC)
Identificatore
Equivalente mIRC
Valore
$yoakedir
$mircdir
La cartella dati dell'applicazione.
$yoakeexe
$mircexe
Il percorso dell'eseguibile.
$yoakeini
$mircini
Il percorso completo di Yoake.ini.
$scriptdir
$scriptdir
La cartella degli script (userData/scripts/).
$script
$script
Percorso completo del file .ini da cui viene l'alias/evento/popup in esecuzione (aliases.ini/remote.ini/popups.ini).
$logdir
$logdir
La cartella log (userData/logs/) - ci scrive dentro l'opzione "Salva le conversazioni su file" (Impostazioni, disattivata di default): un file .log per finestra, chiamato come il suo nome (es. Mario.log), dentro una sottocartella telegram/ o whatsapp/ a seconda della rete.
Costanti (identificatori nudi, come nel vero mIRC)
Identificatore
Valore
$true / $false
1 / 0 - usabili in confronti, es. if ($isnum(%x) == $true).
$null
Sempre vuoto.
$cr / $lf / $crlf
Ritorno a capo (carriage return / line feed / entrambi insieme).
$date
Data corrente.
$time
Ora corrente.
$ctime / $gmt
Secondi trascorsi dal 1° gennaio 1970 (epoch) - solo la forma senza parametri: $ctime(testo) per convertire una data scritta a mano non è supportato.
$fulldate
Data e ora completa in un'unica stringa.
$feof
1/0 a seconda che l'ultima $fread()/$fgetc() eseguita in QUALSIASI script abbia raggiunto la fine del file (come nel vero mIRC, non è per singolo handle).
$ferr
1/0 a seconda che l'ultima operazione su file (fopen/fwrite/$fread/$fgetc) eseguita in QUALSIASI script sia fallita.
$sockname
Dentro on sockopen/on sockread/on sockclose: il nome del socket che ha generato l'evento. Vuoto altrove.
$sockerr
Il messaggio dell'ultimo errore di rete (connessione fallita, chiusa dall'altra parte, ecc.), vuoto se nessun errore.
$sockbr
Byte letti dall'ultimo sockread - 0 quando non c'è più niente da leggere nel buffer (segnale per uscire dal ciclo di lettura).
$runoutput
Nostra aggiunta (vedi /run in Comandi): l'output (stdout) dell'ultimo /run terminato, testo intero con gli a capo originali intatti.
$runerror
Nostra aggiunta: l'eventuale output di errore (stderr) dell'ultimo /run terminato.
$runcode
Nostra aggiunta: il codice di uscita dell'ultimo /run terminato (0 = di norma nessun errore).
Manipolazione token
Un "token" è un pezzo di testo separato da un carattere scelto da te (di solito uno spazio) - queste
funzioni dividono/ricompongono liste di questo tipo. Come nel vero mIRC, il separatore C è
sempre un codice ASCII (es. 32=spazio, 46=punto), non il carattere stesso -
assente, vale spazio.
Funzione
Cosa fa
$gettok(testo,N,C)
L'N-esimo token, o un intervallo "N-M" (anche negativi, contano dalla fine; "N-" = da N in poi).
$numtok(testo,C)
Quanti token ci sono.
$findtok(testo,token,N,C)
Posizione dell'N-esima occorrenza (case-insensitive). N=0 = quante volte occorre.
$istok(testo,token,C)
1/0 a seconda che il token esista (case-insensitive).
$matchtok(testo,sottostringa,N,C)
N-esimo token che CONTIENE sottostringa (case-insensitive). N=0 = quanti la contengono.
$wildtok(testo,wildcard,N,C)
N-esimo token che soddisfa un pattern con */? (case-insensitive). N=0 = quanti la soddisfano.
$addtok(testo,token,C)
Aggiunge in fondo, solo se non già presente (confronto case-insensitive).
$instok(testo,token,N,C)
Inserisce alla posizione N, anche se già presente altrove.
$puttok(testo,token,N,C)
Sovrascrive l'N-esimo token.
$deltok(testo,N,C)
Elimina l'N-esimo token (o l'intervallo "N-M").
$remtok(testo,token,N,C)
Rimuove l'N-esima occorrenza di token (case-insensitive, N=0 = tutte).
$reptok(testo,token,nuovo,N,C)
Sostituisce l'N-esima occorrenza di token con "nuovo" (case-insensitive, N=0 = tutte).
$sorttok(testo,C,ncra)
Ordina i token: default alfabetico case-insensitive, n=numerico, r=inverso.
Le funzioni che confrontano il CONTENUTO di un token (non solo la posizione) hanno anche una variante
...cs (case-sensitive), stessi parametri: $addtokcs, $findtokcs,
$istokcs, $matchtokcs, $remtokcs, $reptokcs,
$sorttokcs, $wildtokcs. $gettok/$deltok/$instok/
$numtok/$puttok non hanno una variante cs perché lavorano solo per posizione, il
maiuscolo/minuscolo non li riguarda.
$gettok(a.b.c.d.e,3,46) ; c
$gettok(a.b.c.d.e,2-,46) ; b.c.d.e
$addtok(a.b.c,d,46) ; a.b.c.d
$deltok(a.b.c.d,2-3,46) ; a.d
$istok(a.B.c,b,46) ; 1 (case-insensitive: B conta come b)
$istokcs(a.B.c,b,46) ; 0 (case-sensitive: B non è b)
$gettok esisteva già ma con un separatore a stringa letterale invece che a
codice ASCII - se avevi script che lo usavano, vanno aggiornati al nuovo formato (es. $gettok(%x,2,44)
invece di $gettok(%x,2,",")).
Data/ora con parametri, matematica, validazione
Funzione
Cosa fa
$duration(secondi,N)
Formato leggibile "1w 2d 3h 4m 5s". N=2 senza i secondi, N=3 formato hh:nn:ss.
$iif(condizione,T,F)
Il ternario: se condizione è vera restituisce T (o "1" se assente), altrimenti F (o vuoto se assente).
$str(testo,N)
Ripete testo N volte.
$strip(testo)
Rimuove i codici di formattazione (grassetto/sottolineato/colore/ecc.) - vedi la sezione "Codici di controllo" per come inserirli.
$isnum(testo)
1/0 a seconda che sia un numero.
$isupper(testo) / $islower(testo)
1/0 a seconda che sia tutto maiuscolo/minuscolo.
$eval(testo,N)
Rivaluta testo (identificatori/%variabili) N volte in più (default 1) - utile per riferimenti indiretti.
$abs(N)
Valore assoluto.
$round(N,D)
Arrotonda N a D cifre decimali (default 0).
$floor(N) / $ceil(N) / $int(N)
Arrotonda per difetto/eccesso/tronca.
$min(...) / $max(...)
Minimo/massimo di una lista di numeri (separati da virgola o spazio).
File e hash
Versione semplificata rispetto al vero mIRC (che ha molti più switch/opzioni per ognuna di queste).
Funzione
Cosa fa
$exists(percorso)
1/0 a seconda che il file o la cartella esista.
$isfile(percorso) / $isdir(percorso)
1/0 a seconda che sia un file/una cartella.
$read(file[,N])
Una riga a caso dal file, o la riga N (1-based) se indicato. Non supporta gli switch di ricerca per testo/wildcard del vero mIRC.
$md5(testo) / $sha1(testo)
Hash MD5/SHA1 del testo.
$fread(handle)
La riga successiva (fino al prossimo a-capo) dell'handle aperto con fopen, avanzando il punto di lettura. Vuoto se non c'è altro da leggere (vedi $feof).
$fgetc(handle)
Il carattere successivo dell'handle, avanzando di 1. Vuoto a fine file.
$findfile(cartella,wildcard,N[,depth])
L'N-esimo file (percorso completo) dentro cartella il cui nome soddisfa wildcard (*/?, un solo pattern per chiamata - il vero mIRC ne accetta più d'uno separati da ;, qui no). N=0 restituisce il conteggio invece del percorso (stessa convenzione di $chan(0)/$nick(0)). depth (opzionale): quanti livelli di sottocartelle esplorare - 0 = solo quella cartella, un numero = quanti livelli, omesso = tutte senza limite.
$finddir(cartella,wildcard,N[,depth])
Come $findfile ma cerca fra le sottocartelle invece che fra i file.
$file(percorso).proprietà
Informazioni su un file: .size (byte), .mtime (data di ultima modifica, formato $ctime), .name (nome file con estensione), .ext (solo estensione, senza il punto), .path (cartella che lo contiene). Senza proprietà indicata, equivale a .size. Vuoto se il file non esiste. Versione semplificata rispetto al vero mIRC, che ha anche .ctime/.atime/.shortfn/.longfn/.attr/.sig/.version.
$nofile(percorso)
La cartella che contiene il file (con la barra finale), senza il nome del file. Es. $nofile(C:\musica\canzone.mp3) → C:\musica\.
Vedi anche Comandi per fopen/fclose/fwrite, e le
costanti $feof/$ferr qui sopra.
Costruire un "fserve" con questi identificatori: combinando $findfile con
on message/haltdef/echo (vedi Scripting) e
dcc send <nick> <percorso> (vedi Comandi) puoi scrivere uno script
che elenca e manda file veri da una cartella, come il File Server del vero mIRC - senza bisogno di una vera
connessione DCC (i file passano dai server di Telegram/WhatsApp, più affidabile). Attenzione alla
sicurezza: non passare mai direttamente a dcc send un percorso scritto dall'utente remoto (es.
dcc send $nick $2) - chiunque potrebbe chiedere un file qualunque del tuo computer. Costruisci invece
un elenco con $findfile/%variabili e usa quello, mai l'input dell'utente come percorso
diretto.
Variabili binarie (Binary Files)
Versione semplificata rispetto al vero mIRC. Vedi Comandi per bread/
bwrite/bset/bunset/bcopy/breplace/btrunc,
che creano e modificano le variabili binarie &nome lette da queste funzioni.
Funzione
Cosa fa
$bvar(&binvar,N,M)
M valori ascii (separati da spazio) a partire dal byte N (1-based). $bvar(&binvar,0) (o N assente) restituisce invece la lunghezza della variabile.
$bfind(&binvar,N,M)
Posizione (1-based) della prima occorrenza di M a partire dal byte N; 0 se non trovato. M può essere un valore ascii singolo (es. 32), una sequenza di valori ascii separati da spazio (es. 87 65 86), o del testo semplice (ricerca case-insensitive).
Le dot-properties del vero mIRC (.text/.textcs/.regex su
$bfind, .text/.word/.nword/.long/.nlong su $bvar)
non sono supportate - qui $bvar restituisce sempre valori ascii separati da spazio, non testo o numeri a
più byte con un ordine specifico.
Socket (Sockets)
Vedi Comandi per sockopen/sockwrite/sockread/
sockclose/sockmark, e le costanti $sockname/$sockerr/
$sockbr qui sopra.
Funzione
Cosa fa
$sock(name).mark
L'etichetta impostata con sockmark, vuota se non impostata.
$sock(name).ip
L'indirizzo a cui è connesso (quello passato a sockopen).
$sock(name).port
La porta a cui è connesso.
$sock(name).connected
1/0 a seconda che sia attualmente connesso.
$sock(name).listening
1/0 a seconda che name sia un listener aperto con socklisten (invece di un socket connesso).
$sock(name).ssl
1/0 a seconda che sia una connessione TLS (aperta con sockopen -e).
$sock(name) (senza proprietà)
Il nome stesso, se il socket esiste; vuoto altrimenti - utile per un controllo rapido tipo if ($sock(nome)) { ... }.
Versione ridotta rispetto al vero mIRC: mancano .sent/.rcvd/.sq/
.rq/.to/.type (oltre "tcp" fisso)/.wserr/.wsmsg e la
ricerca per wildcard/indice N ($sock(name,N)) - qui name è sempre un nome esatto.
Funzioni di testo/numeri
Funzione
Cosa fa
$len(testo)
Lunghezza del testo.
$upper(testo) / $lower(testo)
Maiuscolo/minuscolo.
$left(testo,N)
Primi N caratteri da sinistra. N negativo = tutti tranne gli ultimi N.
$right(testo,N)
Ultimi N caratteri da destra. N negativo = tutti tranne i primi N.
$mid(testo,inizio[,lunghezza])
"lunghezza" caratteri a partire da "inizio" (1-based). Senza "lunghezza" (o con 0): fino alla fine.
$pos(testo,sottostringa[,N])
Posizione (1-based) della N-esima occorrenza di "sottostringa" in "testo", case-insensitive. Senza N (o con 0): quante volte occorre in tutto. Vuoto se non trovata.
$replace(testo,da,a[,da2,a2,...])
Sostituisce tutte le occorrenze, case-insensitive. Accetta più coppie da/a in sequenza, come nel vero mIRC.
$chr(N)
Il carattere con codice ASCII N, es. $chr(32) = spazio.
$asc(C)
Il codice ASCII del carattere C.
$rand(N1,N2) / $r(N1,N2)
Intero casuale tra N1 e N2, estremi inclusi, in qualunque ordine (documentazione ufficiale mIRC - $r è lo stesso identificatore con un altro nome). Solo numeri: il vero mIRC accetta anche un intervallo di caratteri, non implementato qui.
$+(a,b,c,...)
Unisce più elementi senza spazi.
$calc(espressione)
Calcola un'espressione aritmetica.
$nick(N)
N-esimo partecipante (1-based) della nicklist della finestra corrente; $nick(0) restituisce il totale.
$avatarfile(nick)
Nostra aggiunta (il vero mIRC non ha niente del genere) - percorso locale della foto profilo di quel nick, pronto per /drawpic. Vedi la nota subito sotto: può restituire vuoto la prima volta.
$contact(N)
Nostra aggiunta (il vero mIRC non ha una rubrica separata dai canali/nicklist) - N-esimo contatto (1-based) della rubrica della RETE a cui appartiene la finestra corrente, $contact(0) il totale. Stesso compromesso sincrono/asincrono di $avatarfile qui sopra - vedi la nota sotto.
$contactphone(N)
Nostra aggiunta - come $contact(N) (stessa numerazione, stessa rubrica), ma restituisce il numero di telefono invece del nome. A differenza del nome (due contatti possono chiamarsi uguale) il numero identifica sempre una sola persona - utile per un msg senza rischio di ambiguità, vedi la nota sotto.
$input(testo,tipo,titolo,default)
Apre una finestra di richiesta testo davvero bloccante (vedi nota sotto) e restituisce quanto digitato, o $null se annullato.
$sfile(cartella,titolo,oktext)
Documentazione ufficiale mIRC: apre la vera finestra di selezione file del sistema e blocca davvero lo script finché non scegli o annulli (stesso principio di $input sopra) - restituisce il percorso scelto, o stringa vuota se annulli. cartella può includere una maschera jolly in fondo (es. C:\Ascii\*.txt) per filtrare per estensione. oktext (testo del pulsante) non ha equivalente nella finestra nativa, ignorato.
$file="titolo" cartella
Documentazione ufficiale mIRC (sintassi storica, non più nell'help recente ma ancora supportata): stessa identica cosa di $sfile qui sopra, scritta diversamente - niente parentesi, il titolo tra virgolette con l'uguale, poi uno spazio, poi la cartella/maschera (che può usare $+ per costruirsi da più pezzi, es. $mircdir $+ Ascii\*.txt, vedi la nota sotto). Da NON confondere con $file(nomefile) con le parentesi: nel vero mIRC è tutt'altro identificatore (informazioni su un file che esiste già - size/data/attributi), non implementato qui.
$mircdir
Documentazione ufficiale mIRC: la cartella dati di mIRC. Qui è la cartella dati di Yoake (dove vivono Yoake.ini, il database, gli script) - letta una volta sola all'avvio, non cambia mai durante una sessione.
$input() è diverso da $dialog()//dialog -m (che NON bloccano
davvero, vedi Dialogs): qui usiamo window.prompt()/window.confirm()
del browser, le uniche funzioni realmente bloccanti a disposizione - lo script si ferma per davvero finché non
rispondi, esattamente come nel vero mIRC, quindi var %x = $input(...) seguito da un if sulla
riga dopo funziona. La contropartita è l'aspetto: è la finestra nativa del sistema/browser, non lo stile mIRC
dell'app - le icone i/w/q del vero mIRC sono ignorate (nessun controllo
sull'icona di una prompt()/confirm() nativa). Se tipo contiene e
appare una casella di testo (con default come valore iniziale); se contiene y o
n è una domanda sì/no (yes/no); altrimenti è un OK/Annulla semplice.
alias cambianick {
var %nuovonick = $input(Inserisci il nuovo nickname:, e, Cambia Nickname, $me)
if (%nuovonick != $null) {
/nick %nuovonick
}
}
; /away è un comando vero (vedi sezione "Away/idle" sotto) - l'avviso a chi
; ti scrive mentre sei via lo manda già l'app da sola, non serve scriverlo:
alias setaway {
var %frase = $input(Frase da mostrare se ti scrivono mentre sei via:, e, Imposta Away)
if (%frase != $null) {
away %frase
}
}
$avatarfile(nick) - richiesta esplicita dal vivo: ricostruire un canale via
script disegnando la foto di chi scrive, come i vecchi script GUI del vero mIRC. Risolve nick prima
nella nicklist della finestra corrente, altrimenti (in una query) usa la persona della query stessa - non
cerca fra i contatti/rubrica come /whois (quella ricerca è troppo lenta per un identificatore, che
deve rispondere subito). Scaricare la foto da Telegram/WhatsApp richiede tempo (è una richiesta di rete): la
prima volta che lo chiami per un nick restituisce stringa vuota e avvia lo scaricamento in sottofondo,
pronto per la chiamata successiva - esattamente il compromesso che aveva anche il vero mIRC, dove
/drawpic vuole sempre un file già scaricato, mai un link diretto: anche gli script storici dovevano
prima procurarsi l'immagine (via DCC o webspace) e solo al giro dopo disegnarla.
$contact(N) - richiesta esplicita dal vivo: uno script che deve scorrere TUTTA la
rubrica di una rete (es. per un invio di massa), non solo la nicklist di un canale/gruppo aperto (quella è
$nick(N)). Stesso identico compromesso sincrono/asincrono di $avatarfile sopra: la
rubrica si scarica da Telegram/WhatsApp con una richiesta di rete, un identificatore non può aspettarla - la
prima chiamata in una rete restituisce vuoto (o 0 per $contact(0)) e avvia il
caricamento in sottofondo, pronto dalla chiamata successiva. In un ciclo while lanciato due
volte di fila (o dopo un on connect, quando la rubrica ha già avuto tempo di caricarsi) funziona
normalmente.
msg <nick> <testo> (documentazione ufficiale mIRC) cerca prima nella nicklist della
finestra da cui lanci lo script - se non trova nessuno lì, cerca anche nella rubrica dell'intera rete: per
numero/id (sempre univoco) o per nome, ma solo se il nome è univoco. Due contatti con lo stesso nome
sono un'ambiguità reale: msg non ne indovina uno a caso, avvisa e basta - in quel caso usa
$contactphone(N) invece di $contact(N) come bersaglio, il numero non è mai ambiguo.
Attenzione: mandare messaggi a raffica a tutta la rubrica è il tipo di comportamento che Telegram e
WhatsApp riconoscono come spam e puniscono con limitazioni o ban dell'account - non è un rischio di Yoake, è
una politica della piattaforma, vale la pena saperlo prima di scriverci uno script sopra.
alias mandaatutti {
var %i = 1
while (%i <= $contact(0)) {
msg $contactphone(%i) Ciao! Questo è un messaggio di prova.
inc %i
}
}
$sfile/$mircdir/play insieme - popup per mandare un
disegno ASCII al canale che stai guardando, con velocità scelta a parte (documentazione ufficiale mIRC, vedi
Comandi per play). $active (Window Identifiers, documentazione
ufficiale) è il nome della finestra attiva - qui il canale da cui apri il popup. Le due righe sotto fanno
ESATTAMENTE la stessa cosa - $sfile(...) (forma moderna, con le parentesi) o
$file="..." ... (forma storica, quella di molti script anni '90 - vedi sopra), usa quella che
preferisci.
set %i 1
while (%i <= $nick(0)) {
echo $nick(%i)
inc %i
}
echo $+(Ciao, ,$nick,!) ; niente spazi indesiderati tra i pezzi
Gli identificatori legati ai media/notifiche/percorsi Yoake-specifici sono aggiunte nostre: IRC (e
quindi il vero mIRC) non ha allegati, sotto-tipi di NOTICE, o un secondo nome di prodotto da distinguere. Tutto il
resto di questa pagina (token, data/ora, matematica, file, hash, testo) segue invece la documentazione ufficiale
mIRC il più fedelmente possibile - identificatori legati a IRC/DCC/Windows senza un vero equivalente qui
(liste di ban, canali/modalità IRC, editbox/clipboard di Windows, DDE, ecc.) non sono stati replicati.
Vedi anche Dialogs per $did()/$dialog()/$didtok()/
$didwm()/$didreg()/$dbuw/$dbuh, e i comandi
/dialog//did//didtok; e Custom Windows
per $window()/$line()/$fline()/$flinen, e i comandi
/window//aline//cline//dline//iline//rline/
/sline//renwin.
Window Identifiers
Dalla documentazione ufficiale mIRC (window_identifiers.html): qui è stato implementato solo il
sottoinsieme che ha un vero equivalente in questa app. La DCC chat esiste davvero come funzione (vedi
dcc chat in Comandi), ma senza un identificatore di scripting per
raggiungerla: $chat() del vero mIRC non è stato replicato. Non esistono nemmeno i concetti di
file server, "finestra query unica" ($compact), modalità a schermo intero
($fullscreen) o stato dell'applicazione ($appactive/$appstate) - quindi
$chat(), $compact, $dqwindow, $fserve(),
$fullscreen, $appactive, $appstate, $lactive e
$lactivewid non sono stati replicati.
Identificatore
Descrizione
$active
Il titolo della finestra attiva (quella in primo piano).
$activewid
L'id interno della finestra attiva.
$wid
L'id della finestra in cui gira lo script corrente (non necessariamente quella attiva sullo schermo).
$chan(N) / $chan(#nome)
N-esimo gruppo/canale aperto (1-based), o quello con quel nome; $chan(0) restituisce il totale. Solo gruppi/canali, non query/status.
$chan(N).topic
In questa app coincide col titolo del gruppo (Telegram/WhatsApp non hanno un campo topic separato, vedi /topic).
$chan(N).wid
L'id interno di quel gruppo/canale.
$query(N) / $query(nick)
N-esima chat privata aperta (1-based), o quella con quel nick; $query(0) restituisce il totale.
$query(N).wid
L'id interno di quella chat privata.
$send(N) / $send(nick)
Il trasferimento /dcc send in corso, se c'è (qui uno solo alla volta, non una vera coda come nel vero mIRC); $send(0) restituisce 1/0 invece del conteggio di una coda.
$send(N).file / .size / .pc / .status
Nome file, dimensione, percentuale completata, stato testuale del trasferimento.
$msg(canale,N)
L'N-esimo messaggio già caricato di quel canale/gruppo/query (nome con o senza # davanti, o l'id finestra); $msg(canale,0) (o senza N) restituisce il totale. Testo del messaggio se usato senza dot-property.
$msg(canale,N).id
L'id del messaggio - serve a /playmedia per aprirlo.
$msg(canale,N).type
Il tipo di media del messaggio (video/photo/ecc, come $mediatype), vuoto se è solo testo.
$msg(canale,N).sender
Chi ha scritto quel messaggio.
echo Finestra attiva: $active ($activewid) - sono in $wid
echo Gruppi aperti: $chan(0)
if ($chan(0) > 0) echo Il primo è $chan(1), id $chan(1).wid
echo Chat private aperte: $query(0)
if ($send(0) == 1) echo Invio in corso: $send(1).file al $send(1).pc%
echo Messaggi caricati in #canale: $msg(#canale,0)
if ($msg(#canale,3).type == video) echo Il terzo messaggio è un video, id $msg(#canale,3).id
$msg() è una possibilità che il vero mIRC non ha mai avuto: nel vero mIRC,
$line (e i comandi che leggono/modificano riga per riga, /aline//cline/
/dline//iline//rline) funzionano SOLO sulle finestre custom (quelle con la
@ davanti) - è una limitazione nota e documentata, mai tolta nonostante sia stata richiesta più volte
sul forum ufficiale: un vero canale IRC è puro testo, senza nessuna struttura dati da interrogare. Qui invece
i messaggi sono già salvati in modo strutturato (con tipo di media, mittente, id), quindi $msg()
può leggerli anche per una chat/canale vero, non solo per le finestre custom. Vedi /playmedia e
l'evento on videoend in Comandi/Scripting per un
esempio di playlist video automatica costruita con questo identificatore.
Codici di controllo (grassetto, colore, sottolineato...)
Gli stessi codici di controllo del vero mIRC, inseribili con $chr(N) dentro qualunque testo (messaggi,
comandi say/echo, righe di Custom Window). Vengono visualizzati davvero in modalità
testo semplice (MESSAGE_FORMAT=text nelle Opzioni) - in modalità HTML non si applicano, quella
modalità usa la formattazione nativa di Telegram/WhatsApp, un sistema diverso e non correlato.
Codice
Effetto
$chr(2)
Grassetto - attiva/disattiva (scrivilo due volte intorno al testo).
$chr(31)
Sottolineato - stesso schema.
$chr(29)
Corsivo - stesso schema.
$chr(22)
Inverso (scambia colore testo/sfondo) - stesso schema.
$chr(3)NN[,MM]
Colore: NN = testo (0-15, palette standard mIRC), MM = sfondo opzionale. $chr(3) da solo azzera il colore.
$chr(15)
Azzera tutto (grassetto/sottolineato/corsivo/inverso/colore) in un colpo solo.
say $chr(2)Attenzione!$chr(2) Questo è $chr(3)4rosso$chr(15) e questo $chr(31)sottolineato$chr(31).
Ctrl+K (come nel vero mIRC): apre una tavolozza dei 16 colori direttamente nella casella di testo di
qualunque finestra - clicca un colore per inserirlo alla posizione del cursore, senza dover scrivere $chr(3)
a mano. Solo il colore di primo piano (il vero mIRC permette anche lo sfondo con un secondo click); per lo sfondo
si può comunque scrivere ,MM subito dopo a mano.
Away / idle
Identificatore
Valore
$away
1 se sei in away (vedi /away in Comandi), 0 altrimenti.
$awaymsg
Il messaggio di away corrente, vuoto se non sei away.
$awaytime
Da quando sei away, in secondi Unix (come $ctime) - non un conto alla rovescia.
$idle
Secondi dall'ultimo tasto premuto in una casella di testo dell'app - identico al vero mIRC (dal 1996): non è un rilevamento di sistema operativo "lontano dal PC", conta solo l'attività dentro il client.
Il vero mIRC non ha un timer automatico dentro /away stesso ("torna online da solo dopo N minuti") - chi lo vuole se lo scrive con uno script che controlla $idle periodicamente, esattamente come qui sotto. Un vero server IRC avvisa da solo chi ti scrive quando sei away (risposta automatica del server); Telegram/WhatsApp non hanno niente di simile, quindi qui è l'app stessa a mandare il messaggio di away al posto del server - una volta sola per chat privata, mai nei gruppi (vedi /away in Comandi).
; auto-away dopo 10 minuti di inattività, controllato ogni 60 secondi
on start { timer99 0 60 { if ($idle >= 600) && (!$away) { away Assente da un po', torno presto } } }
Altri identificatori
Identificatore
Valore
$version
La versione di Yoake in uso (da package.json).
$isalias(nome)
1 se esiste un alias con quel nome, 0 altrimenti - utile per controlli difensivi prima di sovrascriverlo/chiamarlo.
$titlebar
Il testo impostato con /titlebar (senza il prefisso "Yoake -"), vuoto se non impostato.
$ignore(N/nick)
N-esimo nick ignorato (1-based, $ignore(0) il totale), o il nick stesso se lo passi per nome ed è ignorato. Le dot-property .type/.secs del vero mIRC (flag di ignore, scadenza automatica) restituiscono sempre vuoto - il nostro /ignore è un mute semplice, senza flag né scadenza.
$count(testo,sub,...) / $countcs(...)
Quante volte ciascuna delle substring compare in testo, sommate. cs = case-sensitive.
$remove(testo,sub,...) / $removecs(...)
Rimuove tutte le occorrenze delle substring indicate. cs = case-sensitive.
Converte un valore $ctime (o l'ora corrente, se N non è indicato) in testo leggibile. Token di formato supportati: yyyy yy mmmm mmm mm dddd ddd dd HH hh nn ss tt TT (sottoinsieme dei token ufficiali - quelli per il fuso orario e le forme a una cifra non sono supportati). Senza formato, un default nostro leggibile (non garantito identico byte-per-byte al vero mIRC, che non ne documenta il formato esatto).
$mediadir
Cartella dove va a finire "Salva nella cartella predefinita" dal tasto destro su una foto/video aperti - vedi /mediadir in Comandi. Nostra aggiunta: il vero mIRC non ha un identificatore per questo, solo un'impostazione nella finestra Options.
echo $count(hello world hello,hello) occorrenze di "hello"
echo $bytes($nick(0)) ; ovviamente senza senso, solo per l'esempio
echo Oggi è il $asctime(dd/mm/yyyy) alle $asctime(hh:nn:ss)
echo File: $nopath(%percorso) in $nofile(%percorso)
La pagina ufficiale "Other Identifiers" del vero mIRC elenca molti altri identificatori legati a
IRC: alcuni non hanno equivalente nemmeno per una finestra IRC vera (vedi IRC), perché
non sono stati implementati - $server, $status, $ssl*... ($network
invece esiste già, anche per le finestre IRC, vedi sopra). Altri restano fuori per lo stesso motivo di sempre,
legati a funzionalità senza equivalente in questa app: DCC ($dccport, $passivedcc...),
dialoghi/impostazioni di Windows ($isadmin, $darkmode, $lock...). Lo stesso
vale per le pagine "File and Directory", "Nick and Address" e "Time and Date" del vero mIRC: la maggior parte
riguarda liste ban IRC, indirizzi hostmask, dialoghi di scelta file nativi di Windows o funzionalità legate
a un vero log su file - nessun equivalente qui.