]>
gitweb.pimeys.fr Git - scripts-20-100.git/blob - newsbot/signe.py
5 Bot qui insulte les gens qui signent mal sur les news.
7 Codé par 20-100 le 02... ah non le 03/04/12 sur une idée de NeK
8 C'est la version 2, parce qu'en utilisant la lib python faite pour,
9 c'est quand même plus facile :D
16 from commands
import getstatusoutput
as ex
18 workingfile
="tmpfile.article"
21 if "-reallypost" in sys
.argv
:
25 if "-save" in sys
.argv
:
29 # charge le dico des derniers messages lus
30 return pickle
.load(open("dicoread.txt"))
32 def save_read(dicoread
):
33 # sauvegarde le dio des derniers messages lus
34 pickle
.dump(dicoread
,open("dicoread.txt","w"))
37 con
=nntplib
.NNTP("news.crans.org")
42 for group
in dicoread
.keys():
43 # on récupère le dernier id dans ce groupe
44 _
,_
,_
,last
,_
=con
.group(group
)
45 dicounread
[group
]=int(last
)
46 # on rajoute les infos des messages suivants
47 if int(last
)>dicoread
[group
]:
48 bla
=con
.xover(str(dicoread
[group
]),last
)[1]
51 # on enlève les doubles en filtrant sur le message-id
54 if not m
[4] in [n
[4] for n
in nodouble
]:
58 for (_
,subject
,poster
,date
,ident
,refs
,_
,_
) in newmessages
:
59 messagelines
=con
.body(ident
)[3]
60 if not "-- " in messagelines
:
61 # alors il est mal signé
62 # on a besoin des newsgroups sur lesquels il a été posté
63 # et on obéit au Followup-To
64 headers
=con
.head(ident
)[3]
65 ng
,fu2
="crans.test",None
67 if re
.match('Newsgroups',h
):
69 elif re
.match('Followup-To',h
):
73 "\n".join(messagelines
)
74 date
=time
.strptime(date
[:-6],"%a, %d %b %Y %H:%M:%S")
75 date
=time
.strftime("Le %d/%m/%Y %H:%M",date
)
76 f
=open("workingfile",'w')
78 f
.write("From: sign-bot@crans.org\r\n")
79 f
.write("Subject: %s\r\n"%(subject))
80 f
.write("References: %s %s\r\n"%(refs
,ident
))
81 f
.write("In-Reply-To: %s\r\n"%(ident))
82 f
.write("Newsgroups: %s\r\n"%(ng))
83 f
.write("Content-Type: text/plain; charset=utf-8\r\n")
84 f
.write("Content-Transfer-Encoding: 8bit\r\n\r\n")
85 f
.write("%s, %s a écrit :\r\n"%(date
,re
.sub('<.*>','',poster
)))
86 f
.write(">"+"\r\n>".join(messagelines
))
87 f
.write("\r\n\r\nPour signer, c'est\r\n[tiret][tiret][espace][entrée]\r\n[signature]\r\n-- \r\nSign-bot\r\n")
93 out
=ex("cat workingfile | nc news.crans.org nntp")
95 out
=ex("cat workingfile")[1]
100 # On enregistre les messages qu'on a maintenant traité
102 save_read(dicounread
)