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