-
Notifications
You must be signed in to change notification settings - Fork 0
API UO Messenger es
Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
ClassicUO • Runtime API
Crea un objeto de mensajes de texto para Telegram, Discord o Viber. Un script puede avisar de que terminó la recolección o comprobar una solicitud de parada de un remitente autorizado. Crearlo no conecta el bot ni envía mensajes.
UO.Messenger(provider:String) -> Object
-
provider— String: "telegram", "discord" o "viber", sin distinguir mayúsculas. Otros valores producen un error.
Object Messenger. Los ID de mensajes, remitentes y chats siempre son String; no convertirlos mediante CInt/CDbl.
-
Provider() → String;Connected() → 1/0(True/False): servicio y último estado de autenticación, no una garantía de acceso actual a Internet. -
Connect(token) → Unitautentica el bot.ConnectFromFile(path) → Unitlee un archivo UTF-8 de hasta 1024 bytes; las rutas relativas parten de la carpeta del script actual. Usar Disconnect antes de volver a conectar. -
Disconnect() → Unitdetiene la recepción local y borra token/cursores; permite reconectar.Dispose() → Unitcierra definitivamente el objeto. -
SendMessage(text, recipient) → String: ID del mensaje aceptado. recipient es el chat ID de Telegram, channel ID de Discord o ID de suscriptor de Viber, como texto. Longitudes 1..4096/2000/7000; JSON Viber ≤30000 bytes. No se permiten menciones everyone/roles de Discord. -
WatchChannel(channelId) → Unit: Discord, guarda el último mensaje actual y recibe los posteriores.WatchChannel(channelId, afterMessageId) → Unit: empieza después de ese ID de texto; "0" incluye historial. Hasta 32 canales. -
Receive(timeoutSeconds) → Array;Receive()usa 0. Intervalo 0..20 segundos; array vacío si no hay texto disponible. Telegram usa long polling, Discord consulta canales y Viber lee su cola webhook. Una petición de red puede tardar 30 segundos. - MessengerMessage ofrece
Id(),SenderId(),SenderName(),ChatId(),Text()→ String. Las publicaciones de canales Telegram pueden carecer de SenderId. Se omiten adjuntos, eventos sin texto y mensajes de bots Discord. -
RetryAfter() → Integer: segundos restantes tras un límite del servicio; hasta entonces no se hacen más peticiones HTTP. Los envíos fallidos no se repiten automáticamente porque podrían haberse entregado. -
StartReceiver(localPort, publicHttpsUrl) → Integer: Viber, puerto 1..65535; devuelve el puerto local. La URL HTTPS pública debe acabar en /viber/ y reenviar previamente los POST a 127.0.0.1:puerto/viber/ conservando cuerpo y firma. Registra el webhook. - Se necesita un token de bot. Un webhook existente de Telegram se rechaza sin eliminarlo. Discord requiere permisos de lectura/envío y MESSAGE_CONTENT; Viber envía a suscriptores.
- Los cursores avanzan tras decodificar todo el lote. Telegram/Discord: hasta 100 registros por petición; llamar Receive de nuevo. Viber: HMAC-SHA256, cola de 100, deduplicación de los últimos 2048 ID; desbordamiento HTTP 503. El proxy debe enviar Content-Length; chunked se rechaza localmente.
- Los tokens no se guardan en perfiles, errores ni historial de argumentos Connect. ConnectFromFile también evita una variable visible al depurador. No publicar archivos de tokens.
- Crear dentro de una rutina; máximo 32 objetos activos. Using/Dispose, fin, error y Stop liberan recursos. Cerrar Viber no elimina el webhook remoto. El texto recibido nunca se ejecuta como código; el script define los remitentes de confianza.
CreateMessenger crea sin acceso a la red y asigna los recursos a esta ejecución del script.
CreateMessenger crea sin acceso a la red y asigna los recursos a esta ejecución del script.
Object Messenger. Los ID de mensajes, remitentes y chats siempre son String; no convertirlos mediante CInt/CDbl.
Código del proyecto: external/InjectionScript/src/InjectionScript/Runtime/InjectionRuntime.cs; función CreateMessenger.
RequestAsync construye JSON/cabeceras del servicio, comprueba estados y limita la respuesta a 2 MiB y la petición a 30 segundos; la cancelación interrumpe la espera.
Errores capturables con Try/Catch; Stop sigue siendo cancelación. Un error de envío no demuestra que no se entregó.
Código del proyecto: external/InjectionScript/src/InjectionScript/Runtime/Messaging/MessengerClient.cs; función RequestAsync.
Accept verifica firma Viber y UTF-8, y encola el texto. Receive lo entrega al script; ningún callback del script corre en el hilo de red.
Errores capturables con Try/Catch; Stop sigue siendo cancelación. Un error de envío no demuestra que no se entregó.
Código del proyecto: external/InjectionScript/src/InjectionScript/Runtime/Messaging/ViberReceiver.cs; función Accept.
Los recursos se cierran al terminar la rutina inicial, ante error y Stop.
# Telegram: trabajo terminado
#
# Crea un objeto de mensajes de texto para Telegram, Discord o Viber. Un script puede avisar de
# que terminó la recolección o comprobar una solicitud de parada de un remitente autorizado.
# Crearlo no conecta el bot ni envía mensajes.
#
# Object Messenger. Los ID de mensajes, remitentes y chats siempre son String; no convertirlos
# mediante CInt/CDbl.
SUB Main()
# Poner telegram-token.txt junto al script y sustituir 12345678 por el chat ID. Envía un aviso y
# devuelve su ID de texto, no una confirmación de lectura.
# Configurar un bot propio. Ejemplos ejecutados con respuestas locales de prueba, sin
# destinatarios reales.
Dim bot = UO.Messenger("telegram")
Using bot
bot.ConnectFromFile("telegram-token.txt")
Dim messageId = bot.SendMessage("Harvest finished", "12345678")
Return messageId
End Using
END SUBExplicación de los parámetros y la ejecución:
- Poner telegram-token.txt junto al script y sustituir 12345678 por el chat ID. Envía un aviso y devuelve su ID de texto, no una confirmación de lectura.
- Configurar un bot propio. Ejemplos ejecutados con respuestas locales de prueba, sin destinatarios reales.
# Discord: solicitud de parada
#
# Crea un objeto de mensajes de texto para Telegram, Discord o Viber. Un script puede avisar de
# que terminó la recolección o comprobar una solicitud de parada de un remitente autorizado.
# Crearlo no conecta el bot ni envía mensajes.
#
# Object Messenger. Los ID de mensajes, remitentes y chats siempre son String; no convertirlos
# mediante CInt/CDbl.
SUB Main()
# Indicar canal y remitente autorizado. True significa que llegó stop de ese remitente. El
# ejemplo no detiene el movimiento: usar el resultado en el bucle propio.
# Configurar un bot propio. Ejemplos ejecutados con respuestas locales de prueba, sin
# destinatarios reales.
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 SUBExplicación de los parámetros y la ejecución:
- Indicar canal y remitente autorizado. True significa que llegó stop de ese remitente. El ejemplo no detiene el movimiento: usar el resultado en el bucle propio.
- Configurar un bot propio. Ejemplos ejecutados con respuestas locales de prueba, sin destinatarios reales.
# Viber: texto firmado
#
# Crea un objeto de mensajes de texto para Telegram, Discord o Viber. Un script puede avisar de
# que terminó la recolección o comprobar una solicitud de parada de un remitente autorizado.
# Crearlo no conecta el bot ni envía mensajes.
#
# Object Messenger. Los ID de mensajes, remitentes y chats siempre son String; no convertirlos
# mediante CInt/CDbl.
SUB Main()
# Junto al script: viber-token.txt y viber-settings.json con
# {"port":8787,"publicUrl":"https://YOUR-HOST/viber/"}. Configurar proxy HTTPS y sustituir
# trusted-subscriber-id. Devuelve texto o cadena vacía.
# Configurar un bot propio. Ejemplos ejecutados con respuestas locales de prueba, sin
# destinatarios reales.
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 SUBExplicación de los parámetros y la ejecución:
- Junto al script: viber-token.txt y viber-settings.json con {"port":8787,"publicUrl":"https://YOUR-HOST/viber/"}. Configurar proxy HTTPS y sustituir trusted-subscriber-id. Devuelve texto o cadena vacía.
- Configurar un bot propio. Ejemplos ejecutados con respuestas locales de prueba, sin destinatarios reales.
ClassicUO
Bad Newbie & Basic IDE
Найти в справочнике
Клиент и скрипты
Каталоги значений
Разработка и помощь