Python写的Msn机器人,几好玩的

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就应该比较安全了, 这只是想到的其中一个用途,暂时想不到其它应用.

关于无聊人

一个无聊人而已
此条目发表在python分类目录。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注