remindme_caldav/xmpp_alert.py

54 lines
1.8 KiB
Python

import slixmpp
import humanfriendly
class SendMsgBot(slixmpp.ClientXMPP):
def __init__(self, jid, password, recipient, message):
super().__init__(jid, password)
self.recipient = recipient
self.msg = message
self.add_event_handler("session_start", self.start)
def start(self, event):
self.send_presence()
self.get_roster()
self.send_message(mto=self.recipient, mbody=self.msg, mtype='chat')
self.disconnect()
def send_xmpp(event, next_alert, next_event, config):
event_name = event["summary"]
event_description = event["description"]
event_location = event["location"]
event_date = next_event
event_delta = next_event - next_alert
total_seconds = event_delta.total_seconds()
human_readable_time = humanfriendly.format_timespan(total_seconds)
jid = config["xmpp"]["jid"]
password = config["xmpp"]["password"] # replace with your password
recipient = config["xmpp"]["recipient"]
message = """\
Hi,
This is an event alert from remindme_caldav.
Event details:
---------------------------------
Event name: {}
Date/time: {}
Description: {}
Location: {}
Time until event: {}
---------------------------------
""".format(event_name, event_date, event_description, event_location, human_readable_time)
try:
bot = SendMsgBot(jid, password, recipient, message)
bot.register_plugin('xep_0030') # Service Discovery
bot.register_plugin('xep_0199') # XMPP Ping
bot.connect()
bot.process(forever=False)
return print("Message sent via XMPP")
except Exception as e:
print("An error occured when sending alert via XMPP, please check your config. Message: {}".format(e))