当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 11 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : conky通过python添加irc监视
帖子发表于 : 2010-08-22 1:57 
头像

注册: 2007-11-07 17:53
帖子: 390
地址: shanghai
系统: Mac
送出感谢: 0 次
接收感谢: 1
不是很清除http://www.tudou.com/programs/view/ZwitbDHvZTk/
无聊了做的 :em03 ,目前还在改进之中 :em11
附件:
文件注释: conky+irc
Screenshot.png
Screenshot.png [ 1.41 MiB | 被浏览 1279 次 ]



响应10楼,先吧代码贴出来,供大家研究

irc的主程序
写的有些乱,如果链接成功,这时断网的话,就会死循环 :em06
代码:
#!/usr/bin/python
# coding=utf-8
# FileName: irc.py


import socket
import time
import re

roomname= '#ubuntu-cn'
network = 'irc.ubuntu.com'
botname= 'XXCscomputer'
logpath= '/home/xxc/.conky/irclog.txt'
msgfile= '/tmp/my_irc_bot_sendto.txt'
port = 6667

try:
   sendmsgfile=open('/tmp/my_irc_bot_sendto.txt')
   sendmsgb=sendmsgfile.readline()
   sendmsgfile.close()   
except:
   print '初始文件为空'

while True:
   ircsloop=True
   while ircsloop:
      try:
         irc = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
         irc.connect (( network, port))
         irc.send ( 'NICK '+botname+'\r\n' )
         irc.send ( 'USER XXC@_@ XXC@_@ XXC@_@ :XXCbot1.0beta\r\n' )
         irc.send ( ('JOIN '+roomname +'\r\n') )
#         irc.send ( 'PRIVMSG #ubuntu-cn XXC\'s傻傻的电脑来了~~~~~~我悄悄的注视着你们.....囧....\r\n' )
         ircsloop=False
      except:
         print '链接失败,10秒后重练'
         time.sleep(10)
         irc.close()
         ircsloop=True

   
   #=======
   ircsloop=True
   while ircsloop:        #登录后循环

      data=''
      sendmsg=''
      ircloop=0
      while data=='':
         irc.settimeout(2)
         print '读取远程数据'
         try:
            data = irc.recv ( 4096 )
            ircloop=0
         except:   
            ircloop=ircloop+1

#发送消息
         try:
            sendmsgfile=open('/tmp/my_irc_bot_sendto.txt')
            sendmsg=sendmsgfile.readline()
            sendmsgfile.close()      

            if len(sendmsg)>0:
               if sendmsg!=sendmsgb:
                  print '发送消息:'+sendmsg
                  sendmsgb=sendmsg
                  irc.send('PRIVMSG '+roomname+' :'+sendmsg+'\r\n')
                  logfile=open(logpath,'a')
                  logfile.write('I>:'+sendmsg)
                  logfile.close()
                  sendmsg=''
         except:
            print '获取文件数据失败'
         if ircloop>100:
            print '接受数据超时,尝试重播'
            irc.close()
            ircsloop=False
            print '关闭socket'
            break

      if ircsloop == False:
         break         #跳出登录循环,重新登录
         


      try:
         utfdata=(data).encode("UTF-8")
      except:
         utfdata=data
   
   
   
      lines = data.split('\r\n')
   #=========================响应服务器
      for line in lines:
         word_list = line.split()
         if line.find ( 'PING' ) != -1:
            irc.send ( 'PONG ' + word_list[1] + '\r\n' )
            print '主机轮询:  irc.send ( \'PONG '+word_list[1]+'\r\n'
   
   #========================
#      print 'info',utfdata
      if utfdata.find('PRIVMSG') >= 0:
#         print '收到数据,开始分析'
         if utfdata.find(roomname) >= 0:
            get_msg_from_irc=utfdata.split(roomname)[1]
            msg_send_user=utfdata.split('!')[0]
         elif utfdata.find(botname) >= 0:
            get_msg_from_irc=utfdata.split(botname)[1]
            msg_send_user=utfdata.split('!')[0]
         else:
            get_msg_from_irc=utfdata.split('PRIVMSG')[1]
            msg_send_user=utfdata.split('!')[0]
#================bot

         if msg_send_user.split(':')[1].find('xxc')>=0:
            if get_msg_from_irc.find('bot out')>=0:
               irc.send('PRIVMSG '+roomname+' :死bot:轻轻地\"抱\"走了....正如\"宝\"轻轻的来....囧....\r\n')
               irc.send('QUIT\r\n')
               irc.close()
               quit()
         else:
            if get_msg_from_irc.find('bot')>=0:
               if get_msg_from_irc.find('bot out'):
                  irc.send('PRIVMSG '+roomname+' :'+msg_send_user+'你好狠心啊~~想让我走...呜呜..臭男人..\r\n')
               irc.send('PRIVMSG '+roomname+'看到bot,出来毛个泡\r\n')

            elif get_msg_from_irc.find('XXCscomputer')>=0:
               irc.send('PRIVMSG '+roomname+'其实这只是一只死bot\r\n')
            elif get_msg_from_irc.find('有人吗')>=0:
               irc.send('PRIVMSG '+roomname+'有\r\n')
            elif get_msg_from_irc.find('在吗')>=0:
               irc.send('PRIVMSG '+roomname+'死bot给您请安了~~~\r\n')


#===============记录
         try:
            logfile=open(logpath,'a')
            logfile.write(msg_send_user.split(':')[1]+get_msg_from_irc)
            logfile.close()
            print  "写入:"+msg_send_user.split(':')[1]+get_msg_from_irc
         except:
            print  '出错了'




消息发送sh脚本:

代码:
#!/bin/bash
msg=`zenity --entry --width=800  --timeout=200 --text='向聊天室发送消息' --title='IRC bot @_@' --name='IRC bot send MSG'`
if [ -n msg ]
then
echo "${msg}" >/tmp/my_irc_bot_sendto.txt
fi



_________________
人生来只做的两件事:
1.犯错
2.改错
只犯错不改错的是魔鬼,只改错不犯错的是上帝
总之,都不是人!!!!!!!!!!!!!
我的地盘


最后由 x007007007 编辑于 2010-08-23 11:54,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: conky通过python添加irc监视
帖子发表于 : 2010-08-22 8:11 
头像

注册: 2008-12-20 15:43
帖子: 9349
地址: 心靈深處
系统: 家14.04,公司14.04
送出感谢: 13
接收感谢: 37
:em11 ...很強大


_________________
[论坛版主行为规定]+[PITIVI簡易教程]+[CAD裝draftsight]+[酷我音乐裝kwplayer]+[ubuntu裝迅雷]
[releases.ubuntu.com]+[cdimage.ubuntu.com]+[old-releases.ubuntu.com]
[學ubuntu必須拜讀懶蝸牛"笨兔兔的故事"=viewtopic.php?f=112&t=162040][Linux明日的希望在中國]


页首
 用户资料  
 
3 楼 
 文章标题 : Re: conky通过python添加irc监视
帖子发表于 : 2010-08-22 8:19 
头像

注册: 2008-10-24 22:02
帖子: 5853
地址: 浙江
送出感谢: 0 次
接收感谢: 3
要输入的话还得切换到客户端?


_________________
http://sb.google.com/ 提问前 请在右上角搜索一下
请不要跨省追捕!水表在门外。谢谢! 大家一起twitter


页首
 用户资料  
 
4 楼 
 文章标题 : Re: conky通过python添加irc监视
帖子发表于 : 2010-08-22 9:32 
头像

注册: 2009-06-13 16:01
帖子: 1239
送出感谢: 2
接收感谢: 1
cool


页首
 用户资料  
 
5 楼 
 文章标题 : Re: conky通过python添加irc监视
帖子发表于 : 2010-08-22 10:32 
头像

注册: 2007-11-07 17:53
帖子: 390
地址: shanghai
系统: Mac
送出感谢: 0 次
接收感谢: 1
jxhow 写道:
要输入的话还得切换到客户端?


可以通过快捷键调运一个zenity对话框,快速回复 :em11 ,不过还没实现呢 :em03


_________________
人生来只做的两件事:
1.犯错
2.改错
只犯错不改错的是魔鬼,只改错不犯错的是上帝
总之,都不是人!!!!!!!!!!!!!
我的地盘


页首
 用户资料  
 
6 楼 
 文章标题 : Re: conky通过python添加irc监视
帖子发表于 : 2010-08-22 10:38 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
jxhow 写道:
要输入的话还得切换到客户端?

输入可以用快捷键调出个 zenity 窗口,然后在里面输入。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: conky通过python添加irc监视
帖子发表于 : 2010-08-22 10:39 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
x007007007 写道:
jxhow 写道:
要输入的话还得切换到客户端?


可以通过快捷键调运一个zenity对话框,快速回复 :em11 ,不过还没实现呢 :em03

靠,咱俩想到一块去了。。。


页首
 用户资料  
 
8 楼 
 文章标题 : Re: conky通过python添加irc监视
帖子发表于 : 2010-08-22 10:42 
头像

注册: 2007-11-07 17:53
帖子: 390
地址: shanghai
系统: Mac
送出感谢: 0 次
接收感谢: 1
xiooli 写道:
x007007007 写道:
jxhow 写道:
要输入的话还得切换到客户端?


可以通过快捷键调运一个zenity对话框,快速回复 :em11 ,不过还没实现呢 :em03

靠,咱俩想到一块去了。。。


就是哦~~还发到一快了 :em04


_________________
人生来只做的两件事:
1.犯错
2.改错
只犯错不改错的是魔鬼,只改错不犯错的是上帝
总之,都不是人!!!!!!!!!!!!!
我的地盘


页首
 用户资料  
 
9 楼 
 文章标题 : Re: conky通过python添加irc监视
帖子发表于 : 2010-08-22 11:22 
头像

注册: 2008-02-17 23:47
帖子: 22120
地址: 美丽富饶的那啥星球
送出感谢: 11
接收感谢: 84
智齿 :em11


_________________
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手


页首
 用户资料  
 
10 楼 
 文章标题 : Re: conky通过python添加irc监视
帖子发表于 : 2010-08-22 11:23 
头像

注册: 2008-02-17 23:47
帖子: 22120
地址: 美丽富饶的那啥星球
送出感谢: 11
接收感谢: 84
快点贴出来,大家帮你测试洒


_________________
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手


页首
 用户资料  
 
11 楼 
 文章标题 : Re: conky通过python添加irc监视
帖子发表于 : 2010-08-22 13:21 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
这才叫蛋痛吧。
开销,比开一个irssi,估计都大。


_________________
● 鸣学


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 11 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译