Comandi

Tutti i comandi si digitano nel campo di testo di una finestra preceduti da /, oppure si possono usare dentro uno script (alias, evento, popup) senza la barra. Sono gli stessi comandi, con lo stesso comportamento, in entrambi i contesti.

Il testo dopo un comando digitato in chat resta di norma letterale (i $identificatori non vengono sostituiti) - usa // invece di / per forzare la valutazione, es. //echo il mio nick è $me.
/bhelp - digitato in una qualunque finestra, stampa un elenco rapido dei comandi più usati con un esempio ciascuno (solo quelli pensati per l'uso interattivo in chat, non quelli di scripting più sotto) - comparso anche come suggerimento in Status appena apri Yoake.

Connessione

ComandoCosa fa
/connectApre il selettore di rete/login, oppure riconnette la rete della finestra corrente.
/server -m [telegram|whatsapp]Come nel vero mIRC: apre sempre una NUOVA finestra Status dedicata per la connessione, invece di riusare/convertire quella già aperta per quella rete. Senza rete indicata mostra il selettore normale, ma forzando comunque una finestra dedicata quando la connessione riesce. Stessa cosa disponibile dal dialogo di connessione con la checkbox "Apri in una nuova finestra Status".
/disconnectDisconnette la rete della finestra corrente.
/list [testo]Senza testo: elenco dei tuoi gruppi/canali. Con un testo di ricerca, su Telegram cerca ANCHE tra i canali/gruppi pubblici non ancora joinati (stessa ricerca del client ufficiale) - nella finestra che si apre, quelli dove sei già dentro sono in blu (doppio click apre), quelli nuovi sono in verde con "+ Entra" (doppio click entra e apre subito). Su WhatsApp resta solo tra i tuoi (Baileys non ha una ricerca pubblica di gruppi).
/joinEntra in un gruppo tramite link d'invito.
/quitChiude tutta l'applicazione (non specifico di una rete).
Cliccando un link t.me/nomecanale (o d'invito t.me/+...) dentro un messaggio, si apre DENTRO l'app invece che nel browser - se sei già iscritto apre subito, altrimenti chiede conferma prima di entrare (come il client ufficiale, non entra alla cieca in un canale linkato magari da uno sconosciuto). Stesso comportamento per i link d'invito WhatsApp chat.whatsapp.com/....

Messaggi

ComandoCosa fa
echo <testo>Scrive un messaggio locale (visibile solo a te) nella finestra corrente.
say <testo>Scrive nella finestra corrente, inviandolo davvero.
msg <nick|#canale> <testo>Come nel vero mIRC il bersaglio è sempre obbligatorio: un nick manda un privato, il nome del canale/gruppo corrente (con o senza #) scrive lì - uguale a "say".
qmsg <testo>Manda lo stesso testo a tutte le chat private aperte.
Il tasto Tab completa: dopo /query//msg//join//dcc send e i comandi che prendono un nick (kick/ban/op/whois/ecc.) completa il nome parziale, premuto più volte scorre le alternative in ciclo. Scrivendo un messaggio normale, @ seguito da qualche lettera funziona allo stesso modo per taggare qualcuno della finestra corrente (es. ciao @ma + Tab).

Away / ignore

ComandoCosa fa
away <messaggio>Ti mette away con quel messaggio (documentazione ufficiale mIRC, basic_irc_commands.html). A differenza del vero mIRC (dove ci pensa il server a rispondere da solo a chi ti scrive), qui è l'app a mandare il messaggio di away al posto tuo - una volta sola per chat privata finché resti away, mai nei gruppi. Vedi $away/$awaymsg/$awaytime/$idle in Identificatori.
awaySenza messaggio: toglie lo stato away (non è un toggle, è specificamente così nel vero mIRC).
ignore <nick>I messaggi di quel nick spariscono del tutto, in nessuna chat - lista GLOBALE per nome (case-insensitive), non per finestra e non per hostmask come il vero IRC (qui niente host reali su Telegram/WhatsApp).
unignore <nick>Toglie il nick dalla lista ignorati.
cnick <nick> <colore>Assegna un colore fisso a un nick (documentazione ufficiale mIRC, versione semplificata: qui solo per nome, il vero mIRC fa match anche per hostmask/modalità canale/livelli - niente di tutto ciò esiste su Telegram/WhatsApp). Si applica sia in nicklist sia al nome nei suoi messaggi, con priorità sul colore di categoria normale. <colore> può essere un numero 0-15 (palette standard mIRC, la stessa dei codici colore $chr(3)) o un colore CSS qualunque (nome o #hex).
cnick -r <nick>Toglie il colore assegnato a quel nick.

Stato / Storie

Nostra aggiunta - il vero mIRC non ha nulla di equivalente (non esiste un concetto di "stato" su IRC).

ComandoCosa fa
status <testo>Pubblica uno Stato/Storia (sparisce dopo 24h, come nei client ufficiali) sulla rete della finestra attiva - MAI su entrambe insieme. Su WhatsApp <testo> basta da solo - Stato di solo testo su sfondo colorato, supportato nativamente; un link dentro il testo resta testo cliccabile, non genera un'anteprima con miniatura (WhatsApp non lo fa nemmeno dal suo client ufficiale via automazione). Su Telegram una Storia richiede SEMPRE un media (nessuna Storia di solo testo esiste nell'API ufficiale): il comando apre la scelta file come dcc send, e <testo> diventa la didascalia.
statuswa <testo> / statustele <testo>Come status, ma forza rispettivamente WhatsApp o Telegram indipendentemente dalla finestra attiva - comodo per pubblicare su una rete precisa senza doversi prima spostare su una sua finestra.

Salvataggio foto/video

Tasto destro su una foto o un video aperti nel visualizzatore: due opzioni, "Salva con nome..." (apre la scelta file, decidi tu dove) o "Salva nella cartella predefinita" (salva subito, senza chiedere nulla, come fa il vero mIRC con i file DCC ricevuti). Non c'è rischio di sovrascrivere un file con lo stesso nome: se esiste già, viene aggiunto un numero tra parentesi.

ComandoCosa fa
mediadir <percorso>Imposta la cartella predefinita per "Salva nella cartella predefinita" - nostra aggiunta (il vero mIRC ha solo un'impostazione equivalente nella finestra Options, non un comando scriptabile).
mediadirSenza argomento: mostra la cartella attualmente impostata (vedi anche $mediadir in Identificatori).
Senza mai impostarla, la cartella predefinita è quella Download del sistema.

Playlist video (script)

Nostra aggiunta - il vero mIRC non ha mai avuto video, quindi non ha nulla di equivalente. Pensata per uno script che vuole scorrere un canale/gruppo cercando i video (es. un canale con le puntate di una serie) e riprodurli in sequenza, passando al successivo da solo quando uno finisce.

ComandoCosa fa
playmedia <canale> <id>Apre (scaricandolo se serve) il media del messaggio con quell'id - come un doppio click sulla sua etichetta in modalità testo. Foto si aprono come immagine, i video partono in autoplay. <canale> può essere il nome (con o senza #) o l'id finestra ($wid). L'id del messaggio si legge con $msg().id, vedi Identificatori.

Vedi $msg() in Identificatori e funzioni per scorrere i messaggi di un canale, e l'evento on videoend in Scripting (scatta da solo quando un video finisce di riprodursi) per un esempio completo di playlist automatica.

Condividi / Inoltra

Nostra aggiunta - il vero mIRC manda i file DCC sempre a un singolo nick scelto a mano nel comando, non ha un vero "inoltra". Ogni foto/video/audio/documento in chat ha un bottone 🔁 Condividi proprio sotto (in modalità testo compare solo dopo averlo aperto almeno una volta, visto che lì non c'è un'anteprima) - apre una finestra con un campo di ricerca e l'elenco di contatti (con numero di telefono, se disponibile) e gruppi/canali di entrambe le reti connesse in questo momento, non solo quella di origine: click su uno per condividere subito.

Se origine e destinatario sono sulla stessa rete, condividere usa l'inoltro nativo di quella rete (lo stesso meccanismo di "Inoltra" nel client ufficiale): il server copia/riusa il messaggio già suo, senza che il file passi di nuovo da qui - più veloce, e per chi riceve compare come un vero inoltro (su Telegram con l'etichetta "Inoltrato da"). Solo quando origine e destinazione sono su reti diverse (es. un video visto su Telegram, mandato a un contatto WhatsApp) si scarica il file e lo si rimanda come un invio nuovo dalla tua parte - l'unico modo possibile in quel caso, dato che nessuna delle due reti può inoltrare verso l'altra. Lo stesso percorso scarica-e-rimanda scatta anche sulla stessa rete se l'inoltro nativo non riesce (es. media troppo vecchio, il riferimento originale non è più disponibile).

Ogni media in modalità testo ha anche un numero univoco nell'etichetta stessa, es. [video33] - serve al comando share per condividerlo senza mouse:

ComandoCosa fa
share <nick|numero|#canale> <tag>Condivide il media con quel tag (es. video33, letto dall'etichetta in chat) con quel destinatario - una persona O un gruppo/canale, di qualunque rete connessa (utile per rimandare a un gruppo un video ricevuto in una query privata). Il bersaglio si cerca prima nella nicklist della finestra corrente (come /msg), poi tra i contatti e i canali/gruppi di entrambe le reti connesse, per nome o per numero di telefono. Accetta il nick sia con la @ davanti che senza, e il canale sia con # che senza: share @danilo video33, share danilo video33, share 393401234567 video33, share #ilmiocanale video33.
Tab funziona anche qui: /share @dan + Tab completa il nome dai tuoi contatti, come per /query//msg.

Caricamento script (/load, /unload, /reload)

Documentazione ufficiale mIRC (mirc_commands.html). Sintassi identica al vero mIRC, con una differenza architetturale importante: nel vero mIRC puoi avere tanti file .mrc separati, ciascuno con una sua posizione in un elenco "Scripts"; qui invece alias/eventi/popup vivono già tutti in un unico spazio condiviso (lo stesso motivo per cui, come documentato altrove, un alias scritto in Remote funziona identico a uno scritto nella scheda Aliases). Di conseguenza:

ComandoCosa fa
load -a <file>Carica un file di alias, aggiungendoli a quelli già presenti (non li sostituisce).
load -rs <file>Carica un file di script (eventi on ... + alias + tabelle dialog).
load -rv <file>Carica un file di %variabili, aggiungendole a quelle già presenti.
load -ps / -pc / -pq / -pn / -pm <file>Carica un popup per il contesto status/channel/query/nicklist/menubar - aggiunge le voci a quelle già presenti in quel contesto. Il file può avere l'intestazione [contesto] oppure essere solo righe di popup nude (il contesto lo dice già lo switch).
unload -a / -rs / -rv / -ps/-pc/-pq/-pn/-pm <file>Scarica esattamente ciò che quel file aveva aggiunto (e solo quello - non tocca alias/eventi/variabili con lo stesso nome definiti altrove). Fa scattare on unload, a meno di aggiungere n allo switch (es. -nrs) per evitarlo.
reload -a/-rs/-rv/-ps/-pc/-pq/-pn/-pm <file>Come load, ma non fa scattare on load (né on start, per il motivo sopra) - se il file era già caricato, lo ricarica da capo al posto del precedente.

Caricare lo stesso file due volte con load lo aggiorna sul posto (come nel vero mIRC) invece di lasciare un doppione. I file caricati con /load restano caricati anche dopo un riavvio dell'app (rilette da Yoake.ini, come il vero mIRC ricorda la sua lista Script), /unload li rimuove anche da lì.

; carica un pacchetto di alias extra all'avvio
on start {
  load -rs C:\Yoake\scripts\extra.mrc
}
; ...più avanti, per toglierlo:
unload -rs C:\Yoake\scripts\extra.mrc

Finestre

ComandoCosa fa
clearallSvuota tutte le finestre.
partallEsce da tutti i gruppi/canali (chiede conferma).
hopCome nel vero mIRC: esce e rientra subito nello stesso canale/gruppo. Funziona solo dove è tecnicamente possibile rientrare da soli: su Telegram serve essere admin di un canale/gruppo privato (per i pubblici, con username, basta rientrare col nome); su WhatsApp serve essere admin del gruppo. In entrambi i casi il link d'invito viene recuperato PRIMA di uscire, per non rischiare di restare fuori. Su WhatsApp in particolare il rientro automatico può comunque essere rifiutato da WhatsApp stesso (errore "forbidden") anche essendo admin - sembra una misura antiabuso del server contro chi esce e rientra subito con lo stesso link: se capita, il gruppo resta comunque raggiungibile rientrando manualmente con lo stesso link d'invito dopo qualche minuto.
close [-a|-c|-cn|-m] [finestra]Senza switch chiude la finestra indicata (o quella corrente/attiva se nessuna indicata) - utile in un popup nicklist per chiudere il canale/query da cui l'hai aperto. Con uno switch chiude per categoria, tutte insieme: -a tutte le chat aperte (query + gruppi/canali, mai lo Status), -c tutti i gruppi/canali, -cn tutti i gruppi/canali tranne quello attivo, -m tutte le query (chat private) - mai i gruppi/canali. Switch -k/-s/-n del vero mIRC (DCC chat/send, notice) non hanno equivalente qui, vengono ignorati.
titlebar <testo>Aggiunge <testo> dopo "Yoake -" nel titolo della finestra principale; senza testo torna al default "Yoake". Salvato in Yoake.ini (come nel vero mIRC) - resta impostato anche dopo un riavvio, finché non lo cambi di nuovo o non lo svuoti. Modificabile anche da File > Options (campo "Titlebar Text"), per chi non vuole usare il comando.
background [-abeshcfnrtx] [percorso]Sfondo immagine di una finestra - sintassi ufficiale mIRC: -a finestra attiva (default senza switch), -m finestra principale (desktop), -s status, -h switchbar/taskbar, -e imposta come predefinito per le nuove finestre, -c/-f/-n/-r/-t stile (center/fill/normal/stretch/tile), -x rimuove. Senza percorso apre la scelta file. Switch -d/-p/-l/-u/-b del vero mIRC non hanno equivalente qui, vengono ignorati.

Aggiornamenti

Comando specifico di Yoake, non del vero mIRC.

ComandoCosa fa
updateControlla subito se è disponibile una nuova versione (invece di aspettare il controllo automatico, ogni 6 ore). Su Windows e Linux, se trova un aggiornamento lo scarica da solo in background e avvisa in Status quando è pronto. Su macOS l'app non è firmata da Apple: se l'aggiornamento automatico fallisce per questo, Yoake lo segnala e rimanda a yoake.it per scaricare l'ultima versione a mano.
update installRiavvia Yoake e installa un aggiornamento già scaricato (mai automatico: solo su questo comando esplicito).

File e suoni

ComandoCosa fa
dcc send <nick> [percorso]Manda un file privatamente a quel nick, con finestra di avanzamento - senza percorso apre la scelta file.
splay [file]Riproduce un suono - senza percorso apre la scelta file.

Gestione file (File Handling)

Come nel vero mIRC, servono per leggere/scrivere file di testo dentro gli script (alias, eventi) - non sono comandi pensati per l'uso interattivo in chat, un po' come timer. A ogni file aperto si dà un nome a scelta (<handle>), usato poi per riferirsi a quel file finché non lo chiudi.

ComandoCosa fa
fopen [-no] <handle> <percorso>Apre un file e gli assegna <handle>. Senza switch il file deve già esistere (altrimenti fallisce e $ferr diventa vero); -n lo crea se manca; -o lo crea/svuota sempre, anche se esisteva già.
fclose <handle>Chiude l'handle. A differenza del vero mIRC non accetta wildcard per chiuderne più di uno insieme.
fwrite [-n] <handle> <testo>Aggiunge <testo> in fondo al file (append). -n aggiunge anche un a-capo dopo il testo.

Vedi anche Identificatori e funzioni per $fread(), $fgetc(), $feof e $ferr, che servono a leggere il contenuto di un handle aperto.

Versione semplificata rispetto al vero mIRC: non sono supportati /flist, /fseek e i suoi switch, la sintassi $fopen(handle).proprietà, né le variabili binarie &binvar (switch -b/-x). Un handle aperto tiene l'intero file in memoria con un puntatore di lettura, non un vero accesso a basso livello - va bene per file di testo di dimensioni normali, non per file enormi.

File binari (Binary Files)

Come nel vero mIRC, lavorano byte per byte invece che per righe di testo (a differenza di fopen/ fwrite sopra). I dati vivono in variabili binarie &nome (array di byte 0-255), distinte dalle normali %variabili di testo - restano finché non fai bunset.

ComandoCosa fa
bread [-t] <file> <S> <N> <&binvar>Legge N byte a partire dalla posizione S nel file (S parte da zero) e li mette in &binvar. -t si ferma al primo a-capo trovato.
bwrite <file> <S> <N> <testo|%var|&binvar>Scrive N byte (dei dati indicati) nel file a partire dalla posizione S (0 = inizio file, -1 = in fondo/append). N=-1 = scrive tutti i dati indicati. A differenza del vero mIRC, N è sempre obbligatorio.
bset [-z] <&binvar> <N> [valore ...]Imposta il byte N-esimo (e i successivi, se dai più valori) di &binvar - N parte da 1, come $bvar. Se &binvar non esiste, viene creata. -z la svuota/azzera prima.
bunset <&binvar> [&binvar ...]Elimina una o più variabili binarie.
bcopy [-z] <&dest> <N> <&src> <S> <M>Copia M byte da &src (a partire dal byte S) in &dest (a partire dal byte N) - N e S partono da 1. -z azzera nella sorgente i byte appena copiati.
breplace <&binvar> <vecchio> <nuovo> [vecchio nuovo ...]Sostituisce tutti i byte con valore "vecchio" (0-255) con "nuovo", ovunque si trovino in &binvar.
btrunc <file> <byte>Accorcia o allunga (zero-riempito) il file alla lunghezza indicata.

Vedi anche Identificatori e funzioni per $bvar() e $bfind(), che leggono il contenuto di una variabile binaria.

Versione semplificata rispetto al vero mIRC: switch -a (encoding UTF-8) e -c (chop del file) non hanno equivalente, ignorati se usati. Percorsi con spazi non sono supportati da questi comandi (a differenza di fopen/fwrite, che li supportano nel nome del file). Le &binvar, a differenza del vero mIRC, non vengono distrutte automaticamente a fine script - restano in memoria fino a un bunset esplicito o alla chiusura dell'app.

Socket (Sockets)

Come nel vero mIRC, permettono a uno script di parlare direttamente con un server TCP esterno (o riceverne dati), indipendentemente da Telegram/WhatsApp - non sono comandi pensati per l'uso interattivo in chat, come fopen sopra. A ogni connessione si dà un nome a scelta (<name>), usato poi per riferirsi a quel socket.

ComandoCosa fa
sockopen [-e] <name> <indirizzo> <porta>Avvia una connessione TCP verso indirizzo:porta - torna subito, non aspetta che si connetta davvero. -e usa TLS/SSL (per servizi come HTTPS). L'esito arriva dopo con on sockopen (riuscita) o on sockclose con $sockerr valorizzato (fallita).
sockwrite [-n] <name> <testo>Manda <testo> sul socket. -n aggiunge un a-capo ($crlf) alla fine se non già presente.
sockread [-f] <%var>Da usare dentro on sockread: legge una riga già arrivata (fino al primo a-capo, che viene tolto) nel socket che ha generato l'evento, e la mette in %var. -f prende tutto quello che c'è nel buffer anche senza un a-capo. Richiama sockread in un ciclo finché $sockbr non torna 0 per svuotare tutto quello arrivato.
sockclose <name>Chiude la connessione.
sockmark <name> [testo]Imposta (o cancella, se omesso) il campo .mark di quel socket - un'etichetta a piacere, utile per ricordarsi a cosa serve quella connessione.
socklisten <name> <porta>Mette <name> in ascolto su quella porta, per fare da server. Ogni connessione in arrivo scatena on socklisten - accettala con sockaccept.
sockaccept <newname>Da usare dentro on socklisten: accetta la connessione in attesa sul listener corrente ($sockname) e la trasforma in un socket vero e proprio chiamato <newname> (può coincidere col nome del listener, o essere diverso) - da lì in poi si usano sockwrite/sockread/sockclose su <newname> come per qualunque altro socket. Il listener resta in ascolto per altre connessioni.

Vedi anche Identificatori e funzioni per $sock(), e Eventi disponibili per on sockopen/on sockread/on sockclose/on socklisten.

Versione ridotta rispetto al vero mIRC: niente sockudp (UDP). -e dà una connessione TLS di base (senza controllo del certificato); gli switch avanzati del vero mIRC per gestire i certificati (-s/-w/-a/-p), STARTTLS e UPnP non hanno equivalente. Un solo handler globale per on sockopen/on sockread/on sockclose/on socklisten (non uno per nome di socket): usa $sockname dentro l'evento per sapere quale connessione l'ha generato, se ne hai aperte più di una. Un listener accetta una connessione pendente alla volta: se ne arriva una seconda prima che lo script chiami sockaccept sulla prima, quella vecchia viene scartata.

Timer e segnali

ComandoCosa fa
timer<N> <ripetizioni> <secondi> <comando>Esegue <comando> ogni N secondi; 0 ripetizioni = per sempre. timer<N> off lo ferma, timers off li ferma tutti.
beep [volte] [secondi]Emette un segnale acustico.
flash [off]Fa lampeggiare la finestra/icona nella taskbar di sistema; flash off lo ferma.

Variabili e controllo di flusso

ComandoCosa fa
set %var <valore>Imposta una variabile.
inc %var / dec %varIncrementa/decrementa una variabile numerica.
goto <etichetta>Salta a :etichetta (solo entro lo stesso livello di annidamento).
returnEsce dal blocco corrente.
haltInterrompe lo script E impedisce che il messaggio venga mostrato in chat (solo dentro "on message").
haltdefImpedisce solo che venga mostrata l'azione predefinita (messaggio o notifica), lo script continua.

Controllo di flusso come nel vero mIRC - niente "for" (non esiste nemmeno lì), solo if/elseif/ else/while/goto. if ed elseif accettano sia il classico blocco su più righe con le graffe, sia un singolo comando su una riga sola senza graffe (stile mIRC classico):

if (a == b) { ... }
elseif (a == c) { ... }
else { ... }

if (%nick == $null) goto done        ; senza graffe: un solo comando, tutta la riga
if (a == b) { ... } elseif (a == c) { ... } else { ... }   ; "} elseif (...) {" sulla stessa riga va bene

while (a < b) { ... }   (max 10000 iterazioni, poi si interrompe da solo)
:etichetta ... goto etichetta
A differenza del vero mIRC, un ramo senza graffe cattura TUTTA la riga come un unico comando, incluso un eventuale | - il vero mIRC userebbe | per separare più comandi sulla stessa riga, ma qui | non è supportato come separatore di comandi (non solo dentro l'if, in generale).

Operatori (documentazione ufficiale mIRC, sezione "If-then-else statements"):

OperatoreCosa fa
== / !=Uguale / diverso, senza distinguere maiuscole/minuscole.
===Uguale, distinguendo maiuscole/minuscole (non esiste un !==, per quello basta !(a === b)).
< > <= >=Confronto numerico se entrambi i lati sono numeri, altrimenti alfabetico (senza distinguere maiuscole/minuscole).
isin / isincsv1 è contenuto in v2, senza/con distinzione di maiuscole.
iswm / iswmcsv1 soddisfa il pattern con wildcard */? in v2, senza/con distinzione di maiuscole.
isnum [v2]v1 è un numero; con v2 nel formato N-M, controlla anche che sia nell'intervallo.
isalpha / isalnumv1 contiene solo lettere / solo lettere e numeri.
isletter [v2]v1 è fatto solo di lettere; con v2, controlla anche che ogni lettera di v1 compaia in v2.
isop v2v1 è admin del gruppo/canale v2 (in base alla nicklist già tracciata per Telegram e WhatsApp).
ischanv1 è il nome di un gruppo/canale aperto in questo momento.
// / \\v2 è / non è multiplo di v1.
&Confronto bitwise: vero se v1 AND v2 (bit a bit) è diverso da zero.
&& / || / !E logico / O logico / negazione.

Come nel vero mIRC, ogni operatore a parola (isin, isnum, isop, ecc.) si può negare mettendogli davanti un !, es. if (%x !isin %lista).

Non supportati (troppo specifici di IRC, senza un vero equivalente su Telegram/WhatsApp): ison, ishop, isvoice, isreg, isban, isinvite, isexcept, isaop, isavoice, isignore, isprotect, isnotify - tutti legati a liste canale (ban/invito/auto-op/ignore/ecc.) che qui non esistono.

Vedi anche Identificatori e funzioni per $nick, $chan, $1-$9 e le funzioni $len()/$calc()/ecc. usabili dentro qualunque comando, e Dialogs per /dialog e /did (finestre personalizzate con bottoni, caselle di testo, liste, tab e menu).