import xmlrpclib import json import time import configparser import os class BitmessageAutoresponder(): config=configparser.ConfigParser() db_var=os.path.join(os.environ["HOME"],'.config/PyBitmessage/credentials.ini') config.read(db_var) apiport=config['sqlite3']['apiport'] apiinterface=config['sqlite3']['apiinterface'] apiusername=config['sqlite3']['apiusername'] apipassword=config['sqlite3']['apipassword'] api=xmlrpclib.ServerProxy("http://%s:%s@%s:%s/" % (apiusername,apipassword,apiinterface,apiport)) expire=300 def send_autorepond_inbox_message(self): """Sending Auto Message To The Recipient""" cls = self.__class__ track={} while True: inboxMessages=json.loads(self.api.getAllInboxMessages()) inbox_var=inboxMessages.get('inboxMessages') currenttime=time.time() for values in inbox_var: msgid=values.get('msgid') toaddress=values.get('fromAddress') fromaddress=values.get('toAddress') subject=values.get('subject') message=values.get('message') try: if time.time() < track[toaddress]: continue except KeyError: pass if toaddress==fromaddress: continue ackData=self.api.sendMessage(toaddress,fromaddress,subject,message) self.api.trashMessage(msgid) track[toaddress]=currenttime + cls.expire list_of_time_track=list(key for (key,value) in track.items() if value < currenttime) for t in list_of_time_track: track.pop(t) self.delete_outbox_message() time.sleep(10) def delete_outbox_message(self): print("hello sent dlt") """Deleting Messages from Outbox Having Status ackreceived or msgsentnoackexpected""" SentMessage=json.loads(self.api.getAllSentMessages()) sent_var=SentMessage.get('sentMessages') for values in sent_var: status_ack_rcvd=values.get('status') ackData=values.get('ackData') if status_ack_rcvd in ('ackreceived','msgsentnoackexpected'): self.api.trashSentMessageByAckData(ackData) if __name__ == '__main__': BitmessageAutoresponder().send_autorepond_inbox_message()