From d5c994fb8173ccfafd352f28c7ad78762036198f Mon Sep 17 00:00:00 2001 From: Juhani Haverinen Date: Sun, 7 Jul 2013 15:43:33 +0300 Subject: [PATCH] Added console command handling to botcmd.py and used that to save messages on quit --- .gitignore | 1 + botcmd.py | 28 ++++++++++++++++++++++++++-- botcmd.pyc | Bin 2550 -> 3459 bytes ircbot.py | 4 +++- 4 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a5414f3 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +msgs.txt diff --git a/botcmd.py b/botcmd.py index b1c158c..95cae81 100644 --- a/botcmd.py +++ b/botcmd.py @@ -1,6 +1,8 @@ import eliza import threading +concmd=['/q'] + doctor=eliza.eliza() opnicks=['nortti','nortti_','shikhin','shikhin_','shikhin__','sortiecat','martinFTW','graphitemaster','XgF','sprocklem'] opchans=['#osdev-offtopic'] @@ -11,6 +13,19 @@ autoops={} msgs={} msglock=threading.Lock() +msglock.acquire() +f=open('msgs.txt','r') +for line in f: + while len(line)>0 and line[-1]=='\n': line=line[:-1] + if len(line)>0: + receiver,sender,msg=line.split('\t') + if receiver not in msgs: + msgs[receiver]=[] + msgs[receiver].append((sender,msg)) +f.close() +msglock.release() + + def parse((line,irc)): line=line.split(' ') nick=line[0].split('!')[0][1:] @@ -33,7 +48,6 @@ def parse((line,irc)): msgs[line[4]]=[] msgs[line[4]].append((nick,' '.join(line[5:]))) msglock.release() - irc.send('PRIVMSG %s :Sent'%chan) else: irc.send('PRIVMSG %s :Usage: #msg nick message'%chan) elif line[3]==':#readmsg': @@ -57,5 +71,15 @@ def parse((line,irc)): msglock.acquire() if (line[1]=='PRIVMSG' or line[1]=='JOIN') and nick in msgs: - irc.send('PRIVMSG %s :You have unread messages, read them with #readmsg'%chan) + irc.send('PRIVMSG %s :%s: You have unread messages, read them with #readmsg'%(chan,nick)) msglock.release() + +def execcmd(cmdline): + if cmdline[0]=='/q': + msglock.acquire() + f=open('msgs.txt','w') + for receiver in msgs: + for sender, msg in msgs[receiver]: + f.write('%s\t%s\t%s\n'%(receiver,sender,msg)) + f.close() + msglock.release() diff --git a/botcmd.pyc b/botcmd.pyc index 2a9d332a82e122df13458e4e79bc8b8b7da8c70e..45ca5cbbddf7015d8652736915ec880ae4458aaa 100644 GIT binary patch literal 3459 zcmbVO&2Jmm5udj!Q6eqs+m@IQdu>_?ld7WN7CA6V5JPfWr?uVEZqyPH3}*LvW`H?zAW%>+G!BA;gF&6}Aw^Lz82 z{l9W)rTy?`Ek&M19S|02q8`y_P_W6vcZR%K@(Se5 zkvC6Xk-QRlm&jY7PKjEWEz81L^0A~q!%fmNba1pxtvS-Oqzk0yXz#Q`hpaF!YDLnD zdL{94iS#AvEikQgnY=~vmgqB!T8lLNJLyH(`hr?ZG~6YiUTuv`wPp z#D?h4o%d5CQ5?D_eLXNskXA$E=_kJokB^fu@?FC|2c~0ol3|hnFchP12!qLzj767e z4u_GokDvJt_Ronvvgkt5g+=EmuK*3nf&?t^Rbi1W^#cQ7UAwSlY8D(z3R1;Kxh%k} zO&2r5&tQH|=KpE2xq0xY7^?mcI=83?QHjn0M|c+h!00u2N5QU0#h%&uvISX23Q2(o zlTc+t-{gkM>~}*}J-3EmD_#g|2S*!pF*~6&n<;%uho@uni(>4i%A#80sHQ^ze&O(6 z6CnV>K=gB!%usJufRuWz04I#gQ^qCeOv>0CbCup4hdkcQ;vrT`e4uh3k z;qu7sL{Q_@U6BAD=Rt0av?tOF*mzqK64s?|uZmlQTB060(-Z;_>nNCKcJQAOoUVzt zrr_d7=yWC~F9B=UCwRsl!bkulWagQj05E{a3RU0>$mH5Svxj>G4W7vKD+fngbTOaj z;s%|A9#4;uTD2KY!F!`XtC>Y49%noCi9~~jq>}MzD#p-dfV_aE(FrnN$(ET8|_EI3B={~HzhLe9^T7)AlLdferHwT}4obXj?Xn$zl{qWwy-}u~y z3^%?;RlD8LaHq=VoGs%twv0c+Dm*l*VPvjMDBSnmlZQHf;xumW?>lBzbWH4;`h*f& z=_W~J8ufa|Pr7Fx@3`Th{=wND{o8gu41( zgGYDw@1$wS3nI4*YGTSzxcA`T4%hM*Aur)Ve(>P#eRKOKOpdZLm6B~oGL&@nzPaB~tmQ?c_4K7?nb}-FA>l+5;{AcqiGNj}S!^MyytYJ(9t^0jk~& z2fE%n!;D|YqoAkV#Ej2K9Y@6-cstQ2lBuX28~rMlnGZ48R8&jqWpz_6J@bz8fDQ~S8u6z)SIfJ-cZ|ES;F{|a=CeMSvXhnviKYX zUKVKT{6^r;`Zr4OM8(C82O~0s7X_Lz9*lTr4EG7iJUDur-yp+V%%Gd0@1|E({+Q^= zn-()@d+4L1+u=6u@m)GZPtLAjc2p2Y=zbpeJUIeBVxsIB_v81{Q$gdFDayB0$6|2BCM>*Y9$$h9g-}3s%uu0Mv`BfV3=PEI?Mm0Vu02S_Jer0q?T9 KigcCi;_eTr_OAB; delta 1013 zcmZuw&ubG=5T1E&cau#wx^1>;VuSse8leXdDpD&Hs?^`ujaUc>w%u*Wrlw7H#n3F| zP(4b~cktjzJP2MzJb3UA@E_<^Jb4zpc+h#9ZCa#D_U+8PnQy-L&CBlS@609sE1g>0 z++SXY_({=sfnL8$i$gzzO@Io33*Z6ll8xZ7mp2Rdt0|~3a15v-R5;XVOM!L{Tn1Mk znov=}<=`sdsxaTQVMQirQCb3=G(00WDe=pt6V$8rm!7-gJ-*JYBl&v#F4EWkDxR=9 zz7pTrMeK+izo6`~_9wB-i{w7#Q{4^^iB=NwjtO-JtmACB0mugm z)DzIEVikbwI6B`r>g7EZLN3X9EXo*!F@oA)5)eZM9$^hZs6bW*nsa+B4rUI6hn%d4 z(=;PU*Q0$1Q?X zELUDCpNuj)ygd(rE?%gk-6;r@QAS)yiuM#V_)3!)Ec6*n$F)+kfrA4m(xymWYS=$e zT82jCAZUnkp7I0`JKOrg4~IZ@Pmy9@IRcyp7zZ$>F(XLZ#=kD zUK%g@<8x)V5qvzKSVQy5e>>ts@|q>Du`loK)>dO}D+p?{_DR9@Ni@WaUdkx6^VqNY zfkwva_O{z_#B+ULGi2Fqv7RbsOdP}#TFgQd4J_aUv&7rfaAp=u5;st3aW`u_tM)0e nV-&Il8I=E)nths9dqgfJ@yD>ULu4Avz-iP`!!(|tRb&4E5Qn;h diff --git a/ircbot.py b/ircbot.py index 199fadd..8c70f18 100644 --- a/ircbot.py +++ b/ircbot.py @@ -89,6 +89,8 @@ class Keyhandler(threading.Thread): while True: line=raw_input() c=line.split(' ') + if c[0] in botcmd.concmd: + botcmd.execcmd(c) if c[0]=='/j' and len(c)==2: self.outc.send('JOIN '+c[1]) elif c[0]=='/m' and len(c)>2: @@ -96,7 +98,7 @@ class Keyhandler(threading.Thread): elif c[0]=='/q' and len(c)==1: self.outc.send('QUIT') break - elif c[0][0]=='/': + elif c[0][0]=='/' and c[0] not in botcmd.concmd: self.outc.send(c[0][1:].upper()+' '+' '.join(c[1:])) class Loghandler(threading.Thread):