diff options
Diffstat (limited to 'chat.py')
-rw-r--r-- | chat.py | 92 |
1 files changed, 92 insertions, 0 deletions
@@ -0,0 +1,92 @@ +import time +from collections import deque +import net.mapserv as mapserv +import badge +from loggers import debuglog +from utils import extends +from textutils import preprocess as pp +from textutils import (simplify_links, remove_formatting, + replace_emotes) +pp_actions = (simplify_links, remove_formatting, replace_emotes) + +sent_whispers = deque() + +afk_message = '*AFK* I am away from keyboard' +afk_ts = 0 +chat_bots = ["guild", "_IRC_"] + + +def send_whisper(nick, message): + badge.is_afk = False + ts = time.time() + sent_whispers.append((nick, message, ts)) + mapserv.cmsg_chat_whisper(nick, message) + + +def general_chat(message): + badge.is_afk = False + mapserv.cmsg_chat_message(message) + + +@extends('smsg_whisper_response') +def send_whisper_result(data): + now = time.time() + while True: + try: + nick, msg, ts = sent_whispers.popleft() + except IndexError: + return + if now - ts < 1.0: + break + + if data.code == 0: + m = "[-> {}] {}".format(nick, pp(msg, pp_actions)) + debuglog.info(m) + else: + debuglog.warning("[error] {} is offline.".format(nick)) + + +@extends('smsg_being_chat') +def being_chat(data): + message = pp(data.message, pp_actions) + debuglog.info(message) + + +@extends('smsg_player_chat') +def player_chat(data): + message = pp(data.message, pp_actions) + debuglog.info(message) + + +@extends('smsg_whisper') +def got_whisper(data): + nick, message = data.nick, data.message + message = pp(message, pp_actions) + m = "[{} ->] {}".format(nick, message) + debuglog.info(m) + + if badge.is_afk: + if nick in chat_bots: + return + if message.startswith('!'): + return + now = time.time() + global afk_ts + if now > afk_ts + 20: + afk_ts = now + send_whisper(nick, afk_message) + badge.is_afk = True + + +@extends('smsg_party_chat') +def party_chat(data): + nick = mapserv.party_members.get(data.id, str(data.id)) + message = pp(data.message, pp_actions) + m = "[Party] {} : {}".format(nick, message) + debuglog.info(m) + + +@extends('smsg_gm_chat') +def gm_chat(data): + m = "[GM] {}".format(data.message) + debuglog.info(m) |