diff options
Diffstat (limited to 'plugins/notify.py')
-rw-r--r-- | plugins/notify.py | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/plugins/notify.py b/plugins/notify.py new file mode 100644 index 0000000..ace4e0b --- /dev/null +++ b/plugins/notify.py @@ -0,0 +1,99 @@ + +import os +import re +from kivy.app import App +from kivy.core.audio import SoundLoader +from plyer import notification +import net.mapserv as mapserv +from utils import extends + + +__all__ = [ 'PLUGIN', 'init', 'timeout', 'guard_words' ] + +timeout = 5000 +guard_words = ["test1", "illia", "eyepatch"] +sound = None + + +PLUGIN = { + 'name': 'notify', + 'requires': (), + 'blocks': (), + 'default_config' : { + 'notif_timeout': 7000, + 'notif_sound' : True + } +} + + +def notify(title, message, use_regex): + bNotify = False + if use_regex: + for regex in guard_words: + if regex.search(message): + bNotify = True + break + else: + bNotify = True + + if bNotify: + app = App.get_running_app() + icon = os.path.join(app.directory, app.icon) + notification.notify(title=title, message=message, + timeout=timeout, + app_name=app.get_application_name(), + app_icon=icon) + if sound is not None: + sound.play() + + +@extends('smsg_being_chat') +def being_chat(data): + app = App.get_running_app() + if app.root_window.focus: + return + + notify('General', data.message, True) + + +@extends('smsg_whisper') +def got_whisper(data): + app = App.get_running_app() + if app.root_window.focus: + return + + nick, message = data.nick, data.message + + notify(nick, message, nick == 'guild') + + +@extends('smsg_party_chat') +def party_chat(data): + app = App.get_running_app() + if app.root_window.focus: + return + + nick = mapserv.party_members.get(data.id, str(data.id)) + message = data.message + m = "{} : {}".format(nick, message) + + notify('Party', m, True) + + +def init(config): + global timeout + global sound + global guard_words + + gw = [] + for w in guard_words: + gw.append(re.compile(w, re.IGNORECASE)) + + gw.append(re.compile(config.get('Player', 'charname'), + re.IGNORECASE)) + guard_words = gw + + timeout = config.getint('notify', 'notif_timeout') + + if config.getboolean('notify', 'notif_sound'): + sound = SoundLoader.load('newmessage.wav') |