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.
Dentro uno script, un punto al posto della barra (.say/.msg invece di say/msg, documentazione ufficiale mIRC: "a dot in front of a command makes it execute silently") manda il messaggio SENZA mostrarlo in automatico - utile in un on input per costruirsi da soli l'eco con un formato/colore personalizzato (echo -r) senza vederlo due volte - funziona su entrambe le reti: su WhatsApp l'eco arriverebbe comunque dalla sincronizzazione multi-dispositivo dei server WhatsApp stessi, ma Yoake conosce già l'id di quel preciso messaggio (Baileys lo restituisce subito all'invio) e lo scarta da solo quando arriva, invece di mostrarlo una seconda volta.
/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|twitch]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". Su Twitch è come aggiungere un secondo account: ogni account Twitch ha la propria finestra Status, i propri canali e whisper.
/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). Su IRC è il vero comando LIST del server (documentazione ufficiale mIRC): mostra SEMPRE l'intero elenco pubblico dei canali di quel server, non solo quelli tuoi - nome, numero di utenti in tempo reale e topic di ciascuno. La finestra ha anche una casella di ricerca in alto (come /contacts): digitando lì rifà la stessa ricerca senza dover richiudere e riaprire con /list <testo>.
/joinEntra in un gruppo tramite link d'invito.
/quitChiude tutta l'applicazione (non specifico di una rete).
Nella finestra che si apre con /list, le intestazioni di colonna (Nome/Tipo/Descrizione/Membri) sono cliccabili per ordinare l'elenco già caricato - vale per l'elenco canali/gruppi di qualunque rete, non solo IRC. Cliccando "Membri" ordina prima in modo decrescente (più utenti in cima), un secondo click inverte l'ordine; le colonne di testo ordinano invece prima A-Z. Il numero nella colonna Membri è colorato in verde se non sei ancora entrato in quel canale/gruppo, stessa convenzione già usata per il colore del nome.
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, con mittente "Script".
echo -r <testo>Come echo, ma senza il mittente "Script": stampa solo il testo, riga nuda - come farebbe il vero mIRC (che non ha mai un mittente strutturato per /echo). Utile per ricostruirsi un <nick> colorato a mano con $chr(3) dentro un on message con haltdef, senza perdere il nome vero di chi scrive.
say <testo>Scrive nella finestra corrente, inviandolo davvero.
me <testo>Documentazione ufficiale mIRC: manda un'azione ("* nick fa qualcosa") invece di un messaggio normale, nella finestra corrente. Su IRC usa il vero meccanismo CTCP ACTION, lo stesso che si aspettano gli altri client IRC (compreso il vero mIRC) per "/me" - un'azione CTCP in arrivo da un altro client viene mostrata correttamente in corsivo, invece del testo grezzo del codice di escape. Su Telegram/WhatsApp resta la versione precedente (corsivo via markdown), visibile solo dentro Yoake stesso.
msg <nick|#canale|numero> <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". Cerca prima nella nicklist della finestra corrente; se non lo trova lì (estensione nostra, il vero mIRC non ha una rubrica), cerca 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 danno un avviso di ambiguità invece di indovinare, usa il numero in quel caso (vedi $contactphone in Identificatori).
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).

CTCP

Il CTCP (Client-To-Client Protocol) è il meccanismo standard IRC con cui due client si scambiano richieste "di servizio" fuori dalla chat normale (versione del client, ping, ora, ecc.). Yoake lo implementa su IRC e, in aggiunta, anche su Telegram e WhatsApp quando ENTRAMBE le parti usano Yoake.

ComandoCosa fa
ctcp <version|ping|time|clientinfo> [argomenti]Manda quella richiesta CTCP alla finestra attiva (un contatto o un canale/gruppo) - funziona in modo identico su IRC, Telegram e WhatsApp, sia digitato a mano sia da script (alias, eventi on), come me qui sopra.

Yoake risponde anche da solo alle richieste CTCP VERSION, PING, TIME e CLIENTINFO che riceve (funzione standard del protocollo IRC client-to-client, lo stesso che fa il vero mIRC) - su IRC la risposta parte come NOTICE, mai mostrata nella finestra del canale/query (esattamente come nel vero mIRC), con solo una riga di log in Status.

Su Telegram/WhatsApp funziona SOLO se ENTRAMBE le parti usano Yoake: a differenza della NOTICE di IRC (un canale che i client IRC veri non mostrano mai nella chat normale), Telegram e WhatsApp non hanno un equivalente "invisibile" - un contatto che usa il client ufficiale (non Yoake) vedrebbe comparire il testo CTCP grezzo come un messaggio letterale e incomprensibile nella sua chat normale. È quindi una funzione solo Yoake-a-Yoake su queste due reti, puramente aggiuntiva/facoltativa - non scatta mai da sola verso un contatto che non ce l'ha, dato che sei sempre tu a doverla invocare con /ctcp.

Away / ignore

ComandoCosa fa
nick <nuovo nome>Documentazione ufficiale mIRC (cambia il nick sul server IRC) - qui non esiste un'identità unica condivisa fra le reti (Telegram e WhatsApp sono due account separati), quindi cambia per davvero il nome sull'account della rete a cui appartiene la finestra da cui lo lanci (chiamata reale dell'API ufficiale: account.UpdateProfile su Telegram, updateProfileName su WhatsApp) - una rete alla volta, non entrambe insieme con un solo comando.
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.
color <categoria> <colore>Imposta da script/riga di comando lo stesso colore che si sceglierebbe a mano dalla finestra Colori (documentazione ufficiale mIRC: /color <name> <index>, stesse voci del dialogo Alt+K) - applica e salva subito, come premere OK lì. <categoria> (case-insensitive): own, ownContent, nick, normal, system, notice, link, reply, nicklistOp, chatBg, nicklistBg, nicklistNormal, nicklistGrayed, titleText, inputText, inputBg, taskbarText. <colore> come cnick: un numero 0-15 o un colore CSS qualunque.
react <emoji>Nostra estensione (il vero mIRC non ha reazioni): manda <emoji> come reazione all'ULTIMO messaggio della finestra attiva, su Telegram e WhatsApp. Senza argomento toglie la reazione già messa. Nessuna voce preconfigurata nel menu tasto destro: come tutti i popup, è roba solo personalizzabile da script - se vuoi un tasto rapido aggiungilo tu in popups.ini (es. Reagisci ❤️:/react ❤️). In modalità HTML le reazioni ricevute compaiono come un piccolo badge sotto il messaggio, cliccabile per vedere chi ha reagito.

Chiamate in arrivo

Nostra aggiunta - il vero mIRC non ha chiamate. Yoake rileva quando arriva una chiamata (audio o video, sia Telegram sia WhatsApp) e la mostra come un messaggio di sistema, ma è solo segnalazione: GramJS/Baileys non implementano affatto l'audio/video vero, non è possibile rispondere per davvero da qui - vedi Scripting per la spiegazione completa.

ComandoCosa fa
rejectcall [messaggio]Rifiuta l'ultima chiamata in arrivo. Con un messaggio, lo manda anche a chi ha chiamato (un normale messaggio di testo, niente a che fare con la chiamata in sé). Pensato per essere usato dentro l'evento on call (vedi Scripting) per bloccare automaticamente tutte le chiamate, ma funziona anche digitato a mano.

Twitch

Twitch è una rete a parte, con lo stesso spirito multi-account/multi-canale di IRC (più account Twitch insieme, più canali insieme per ciascun account) ma di natura diversa: non è un protocollo testuale come IRC, quindi Yoake non ci parla con un socket ma apre un vero browser incorporato (una finestra Chromium nascosta, una per canale joinato) che replica quello che farebbe una persona vera sul sito twitch.tv. Login, chat, nicklist ed elenco canali dipendono quindi dal sito reale di Twitch, non da un server dedicato - vedi Connessione per come funziona il login.

ComandoCosa fa
/join <canale>Entra in un canale Twitch, aprendo una finestra chat dedicata. Puoi stare in più canali insieme con lo stesso account, esattamente come su IRC - ognuno con la propria finestra.
/video [canale]Nostra aggiunta - il vero mIRC non ha mai avuto video. Apre una finestra separata con il player Twitch del canale (audio/video veri, non solo la chat testuale) - una vera finestra a sé, non un riquadro dentro l'MDI: Twitch blocca l'embed del player dentro una pagina locale come quella di Yoake, quindi qui carica il player come farebbe un browser normale. Se hai un account Twitch connesso, nella stessa finestra puoi anche scrivere in chat, non solo guardare. Senza argomento, usa il canale della finestra corrente se è un canale Twitch.
msg <nick> <testo> / query <nick>Manda/apre un whisper (il messaggio privato di Twitch) - stessa sintassi delle altre reti. A differenza dei canali (senza cronologia, come IRC), i whisper HANNO una cronologia vera, presa dal pannello messaggi di Twitch.
Cose che su Twitch non esistono (quindi non ci sono comandi corrispondenti): MODE, kick/ban/op dal client (i mod tools veri di Twitch sono un'altra superficie, fuori da questa integrazione), un vero QUIT (disconnettersi chiude semplicemente le finestre nascoste) e l'avvio di un whisper con qualcuno con cui non hai mai scritto prima (impostazione privacy vera di Twitch, non aggirabile da qui). La nicklist è inoltre uno scatto/istantanea aggiornata a intervalli, non in tempo reale come su IRC.

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.

Sticker salvati

Nostra aggiunta - il vero mIRC non ha un concetto di sticker. Nel visualizzatore, tasto destro su un'immagine o uno sticker in arrivo e "Salva come sticker": funziona su qualunque immagine, non solo su un vero sticker ricevuto (come "converti in sticker" dei client ufficiali). Ctrl+K per gli sticker è Ctrl+S: apre l'elenco di quelli salvati direttamente sopra la casella di testo di qualunque finestra (stesso posto del selettore emoji) - un click ne manda subito uno alla chat aperta (non lo inserisce nel testo, come cliccare uno sticker nei client ufficiali), la crocetta in alto a destra di ognuno lo elimina dall'elenco.

Scarica tutto il set (solo Telegram) - stesso tasto destro nel visualizzatore, ma solo su un vero sticker in arrivo appartenente a un pacchetto: scarica e salva in un colpo solo tutti gli sticker di quel set (come fa il vero client Telegram), pronti nell'elenco Ctrl+S. Su uno sticker "sciolto" (senza un vero pacchetto) o su una foto normale la voce non compare nemmeno.

Un vero sticker Telegram animato (formato TGS/Lottie) non è visualizzabile nel client testuale (serve un motore Lottie che qui non c'è) - resta comunque salvabile e riutilizzabile su Telegram stesso, solo senza anteprima. Uno sticker statico (o animato WEBP) invece funziona ovunque, incluso il visualizzatore.
Telegram ↔ WhatsApp: uno sticker in formato WEBP (statico o animato) salvato su una rete è riutilizzabile direttamente anche sull'altra, dato che entrambe capiscono lo stesso formato. Uno sticker Telegram animato TGS o video-sticker WEBM invece NON può essere mandato a WhatsApp così com'è (WhatsApp capisce solo WEBP) - andrebbe prima convertito, cosa che questa versione non fa ancora: provare a mandarlo su WhatsApp dà un errore esplicito invece di spedire byte che l'altra parte non capirebbe comunque.

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. Su IRC è il vero comando HOP (PART seguito da JOIN sullo stesso canale) - sempre possibile per definizione, senza bisogno di essere op, a differenza dei casi Telegram/WhatsApp qui sopra.
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.
findtext [-nhc] <testo>Cerca <testo> fra i messaggi della finestra da cui lo lanci - sintassi ufficiale mIRC, stessa ricerca del Ctrl+F ("mIRC Find Text"). -n cerca in giù (verso i messaggi più recenti) invece che in su, il default. -h evidenzia la riga trovata, -c toglie l'evidenziazione già presente (da sola, senza cercare nulla, se non segue del testo).
proxy on <server> <porta> [utente] [password] [-m4|-m5]Imposta un proxy SOCKS4/SOCKS5 (documentazione ufficiale mIRC, versione semplificata: niente switch -c/-d, qui non c'è un vero DCC da instradare a parte). Senza -m4/-m5 usa SOCKS5. Si applica sia a Telegram che a WhatsApp insieme (un proxy solo, non uno per rete), dalla PROSSIMA connessione - non forza una riconnessione immediata. Nessun proxy HTTP generico (solo SOCKS4/SOCKS5). Modificabile anche dal tasto "⚙ Proxy" nella finestra Connect.
proxy offDisattiva il proxy (dalla prossima connessione).
stats [oggi|30|sempre]Apre la finestra Statistiche (stessa cosa del tasto 📊 in toolbar): con chi parli di più e chi vede i tuoi Stati/Storie, su entrambe le reti insieme. Senza argomento mostra gli ultimi 30 giorni. Le viste degli Stati/Storie vengono registrate solo da quando questa funzione è attiva in poi (spariscono con la storia stessa dopo 24h, non recuperabili a posteriori) - su WhatsApp non è garantito che il dato delle viste arrivi (nessuna documentazione ufficiale lo conferma). Il grafico "Tempo online per rete" più in basso include anche ogni server IRC connesso, con una barra a sé per ciascuno, non solo Telegram/WhatsApp.

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|numero> [percorso]Manda un file privatamente a quel nick, con finestra di avanzamento - senza percorso apre la scelta file. Bersaglio risolto come msg (vedi sopra): nicklist, poi rubrica per numero/id o per nome se univoco. Su IRC è una vera DCC SEND (documentazione ufficiale mIRC/DCC, socket diretta) - vedi la sezione DCC più sotto per i dettagli.
splay [file]Riproduce un suono - senza percorso apre la scelta file.
play [-c] <#canale|nick|numero> <file> [ritardo ms]Documentazione ufficiale mIRC: manda un file di testo riga per riga al bersaglio, con un ritardo (in millisecondi) tra una riga e l'altra - il modo classico per mandare disegni ASCII a un canale. -c: ogni riga è un comando vero da eseguire, non testo da mandare. Bersaglio risolto come msg/dcc send qui sopra (nome di un canale/gruppo/query già aperto, es. con $chan/$active, oppure nicklist/rubrica per un privato) - se è un contatto mai aperto prima, la query si apre da sola. Non implementati gli altri switch ufficiali (-p/-q/-r/-l/-t), solo il caso base.
play <bersaglio> stopDocumentazione ufficiale mIRC: ferma il /play in corso su quel bersaglio.
query/whois (documentazione ufficiale mIRC) risolvono il bersaglio con lo stesso schema di msg e dcc send qui sopra: prima la nicklist della finestra corrente, poi la rubrica per numero/id (sempre univoco) o per nome, ma solo se il nome è univoco - un nome doppio in rubrica dà un avviso invece di indovinare a caso, usa il numero in quel caso. Su IRC, whois manda la vera richiesta WHOIS al server: il risultato compare sempre nella finestra Status per default, come nel vero mIRC (le risposte WHOIS vanno lì a meno che uno script personalizzato le rediriga altrove con on whois, vedi Scripting), non nella finestra da cui l'hai digitato.
Mandare tante righe con /play a un ritardo bassissimo/nullo ha lo stesso rischio di spam discusso per un invio di massa (vedi $contact/$contactphone in Identificatori) - qui è un solo bersaglio, non tutta la rubrica, ma con file grandi il rischio non è comunque nullo.
Nostra estensione: senza -c, ogni riga viene mandata in monospace (entità MessageEntityCode su Telegram, ```testo``` su WhatsApp) - il vero mIRC è sempre a larghezza fissa, ma i client ufficiali Telegram/WhatsApp usano un font proporzionale per il testo normale, che romperebbe l'allineamento a colonne di un disegno ASCII.

DCC: chat diretta, invio file su IRC, sticker nei canali

Oltre a dcc send qui sopra (invio file, documentazione ufficiale mIRC/DCC), Yoake supporta anche la vera DCC CHAT: una chat diretta su socket TCP fra due macchine, che una volta stabilita non passa più dal server. Su IRC è il protocollo storico vero, compatibile con qualunque altro client IRC reale (mIRC, HexChat, irssi...); su Telegram/WhatsApp la stessa identica socket viene riusata, ma l'invito viaggia "travestito" da messaggio normale (come già fa /ctcp qui sopra) con in più un token di sicurezza, dato che lì non esiste un modello di fiducia preesistente come su IRC - funziona quindi solo Yoake-a-Yoake, mai verso il client ufficiale di un contatto.

ComandoCosa fa
dcc chat [nick]Propone una DCC chat. Su IRC il nick è facoltativo se sei già in una query privata con quella persona (usa il nick della finestra corrente); su Telegram/WhatsApp non esiste un concetto di nick, l'invito va sempre alla chat privata attualmente aperta.
dcc accept [nick]Accetta un invito DCC chat in sospeso (segnalato con un avviso in Status su IRC, o nella chat privata stessa su Telegram/WhatsApp) - il nick è facoltativo se c'è una sola richiesta in attesa.
dcc closeChiude la DCC chat attiva nella finestra corrente.

Una DCC chat accettata diventa una piccola finestra a sé, con la stessa interfaccia della chat normale (niente nicklist, è una connessione fra due soli interlocutori). Per l'indirizzo da usare nell'invito, Yoake preferisce di default un indirizzo IPv6 pubblico se la macchina ne ha uno (nessun NAT da forare - funziona ormai anche da molte connessioni mobili); se non c'è, ripiega su un indirizzo IPv4 locale, avvisando che probabilmente è raggiungibile solo sulla stessa rete locale, a meno di aver inoltrato una porta a mano sul router.

DCC SEND su IRC. dcc send (vedi tabella "File e suoni" più sopra) ora funziona anche su IRC - prima non era disponibile per niente su questa rete. Stessa sintassi e stessa finestra di avanzamento già usate per Telegram/WhatsApp, ma con una percentuale reale, byte per byte (vera DCC, socket diretta): a differenza di WhatsApp, la cui barra di avanzamento è un'animazione indeterminata perché Baileys non espone un progresso incrementale dell'upload, su IRC il numero mostrato è quindi più preciso. Stessa scelta IPv6/IPv4 e stesso avviso NAT della DCC chat qui sopra.

Sticker e immagini nei canali IRC. Mandare uno sticker/immagine salvata mentre è attiva una finestra di CANALE (non una query privata, che usa invece la dcc send normale) passa da un meccanismo diverso, apposta: la vera DCC è sempre 1-a-1, non può "trasmettersi" a un intero canale - non lo fa nemmeno il vero mIRC, è un limite del protocollo, non una mancanza di Yoake. Qui invece Yoake manda un solo CTCP di annuncio (invenzione nostra, non un sottotipo DCC reale) al canale, con un id di sessione, indirizzo, porta, nome file e dimensione: il server IRC lo ritrasmette da solo a tutti dentro, gratis, come un normale messaggio al canale. Un client IRC vero che non è Yoake lo ignora in silenzio, come qualunque altro CTCP che non riconosce - non vede mai l'immagine. Ogni Yoake nel canale che invece lo riconosce si collega DIRETTAMENTE al mittente (i byte dell'immagine non passano mai dal server) e la scarica da solo, senza bisogno di un "accetta": compare nel canale come un normale sticker, esattamente come su Telegram/WhatsApp. Limite di dimensione: 200KB - oltre viene rifiutata con un avviso invece di mandarla comunque o floodare il canale.

Limiti noti: non c'è modo di accettare/scaricare un'offerta DCC SEND in arrivo da un altro client (un "/dcc get" per un file offerto da altri) - solo l'invio è implementato. Su IPv4 (quando la macchina non ha un indirizzo IPv6 pubblico) una DCC fra due reti diverse fallisce spesso dietro NAT/CGNAT (tipico delle connessioni mobili), a meno di aver configurato a mano l'inoltro di una porta sul router - non è un bug di Yoake, è un limite di come funziona una connessione diretta socket-a-socket senza un server relay in mezzo.

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.

Programmi esterni

ComandoCosa fa
run <programma> [argomenti...]Avvia un programma esterno - torna subito, non aspetta che finisca né blocca l'interfaccia (documentazione ufficiale mIRC). Un argomento tra virgolette resta un unico argomento anche se contiene spazi (es. un prompt). Quando il programma termina, scatta on run con l'output catturato.
Diverso dal vero mIRC: il /run originale NON restituisce mai l'output del programma (verificato sui forum ufficiali) - è solo "avvia il programma". Qui invece l'output (testo e codice di uscita) viene catturato e reso disponibile allo script tramite on run (vedi Eventi disponibili) e gli identificatori $runoutput/$runerror/ $runcode (vedi Identificatori e funzioni) - pensato per poter interrogare da script un programma a riga di comando (es. una IA installata come CLI locale). Un solo "ultimo run" globale: se lanci più /run insieme senza aspettare che il primo finisca, non c'è modo di sapere quale processo ha appena terminato - va bene lanciandone uno alla volta.

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).