Python寫的Msn機器人

Python寫的Msn機器人



[Copy to clipboard] [ - ]
CODE:
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import msnp
import time
import string
  
def mytrim(zstr):
  ystr=zstr.lstrip()
  ystr=ystr.rstrip()
  ystr=ystr.strip()
  return ystr
  
  
def findstr(fstr):
  if fstr=="":
    return ""
  
  
  fstr=mytrim(fstr)
  fstr=fstr.lower()
  
  j=0
  try:
    mystr=""
    fd=file("talk.txt",'r')
    m=fd.readlines()
    k=0
    while k<len (m):
      aa=string.split(m[k].strip("\n"),'|=>|')
      if len(aa) ==0:
        break;
      
      if aa[0].lower()==fstr:
        mystr=aa[1]
mystr=mystr.decode('gb18030').encode('utf-8')
        break;
      
      k=k+1
     
    fd.close()
    return mystr
  except Exception:
    print 'no file or error'
    return ""
  
  
#print me
  
#text='我們'
  
  
class MsnChatListener(msnp.ChatCallbacks):
    def message_received(self, passport_id, display_name, text, charset):
textx=text.decode('utf-8').encode('gb18030')

        #print 'textx:'+textx
        sss=findstr(textx)
        #print 'sss:'+sss
        if sss=='':  
          #print '%s: %s' % (passport_id, textx)
  wo="這是什麼意思?"
  wo=wo.decode('gb18030').encode('utf-8')
  
  sss='{ '+text+' } '+wo
         
        self.chat.send_message(sss, charset)
  
class MsnListener(msnp.SessionCallbacks):
    def chat_started(self, chat):
        callbacks = MsnChatListener()
        chat.callbacks = callbacks
        callbacks.chat = chat
  
while True:
    try:
      msn = msnp.Session(MsnListener()) #MsnListener裡面是回調函數
      msn.login('xxxx@live.cn', '123456789') # 申請的msn賬號和密碼
      msn.sync_friend_list()
      while True:
        try:
          msn.process(chats = True)
          time.sleep(1)
        except msnp.error.Error, e:
#217 錯誤表示對方不在線,由於這個包判斷好友狀態不太準,所以我們不能先判斷好友是否在線,然後再發消息,我的做法是不管在線離線,統統啟動會話,如果對方不在線,MSN服務器會發217錯誤,msnp包會拋異常,不管就好了。其他的異常沒有處理,出現了之後跳出內部循環,重新登陸。
          if e.code == 217:  
            print 'msn.process error', e.code, e.message
            pass
          else:
            print 'msn.process error', e.code, e.message
            break
    except:
      pass
  

mystr=aa[1]
mystr=mystr.decode('gb18030').encode('utf-8')


編譯時候卡在這兩行請問一下是什麼原因?

File "msnp.py", line 35
    mystr=mystr.decode('gb18030').encode('utf-8')
    ^
IndentationError: unexpected unindent

謝謝
缩进不到位
ImportError: No module named msnp
???
今天刚刚用msnlib写了一个,还加上AIML里的英文语料库,可以用英语自动聊天。
顺便利用了某词典实现了翻译功能(我看大家都是单词释义,我干脆来一个完整翻译)
还可以查询报价。呵呵