-
Notifications
You must be signed in to change notification settings - Fork 0
API UO Messenger it
Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
ClassicUO • Runtime API
Crea un oggetto per messaggi di testo Telegram, Discord o Viber. Uno script può notificare la fine della raccolta o controllare una richiesta di arresto da un mittente autorizzato. La creazione non collega il bot e non invia nulla.
UO.Messenger(provider:String) -> Object
-
provider— String: "telegram", "discord" o "viber", senza distinzione fra maiuscole e minuscole. Altri valori causano un errore.
Object Messenger. Gli ID di messaggi, mittenti e chat sono sempre String; non convertirli tramite CInt/CDbl.
-
Provider() → String;Connected() → 1/0(True/False): servizio e ultimo stato di autenticazione, non una garanzia della connessione Internet attuale. -
Connect(token) → Unitautentica il bot.ConnectFromFile(path) → Unitlegge un file UTF-8 fino a 1024 byte; percorsi relativi alla cartella dello script corrente. Chiamare Disconnect prima di riconnettere. -
Disconnect() → Unitferma la ricezione locale e cancella token/cursori; consente la riconnessione.Dispose() → Unitchiude definitivamente l’oggetto. -
SendMessage(text, recipient) → String: ID del messaggio accettato. recipient è chat ID Telegram, channel ID Discord o ID abbonato Viber, come testo. Lunghezze 1..4096/2000/7000; JSON Viber ≤30000 byte. Menzioni everyone/ruoli Discord disabilitate. -
WatchChannel(channelId) → Unit: Discord, registra l’ultimo messaggio attuale e riceve i successivi.WatchChannel(channelId, afterMessageId) → Unit: parte dopo l’ID testuale indicato; "0" include la cronologia. Massimo 32 canali. -
Receive(timeoutSeconds) → Array;Receive()usa 0. Intervallo 0..20 secondi; array vuoto se non c’è testo disponibile. Telegram usa long polling, Discord interroga i canali e Viber legge la coda webhook. Una richiesta può durare 30 secondi. - MessengerMessage:
Id(),SenderId(),SenderName(),ChatId(),Text()→ String. I post dei canali Telegram possono non avere SenderId. Allegati, eventi non testuali e messaggi di bot Discord vengono omessi. -
RetryAfter() → Integer: secondi residui dopo un limite del servizio; nessuna nuova richiesta HTTP prima della scadenza. Gli invii falliti non vengono ripetuti automaticamente: potrebbero essere già consegnati. -
StartReceiver(localPort, publicHttpsUrl) → Integer: Viber, porta 1..65535; restituisce la porta locale. L’URL HTTPS pubblico deve terminare con /viber/ e inoltrare già POST a 127.0.0.1:porta/viber/ conservando corpo e firma. Registra il webhook. - Serve un token di bot. Un webhook Telegram esistente viene rifiutato senza cancellarlo. Discord richiede permessi di lettura/invio e MESSAGE_CONTENT; Viber invia agli abbonati.
- I cursori avanzano dopo la decodifica dell’intero lotto. Telegram/Discord: fino a 100 record per richiesta; ripetere Receive. Viber: HMAC-SHA256, coda di 100, deduplicazione degli ultimi 2048 ID; overflow HTTP 503. Il proxy deve fornire Content-Length; chunked rifiutato localmente.
- I token non vengono salvati nei profili, negli errori o nella cronologia degli argomenti Connect. ConnectFromFile evita anche una variabile visibile al debugger. Non pubblicare i file dei token.
- Creare dentro una procedura; massimo 32 oggetti attivi. Using/Dispose, fine, errore e Stop liberano le risorse. Chiudere Viber non elimina il webhook remoto. Il testo ricevuto non viene eseguito come codice; lo script sceglie i mittenti fidati.
CreateMessenger crea senza rete e assegna le risorse all’esecuzione corrente dello script.
CreateMessenger crea senza rete e assegna le risorse all’esecuzione corrente dello script.
Object Messenger. Gli ID di messaggi, mittenti e chat sono sempre String; non convertirli tramite CInt/CDbl.
Sorgente del progetto: external/InjectionScript/src/InjectionScript/Runtime/InjectionRuntime.cs; funzione CreateMessenger.
RequestAsync prepara JSON/intestazioni del servizio, verifica gli stati e limita la risposta a 2 MiB e la richiesta a 30 secondi; l’annullamento interrompe l’attesa.
Errori gestibili con Try/Catch; Stop resta annullamento. Un errore di invio non prova la mancata consegna.
Sorgente del progetto: external/InjectionScript/src/InjectionScript/Runtime/Messaging/MessengerClient.cs; funzione RequestAsync.
Accept verifica firma Viber e UTF-8 e accoda il testo. Receive lo passa allo script; nessun callback di script nel thread di rete.
Errori gestibili con Try/Catch; Stop resta annullamento. Un errore di invio non prova la mancata consegna.
Sorgente del progetto: external/InjectionScript/src/InjectionScript/Runtime/Messaging/ViberReceiver.cs; funzione Accept.
Le risorse si chiudono alla fine della procedura iniziale, per errore o Stop.
# Telegram: lavoro terminato
#
# Crea un oggetto per messaggi di testo Telegram, Discord o Viber. Uno script può notificare la
# fine della raccolta o controllare una richiesta di arresto da un mittente autorizzato. La
# creazione non collega il bot e non invia nulla.
#
# Object Messenger. Gli ID di messaggi, mittenti e chat sono sempre String; non convertirli
# tramite CInt/CDbl.
SUB Main()
# Inserire telegram-token.txt accanto allo script e sostituire 12345678 con il chat ID. Invia un
# avviso e restituisce l’ID testuale, non una conferma di lettura.
# Configurare il proprio bot. Esempi eseguiti con risposte di prova locali, senza destinatari
# reali.
Dim bot = UO.Messenger("telegram")
Using bot
bot.ConnectFromFile("telegram-token.txt")
Dim messageId = bot.SendMessage("Harvest finished", "12345678")
Return messageId
End Using
END SUBSpiegazione dei parametri e dell’esecuzione:
- Inserire telegram-token.txt accanto allo script e sostituire 12345678 con il chat ID. Invia un avviso e restituisce l’ID testuale, non una conferma di lettura.
- Configurare il proprio bot. Esempi eseguiti con risposte di prova locali, senza destinatari reali.
# Discord: richiesta di arresto
#
# Crea un oggetto per messaggi di testo Telegram, Discord o Viber. Uno script può notificare la
# fine della raccolta o controllare una richiesta di arresto da un mittente autorizzato. La
# creazione non collega il bot e non invia nulla.
#
# Object Messenger. Gli ID di messaggi, mittenti e chat sono sempre String; non convertirli
# tramite CInt/CDbl.
SUB Main()
# Impostare canale e mittente autorizzato. True indica la ricezione di stop da tale mittente.
# L’esempio non ferma il movimento; usare il risultato nel proprio ciclo.
# Configurare il proprio bot. Esempi eseguiti con risposte di prova locali, senza destinatari
# reali.
Dim bot = UO.Messenger("discord")
Using bot
bot.ConnectFromFile("discord-token.txt")
bot.WatchChannel("123456789012345678")
Dim messages = bot.Receive(5)
For Each message In messages
If message.SenderId() = "987654321098765432" AndAlso LCase(Trim(message.Text())) = "stop" Then
Return True
End If
Next
Return False
End Using
END SUBSpiegazione dei parametri e dell’esecuzione:
- Impostare canale e mittente autorizzato. True indica la ricezione di stop da tale mittente. L’esempio non ferma il movimento; usare il risultato nel proprio ciclo.
- Configurare il proprio bot. Esempi eseguiti con risposte di prova locali, senza destinatari reali.
# Viber: testo firmato
#
# Crea un oggetto per messaggi di testo Telegram, Discord o Viber. Uno script può notificare la
# fine della raccolta o controllare una richiesta di arresto da un mittente autorizzato. La
# creazione non collega il bot e non invia nulla.
#
# Object Messenger. Gli ID di messaggi, mittenti e chat sono sempre String; non convertirli
# tramite CInt/CDbl.
SUB Main()
# Accanto allo script: viber-token.txt e viber-settings.json con
# {"port":8787,"publicUrl":"https://YOUR-HOST/viber/"}. Configurare il proxy HTTPS e sostituire
# trusted-subscriber-id. Restituisce testo o stringa vuota.
# Configurare il proprio bot. Esempi eseguiti con risposte di prova locali, senza destinatari
# reali.
Dim settings = JsonLoad("viber-settings.json")
Dim bot = UO.Messenger("viber")
Using bot
bot.ConnectFromFile("viber-token.txt")
bot.StartReceiver(settings["port"], settings["publicUrl"])
Dim messages = bot.Receive(5)
For Each message In messages
If message.SenderId() = "trusted-subscriber-id" Then
Return message.Text()
End If
Next
Return ""
End Using
END SUBSpiegazione dei parametri e dell’esecuzione:
- Accanto allo script: viber-token.txt e viber-settings.json con {"port":8787,"publicUrl":"https://YOUR-HOST/viber/"}. Configurare il proxy HTTPS e sostituire trusted-subscriber-id. Restituisce testo o stringa vuota.
- Configurare il proprio bot. Esempi eseguiti con risposte di prova locali, senza destinatari reali.
ClassicUO
Bad Newbie & Basic IDE
Найти в справочнике
Клиент и скрипты
Каталоги значений
Разработка и помощь