47 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { writeScriptBin, python3, connectTo ? "localhost" }:
 | |
| writeScriptBin "send-message" ''
 | |
|   #!${(python3.withPackages (ps: [ ps.sleekxmpp ])).interpreter}
 | |
|   # Based on the sleekxmpp send_client example, look there for more details:
 | |
|   # https://github.com/fritzy/SleekXMPP/blob/develop/examples/send_client.py
 | |
|   import sleekxmpp
 | |
| 
 | |
|   class SendMsgBot(sleekxmpp.ClientXMPP):
 | |
|       """
 | |
|       A basic SleekXMPP bot that will log in, send a message,
 | |
|       and then log out.
 | |
|       """
 | |
|       def __init__(self, jid, password, recipient, message):
 | |
|           sleekxmpp.ClientXMPP.__init__(self, jid, password)
 | |
| 
 | |
|           self.recipient = recipient
 | |
|           self.msg = message
 | |
| 
 | |
|           self.add_event_handler("session_start", self.start, threaded=True)
 | |
| 
 | |
|       def start(self, event):
 | |
|           self.send_presence()
 | |
|           self.get_roster()
 | |
| 
 | |
|           self.send_message(mto=self.recipient,
 | |
|                             mbody=self.msg,
 | |
|                             mtype='chat')
 | |
| 
 | |
|           self.disconnect(wait=True)
 | |
| 
 | |
| 
 | |
|   if __name__ == '__main__':
 | |
|       xmpp = SendMsgBot("cthon98@example.com", "nothunter2", "azurediamond@example.com", "hey, if you type in your pw, it will show as stars")
 | |
|       xmpp.register_plugin('xep_0030') # Service Discovery
 | |
|       xmpp.register_plugin('xep_0199') # XMPP Ping
 | |
| 
 | |
|       # TODO: verify certificate
 | |
|       # If you want to verify the SSL certificates offered by a server:
 | |
|       # xmpp.ca_certs = "path/to/ca/cert"
 | |
| 
 | |
|       if xmpp.connect(('${connectTo}', 5222)):
 | |
|           xmpp.process(block=True)
 | |
|       else:
 | |
|           print("Unable to connect.")
 | |
|           sys.exit(1)
 | |
| ''
 | 
