summaryrefslogtreecommitdiff
path: root/plugins/notify.py
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/notify.py')
-rw-r--r--plugins/notify.py99
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')