Python写的Msn机器人,几好玩的, 需要Msnp.py这个python模块, 用Python开发msn机器人程式还是很快的, 资料参考自网上.
msn.py的代码
#!/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
      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(‘[email protected]’, ‘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
在终端输入 nohup ./msn.py & 就可以在后台运作了,但要停下来的话,就先输入ps ax , 然后看见那个id 就 kill掉它
在以上脚本当前目录下建立talk.txt , 这个是对话的相对反应,你问:我们,答:怎样啊 .
内容格式
????|=>|I don’t understand
who are you|=>|I am Robot
我们|=>|怎样啊
what time is it|=>|I don’t know
who are you|=>|I am a Robot
你好|=>|你好啊
今天天气不错啊|=>|系啊
今天天气不错|=>|系啊
how are you|=>|fine thank you
电话格式|=>|电话:人名
天气不错啊|=>|系啊
天气不错|=>|系啊
你想点啊|=>|唔知想点啊
你是男还是女啊|=>|我是机器人,没性别的
用|=>|这个做分隔符号
其实在程序里加入执行命令,我想到用这个msn聊天机器人来打开或者关闭ssh , 这样ssh就应该比较安全了, 这只是想到的其中一个用途,暂时想不到其它应用.
