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))