рдмреЙрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдореБрдбрд╝ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдмреЗрд╢рдХ, рдЕрдЬрдЧрд░ рдореЗрдВ рдЖрдИрд╕реАрдХреНрдпреВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рд╢реЗрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВред рдЬреИрд╕реЗ рдХрд┐ рдкрд╛рдЗрдХ - рдЖрдЗрдХрд┐рдХ рдпрд╛ рдиреИрдиреЛрдЗрдХ ред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЯреНрд╡рд┐рд╕реНрдЯ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдерд╛, рдЗрд╕рд▓рд┐рдП рдЪреБрдирд╛рд╡ рдЙрд╕ рдкрд░ рднрд╛рд░реА рдкрдбрд╝рд╛ред
рдкрд╣рд┐рдпрд╛ рдХреЛ рд╕реБрджреГрдврд╝ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП , рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╢реЗрд░ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд▓реЗрдВ:
# UIN UIN = "" # PASS = "" # host = ( "login.icq.com" , 5238) # / icqMode = 1 # Status message AMSG = "I'm here +)" * This source code was highlighted with Source Code Highlighter .
# UIN UIN = "" # PASS = "" # host = ( "login.icq.com" , 5238) # / icqMode = 1 # Status message AMSG = "I'm here +)" * This source code was highlighted with Source Code Highlighter .
# UIN UIN = "" # PASS = "" # host = ( "login.icq.com" , 5238) # / icqMode = 1 # Status message AMSG = "I'm here +)" * This source code was highlighted with Source Code Highlighter .
# UIN UIN = "" # PASS = "" # host = ( "login.icq.com" , 5238) # / icqMode = 1 # Status message AMSG = "I'm here +)" * This source code was highlighted with Source Code Highlighter .
# UIN UIN = "" # PASS = "" # host = ( "login.icq.com" , 5238) # / icqMode = 1 # Status message AMSG = "I'm here +)" * This source code was highlighted with Source Code Highlighter .
# UIN UIN = "" # PASS = "" # host = ( "login.icq.com" , 5238) # / icqMode = 1 # Status message AMSG = "I'm here +)" * This source code was highlighted with Source Code Highlighter .
# UIN UIN = "" # PASS = "" # host = ( "login.icq.com" , 5238) # / icqMode = 1 # Status message AMSG = "I'm here +)" * This source code was highlighted with Source Code Highlighter .
# UIN UIN = "" # PASS = "" # host = ( "login.icq.com" , 5238) # / icqMode = 1 # Status message AMSG = "I'm here +)" * This source code was highlighted with Source Code Highlighter .
# UIN UIN = "" # PASS = "" # host = ( "login.icq.com" , 5238) # / icqMode = 1 # Status message AMSG = "I'm here +)" * This source code was highlighted with Source Code Highlighter .
рдпрд╣рд╛рдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рднрд╛рдЧ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
- twisted.words.protocols рд╕реЗ рдСрд╕реНрдХрд░ рдЖрдпрд╛рдд рдХрд░реЗрдВ
- Twisted.internet рдЖрдпрд╛рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рд░рд┐рдПрдХреНрдЯрд░ рд╕реЗ
- рдЖрдпрд╛рдд рдлреАрдбрд░
- рдЖрдпрд╛рдд urllib2 # рдХреГрдкрдпрд╛ рдЕрднреА рддрдХ рдЗрд╕рд╕реЗ рдкрд░реЗрд╢рд╛рди рди рд╣реЛрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реИ, рдореИрдВ рдЖрдкрдХреЛ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдмрддрд╛рдКрдВрдЧрд╛
рд╣рдореЗрдВ рд╣рдм рдХреЗ рдЖрд░рдПрд╕ рдЯреЗрдк рдХреЛ рдЦреАрдВрдЪрдиреЗ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреАрдбрдкреИрд╕рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдм рдмреЙрдЯ рд╣реАред рдпрд╣рд╛рдБ, рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ ...
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
- # рдХреНрд▓рд╛рд╕ рдмреЙрдЯ
- рд╡рд░реНрдЧ рдмреЙрдЯ (рдСрд╕реНрдХрд░ред BOSConnection):
- рдХреНрд╖рдорддрд╛рдУрдВ = [рдСрд╕реНрдХрд░ред CAP_CHAT]
- initDone (self) рдХреЛ рд╣рд░рд╛рдпрд╛:
- рдкреНрд░рд┐рдВрдЯ "рдХрдиреЗрдХреНрдЯ" , рдпреВрдЖрдИрдПрди, "рд╕рд░реНрд╡рд░ рд╕реЗ" , рдореЗрдЬрдмрд╛рди [0], рдореЗрдЬрдмрд╛рди [1]
- self.requestSelfInfo ()ред AddCallback (self.gotSelfInfo)
- рд╕реЗрд▓реНрдлрдХреНрд╡реЗрд╕реНрдЯрдПрд╕рдПрд╕рдЖрдИ ()ред рдПрдбрдмреИрдХрдмреИрдХ (рд╕реНрд╡.рдЧреЙрдЯрдмреЙрдбреА рд▓рд▓рд┐рд╕реНрдЯ)
- self.setAway (AMSG)
- рдорд┐рд▓ рдЧрдпрд╛ gotSInInfo (рд╕реНрд╡рдпрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛):
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВред
- self.name = user.name
- рдбреАрдПрдб рдмреНрдпреВрдбрд▓реАрд╕реНрдЯрд┐рд╕реНрдЯ (рд╕реЗрд▓реНрдл, рдПрд▓):
- рдкреНрд░рд┐рдВрдЯ рдПрд▓
- рд╕реНрд╡.рдкреНрд░рддрд┐рдкрд╛рджрд┐ ()
- self.setProfile ( "" "ICQBot" "" )
- self.setIdleTime (0)
- рд╕реНрд╡рдпрдВред
- рдорд┐рд▓ рдЧрдпрд╛ рдЧреЗрдЯрд╡реЗ (рд╕реНрд╡рдпрдВ, рджреВрд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛):
- рдЕрдЧрд░ рджреВрд░:
- "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛" , рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, ":" , рджреВрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ
рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдмрд╕реЗ рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЗрдирдХрдорд┐рдВрдЧ рд╕рдВрджреЗрд╢ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг:
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
- рдбреАрдИрдПрдо рдореЗрд╕реЗрдЬреЗрдЬрд╝ (рд╕реНрд╡, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдорд▓реНрдЯреАрдкрд╛рд░реНрдЯреНрд╕, рдЭрдВрдбреЗ):
- "\ n <From:" , user.name рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ
- "<рд╕рдВрджреЗрд╢:" рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ, рдорд▓реНрдЯреАрдкрд╛рд░реНрдЯреНрд╕ [0] [0] .рдбреЙрд╕реНрдХреЛрдк ( 'cp1251' )
- рдХрдорд╛рдВрдб = рдорд▓реНрдЯреАрдкрд╛рд░реНрдЯреНрд╕ [0] [0] .lower ()ред рд╕реНрдкреНрд▓рд┐рдЯ ( '' ) # рд╕рдВрджреЗрд╢ рдХреЛ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ
- PREF_C = "!" # рд╣рдорд╛рд░реЗ рд╕рд╛рде рдЯреАрдо рд╢реБрд░реВ рд╣реЛрдЧреА!
рдкрд╣рд▓реА рдЯреАрдо рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реЛрдЧреА! рд╣рдмрд░, рд▓реЗрдХрд┐рди рдЫреЛрдЯреЗ рдЕрдкрд╡рд╛рдж рд╣реИрдВред рдпрджрд┐ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрдорд╛рдВрдб рд╣реИ! рд╣рдмрд░ рдПрди, рддреЛ рдЕрдВрддрд┐рдо рдПрди рдкреЛрд╕реНрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдпрджрд┐ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрдорд╛рдВрдб рд╣реИ! Habr n1 n2, рддреЛ n1 рд╕реЗ n2 рдкрджреЛрдВ (рдореЗрд░реА рдЫреЛрдЯреА рд╕реА рд╕реАрдЯреА) рддрдХред рдмреЗрд╢рдХ, рдирд┐рд╖реНрдХрд░реНрд╖ 20 рдкрджреЛрдВ рддрдХ рд╕реАрдорд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ xml рдкреГрд╖реНрда рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдареАрдХ 20 рд╣реИрдВред
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
- рдЕрдЧрд░ рдХрдорд╛рдВрдб [0] == (PREF_C + "рд╣рдмреНрд░" ):
- rss = feedparser.parse ( 'http://habrahabr.ru/rss' ) # xml рдкреЗрдЬ рдФрд░ рдкрд░реНрд╕рд┐рдо рд▓реЗрдВ
- рдлрд╝реАрдбреНрд╕ = [0,20] # рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рд╣реИ)
- рдЕрдЧрд░ рд▓реЗрди (рдХрдорд╛рдВрдб) == 2:
- рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ :
- рдлрд╝реАрдбреНрд╕ [1] = рдЗрдВрдЯ (рдХрдорд╛рдВрдб [1])
- рд╕рд┐рд╡рд╛рдп:
- рдЦрд┐рд▓рд╛рдирд╛ [рез] = реж
- рдЕрдЧрд░ рдлрд╝реАрдбреНрд╕ [1] <1: рдлрд╝реАрдбреНрд╕ [1] = рез
- рдЕрдЧрд░ рдлрд╝реАрдбреНрд╕ [1]> реиреж: рдлрд╝реАрдбреНрд╕ [рез] = реиреж
- рдПрд▓рд┐рдл рд▓реЗрди (рдХрдорд╛рдВрдб) == 3:
- рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ :
- рдлрд╝реАрдбреНрд╕ [0] = рдЗрдВрдЯ (рдХрдорд╛рдВрдб [1]) - 1
- рдлрд╝реАрдбреНрд╕ [1] = рдЗрдВрдЯ (рдХрдорд╛рдВрдб [2])
- рд╕рд┐рд╡рд╛рдп:
- рдЦрд┐рд▓рд╛рдирд╛ [реж] = реж
- рдлрд╝реАрдбреНрд╕ [1] = рез реп
- рдЕрдЧрд░ рдлрд╝реАрдбреНрд╕ [0] <0: рдлрд╝реАрдбреНрд╕ [0] = 0
- рдЕрдЧрд░ рдлрд╝реАрдбреНрд╕ [0]> 19: рдлрд╝реАрдбреНрд╕ [0] = 19
- рдЕрдЧрд░ рдлрд╝реАрдбреНрд╕ [1] <1: рдлрд╝реАрдбреНрд╕ [1] = рез
- рдЕрдЧрд░ рдлрд╝реАрдбреНрд╕ [1]> реиреж: рдлрд╝реАрдбреНрд╕ [рез] = реиреж
- рдореЗрд╕ = ''
- рд╕реАрдорд╛ рдореЗрдВ рдлрд╝реАрдб рдХреЗ рд▓рд┐рдП (рдлрд╝реАрдб [0], рдлрд╝реАрдб [1]):
- рдореЗрд╕ + = rss.entries [рдлрд╝реАрдб] .title + '\ n'
- self.sendMessage (user.name, mes)
рд╣рдмреНрд░рди рдПрди рдХрдорд╛рдВрдб рдлреАрд▓реНрдб рдПрди рдХреЗ рд╡рд┐рд╡рд░рдг рдХреНрд╖реЗрддреНрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
- рдПрд▓рд┐рдл рдХрдорд╛рдВрдб [0] == (PREF_C + "рд╣рдмреНрд░рди" ):
- rss = feedparser.parse ( 'http://habrahabr.ru/rss' )
- рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ :
- feedn = int (рдХрдорд╛рдВрдб [1]) - рез
- рд╕рд┐рд╡рд╛рдп:
- рдЦрд┐рд▓рд╛рдпрд╛ = реж
- рдЕрдЧрд░ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ <0: feedn = 0
- рдЕрдЧрд░ рдлрд╝реАрдб> 19: рдлреАрдб = 19
- self.sendMessage (user.name, rss.entries [feedn] .title + '\ n' + rss.entries [feedn] .description)ред
рдлрд┐рд░ рдореИрдВ рдЖрдпрд╛рдд urllib2 рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдерд╛ред рдХрднреА-рдХрднреА рдореБрдЭреЗ рдЕрдкрдиреЗ рдШрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдЖрдИрдкреА рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ ssh рдХреЗ рджреНрд╡рд╛рд░рд╛ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдФрд░ рд╣рд╛рдВ, рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдХреЛрдИ рдФрд░ рдЙрд╕рдХрд╛ рдкрддрд╛ рдЬрд╛рдиреЗред
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
- рдПрд▓рд┐рдл рдХрдорд╛рдВрдб [0] == (PREF_C + "ip" ) рдФрд░ user.name == '3685766 # :
- file_s = urllib2.urlopen (urllib2.Request ( 'http://api.wipmania.com/' ))
- рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ = file_s.read ()
- self.sendMessage (user.name, response.split ( "<br>" ) [0]
- f.close ()
рдпрджрд┐ рдЖрдк http://api.wipmania.com/ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ , рддреЛ рдЖрдк рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ HTML рдкреГрд╖реНрда рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рдкрд░ рд╣рдорд╛рд░рд╛ рдмрд╛рд╣рд░реА рдЖрдИрдкреА рд╣реЛрдЧрд╛ред
рдЦреИрд░, рдЕрдВрддрд┐рдо рднрд╛рдЧ:
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
- рд╡рд░реНрдЧ рдмреЙрдЯрде (рдСрд╕реНрдХрд░рдСрд╕реНрдХрд░ рдСрдереЗрдВрдЯрд┐рдХреЗрдЯрд░):
- рдмреЙрд╕рдХреНрд▓рд╛рд╕ = рдмреЙрдЯ
- рдкреНрд░реЛрдЯреЛрдХреЙрд▓ .ClientCreator (рд░рд┐рдПрдХреНрдЯрд░, рдмреЙрдЯреВрде, рдпреВрдЖрдИрдПрди, рдкрд╛рд╕, icq = icqMode) .connectTCP (* рд╣реЛрд╕реНрдЯ)ред
- reactor.run ()
рд╡рд╣ рд╕рдм рд╣реИред рдореИрдВ рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдиреЗ рдЖрдЦрд┐рд░реА рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдЖрдИрдкреА тАЛтАЛрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА ред
рдпрд╣рд╛рдБ рдкреВрд░рд╛ рдХреЛрдб рд╣реИ:
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
- # - * - рдХреЛрдбрд┐рдВрдЧ: utf-8 - * -
- # рдЖрдИрд╕реАрдХреНрдпреВ рдмреЙрдЯ
- # рдпреВрдЖрдИрдПрди
- рдпреВрдЖрдИрдПрди = "123456"
- рдкрд╛рд╕ = "рдкрд╛рд╕"
- # рд╕рд░реНрд╡рд░
- рд╣реЛрд╕реНрдЯ = ( "login.icq.com" , 5238)
- icqMode = 1
- # рд╕реНрдерд┐рддрд┐ рд╕рдВрджреЗрд╢
- AMSG = "рдореИрдВ рдпрд╣рд╛рдВ рд╣реВрдВ +)"
- twisted.words.protocols рд╕реЗ рдСрд╕реНрдХрд░ рдЖрдпрд╛рдд рдХрд░реЗрдВ
- Twisted.internet рдЖрдпрд╛рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рд░рд┐рдПрдХреНрдЯрд░ рд╕реЗ
- рдЖрдпрд╛рдд рдлреАрдбрд░
- рдЖрдпрд╛рдд urllib2
- # рдХреНрд▓рд╛рд╕ рдмреЙрдЯ
- рд╡рд░реНрдЧ рдмреЙрдЯ (рдСрд╕реНрдХрд░ред BOSConnection):
- рдХреНрд╖рдорддрд╛рдУрдВ = [рдСрд╕реНрдХрд░ред CAP_CHAT]
- initDone (self) рдХреЛ рд╣рд░рд╛рдпрд╛:
- рдкреНрд░рд┐рдВрдЯ "рдХрдиреЗрдХреНрдЯ" , рдпреВрдЖрдИрдПрди, "рд╕рд░реНрд╡рд░ рд╕реЗ" , рдореЗрдЬрдмрд╛рди [0], рдореЗрдЬрдмрд╛рди [1]
- self.requestSelfInfo ()ред AddCallback (self.gotSelfInfo)
- рд╕реЗрд▓реНрдлрдХреНрд╡реЗрд╕реНрдЯрдПрд╕рдПрд╕рдЖрдИ ()ред рдПрдбрдмреИрдХрдмреИрдХ (рд╕реНрд╡.рдЧреЙрдЯрдмреЙрдбреА рд▓рд▓рд┐рд╕реНрдЯ)
- self.setAway (AMSG)
- рдорд┐рд▓ рдЧрдпрд╛ gotSInInfo (рд╕реНрд╡рдпрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛):
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВред
- self.name = user.name
- рдбреАрдПрдб рдмреНрдпреВрдбрд▓реАрд╕реНрдЯрд┐рд╕реНрдЯ (рд╕реЗрд▓реНрдл, рдПрд▓):
- рдкреНрд░рд┐рдВрдЯ рдПрд▓
- рд╕реНрд╡.рдкреНрд░рддрд┐рдкрд╛рджрд┐ ()
- self.setProfile ( "" "ICQBot" "" )
- self.setIdleTime (0)
- рд╕реНрд╡рдпрдВред
- рдорд┐рд▓ рдЧрдпрд╛ рдЧреЗрдЯрд╡реЗ (рд╕реНрд╡рдпрдВ, рджреВрд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛):
- рдЕрдЧрд░ рджреВрд░:
- "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛" , рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, ":" , рджреВрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ
- рдбреАрдИрдПрдо рдореЗрд╕реЗрдЬреЗрдЬрд╝ (рд╕реНрд╡, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдорд▓реНрдЯреАрдкрд╛рд░реНрдЯреНрд╕, рдЭрдВрдбреЗ):
- "\ n <From:" , user.name рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ
- "<рд╕рдВрджреЗрд╢:" рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ, рдорд▓реНрдЯреАрдкрд╛рд░реНрдЯреНрд╕ [0] [0] .рдбреЙрд╕реНрдХреЛрдк ( 'cp1251' )
- рдХрдорд╛рдВрдб = рдорд▓реНрдЯреАрдкрд╛рд░реНрдЯреНрд╕ [0] [0]ред рд▓реЙрд╡рд░ ()ред рд╕реНрдкреНрд▓рд┐рдЯ ( '' )
- PREF_C = "!"
- рдЕрдЧрд░ рдХрдорд╛рдВрдб [0] == (PREF_C + "рд╣рдмреНрд░" ):
- rss = feedparser.parse ( 'http://habrahabr.ru/rss' )
- рдлрд╝реАрдбреНрд╕ = [0.20]
- рдЕрдЧрд░ рд▓реЗрди (рдХрдорд╛рдВрдб) == 2:
- рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ :
- рдлрд╝реАрдбреНрд╕ [1] = рдЗрдВрдЯ (рдХрдорд╛рдВрдб [1])
- рд╕рд┐рд╡рд╛рдп:
- рдЦрд┐рд▓рд╛рдирд╛ [рез] = реж
- рдЕрдЧрд░ рдлрд╝реАрдбреНрд╕ [1] <1: рдлрд╝реАрдбреНрд╕ [1] = рез
- рдЕрдЧрд░ рдлрд╝реАрдбреНрд╕ [1]> реиреж: рдлрд╝реАрдбреНрд╕ [рез] = реиреж
- рдПрд▓рд┐рдл рд▓реЗрди (рдХрдорд╛рдВрдб) == 3:
- рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ :
- рдлрд╝реАрдбреНрд╕ [0] = рдЗрдВрдЯ (рдХрдорд╛рдВрдб [1]) - 1
- рдлрд╝реАрдбреНрд╕ [1] = рдЗрдВрдЯ (рдХрдорд╛рдВрдб [2])
- рд╕рд┐рд╡рд╛рдп:
- рдЦрд┐рд▓рд╛рдирд╛ [реж] = реж
- рдлрд╝реАрдбреНрд╕ [1] = рез реп
- рдЕрдЧрд░ рдлрд╝реАрдбреНрд╕ [0] <0: рдлрд╝реАрдбреНрд╕ [0] = 0
- рдЕрдЧрд░ рдлрд╝реАрдбреНрд╕ [0]> 19: рдлрд╝реАрдбреНрд╕ [0] = 19
- рдЕрдЧрд░ рдлрд╝реАрдбреНрд╕ [1] <1: рдлрд╝реАрдбреНрд╕ [1] = рез
- рдЕрдЧрд░ рдлрд╝реАрдбреНрд╕ [1]> реиреж: рдлрд╝реАрдбреНрд╕ [рез] = реиреж
- рдореЗрд╕ = ''
- рд╕реАрдорд╛ рдореЗрдВ рдлрд╝реАрдб рдХреЗ рд▓рд┐рдП (рдлрд╝реАрдб [0], рдлрд╝реАрдб [1]):
- рдореЗрд╕ + = rss.entries [рдлрд╝реАрдб] .title + '\ n'
- self.sendMessage (user.name, mes)
- рдПрд▓рд┐рдл рдХрдорд╛рдВрдб [0] == (PREF_C + "рд╣рдмреНрд░рди" ):
- rss = feedparser.parse ( 'http://habrahabr.ru/rss' )
- рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ :
- feedn = int (рдХрдорд╛рдВрдб [1]) - рез
- рд╕рд┐рд╡рд╛рдп:
- рдЦрд┐рд▓рд╛рдпрд╛ = реж
- рдЕрдЧрд░ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ <0: feedn = 0
- рдЕрдЧрд░ рдлрд╝реАрдб> 19: рдлреАрдб = 19
- self.sendMessage (user.name, rss.entries [feedn] .title + '\ n' + rss.entries [feedn] .description)ред
- рдПрд▓рд┐рдл рдХрдорд╛рдВрдб [0] == (PREF_C + "ip" ) рдФрд░ user.name == '123456' :
- file_s = urllib2.urlopen (urllib2.Request ( 'http://api.wipmania.com/' ))
- рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ = file_s.read ()
- self.sendMessage (user.name, response.split ( " <br> " ) [0]
- f.close ()
- рд╡рд░реНрдЧ рдмреЙрдЯрде (рдСрд╕реНрдХрд░рдСрд╕реНрдХрд░ рдСрдереЗрдВрдЯрд┐рдХреЗрдЯрд░):
- рдмреЙрд╕рдХреНрд▓рд╛рд╕ = рдмреЙрдЯ
- рдкреНрд░реЛрдЯреЛрдХреЙрд▓ .ClientCreator (рд░рд┐рдПрдХреНрдЯрд░, рдмреЙрдЯреВрде, рдпреВрдЖрдИрдПрди, рдкрд╛рд╕, icq = icqMode) .connectTCP (* рд╣реЛрд╕реНрдЯ)ред
- reactor.run ()
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!