Handler Service - teeworlds-nats/bridge GitHub Wiki

The core processor for all incoming strings from Econ using regex pattern matching.

Default Configuration

logging: INFO
nats: NatsConfig
paths: {}  # Required field - omitting will cause panic
#  - from: tw.econ.read.*
#    regex:
#      - ".*"
#    to:
#      - tw.econ.write.{{message_thread_id}}
#    args: {}
#      # Conflicts may occur when multiple handlers consume from same path
#    queue: "handler_{{0}}" 

args: {}

Configuration Examples

Queue Processing

nats:
  server:
    - nats://127.0.0.1:4222

paths:
  - from: tw.econ.read.*
    regex:
      - "\\[chat]: \\d+:-?\\d+:(.*): (.*)"  # Teeworlds chat format
      - "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2} I chat: \\d+:-?\\d+:([^:]+): (.*)$"  # DDNet chat format
      - "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2} I chat: \\*\\*\\* '(.*?)' (.*)$"  # Player join/leave events
    to:
      - tw.tg.{{message_thread_id}}
    # https://docs.nats.io/nats-concepts/core-nats/queue
    # {{0}} represents current paths array index (0-based)
    queue: "handler_{{0}}"
    args:  # Merges with parent args
      server_name: Test

Synchronization & Logging

nats:
  server:
    - "nats://127.0.0.1:4222"

paths:
  - from: "tw.econ.read.*"
    regex:
      - "^\\d{4}-\\d{2}-\\d{2}\\s\\d{2}:\\d{2}:\\d{2}\\sI\\sserver:\\sClientId=\\d+\\srcon='(name_ban|name_unban|unmute|muteip|mip|minutes_muteip|ban_range|ban_region_range|unban_range|auth_add|auth_change|auth_remove|bans_save|unban)\\s(.*)'$"
    to:
      - "tw.econ.sync"
    args:
      # Format: [Server] Command Arguments
      message_text: "[{{server_name}}] {{0}} {{1}}"

  - from: "tw.econ.read.*"
    regex:
      - "^\\d{4}-\\d{2}-\\d{2}\\s\\d{2}:\\d{2}:\\d{2}\\sI\\sserver:\\sClientId=\\d+\\srcon='(name_ban|name_unban|unmute|muteip|mip|minutes_muteip|ban_range|ban_region_range|unban_range|bans_save|unban)\\s(.*)'$"
    to:
      - "tw.econ.sync"
      - "tw.logs"

  - from: "tw.econ.read.*"
    regex:
      - "^\\d{4}-\\d{2}-\\d{2}\\s\\d{2}:\\d{2}:\\d{2}\\sI\\sserver:\\sClientId=\\d+\\srcon='(ban\\s+\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\s+\\d+\\s+.+)'$"
    to:
      - "tw.econ.sync"
      - "tw.logs"
    args:
      message_text: "[{{server_name}}] {{0}} {{1}}"