Example #1
0
def te_chat(work, slot, colour, text):
    no_echo = [False]
    echo_lines = []
    event_type = None
    agent = work.terraria.user

    if slot == 255:
        match = re.match(r'((?P<sn>\[\S+\])|\*(?P<an>\S+))\s*(?P<m>.*)', text)
        if match:
            event_type = 'MESSAGE' if match.group('sn') else 'ACTION'
            event_name = match.group('sn') or match.group('an')
            event_text = match.group('m')
    else:
        event_type = 'MESSAGE'
        event_name = work.terraria_protocol.players.get(slot, slot)
        event_text = text

    if event_type is not None:
        reply = bridge.substitute_reply(
            context       = work.terraria.name,
            local_name    = event_name,
            msg_local     = lambda m: terraria_protocol.chat(work, strip_codes(m)),
            msg_bridge    = lambda m: echo_lines.append('<%s> %s' % (agent, m)),
            cancel_bridge = lambda: operator.setitem(no_echo, 0, True))
        yield util.msign(ab_mode, ('BRIDGE', event_type), ab_mode,
            event_name, work.terraria.name, event_text, reply)

    if not no_echo[0] and slot != work.terraria_protocol.slot:
        if slot != 255:
            text = '<%s> %s' % (name, text)
        echo_lines.insert(0, text)

    for line in echo_lines:
        line = bridge.substitute_text(work.terraria.name, line)
        yield sign('TERRARIA', work, line)
Example #2
0
 def notice(bot, nick, user, host, target, msg):
     if target != bot.nick: return
     if ID(nick, user, host) != nickserv: return
     match = re.match(r'STATUS (?P<nick>\S+) (?P<code>\S+)', msg)
     result = int(match.group('code')) >= 3
     if result: passed.add(id)
     yield msign(mode, 'RESULT', result)
     bot.unlink('NOTICE', notice)
Example #3
0
def reconnect_work(work, version=None, delay=None):
    return util.msign(ab_mode, 'terraria.reconnect_work', work, version, delay)
Example #4
0
def te_terraria(work, msg, **kwds):
    wname = world_name(work)
    yield util.msign(ab_mode, 'TERRARIA', ab_mode,
        work.terraria.name, msg, wname, **kwds)
Example #5
0
def h_query_success_failure(work, type, key, val):
    yield util.msign(ab_mode, ('minecraft.query', work, key), (type, val))