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}}"