在过去一周左右的时间里,我尝试了很多方法来尝试让它发挥作用。我已经设法让 Skype2IRC 在另一个脚本中工作,而不是垃圾邮件 IRC 或任何东西。这很好。只是在消息状态,发送消息到 IRC。那部分我可以轻松下来。但是,从 IRC 到 Skype 的部分是我遇到问题的地方。首先,我想我会尝试让它与多线程一起工作。出门不顺利。然后,我尝试了这个;
import os,sys,time,Skype4Py,socket,re,string
from random import choice
s = Skype4Py.Skype()
s.Attach() #Attach to Skype. Make sure to accept permissions from Skype client!
name = "Ibex"
network = "irc.myserver.net"
channel = "#Skype"
port = 6667
irc = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
irc.connect ( ( network, port ) )
print irc.recv ( 4096 )
irc.send ( 'NICK '+name+'\r\n' )
irc.send ( 'USER '+name+' '+name+' '+name+' : IRC Bot\r\n' )
irc.send ( 'JOIN '+channel+'\r\n' )
ircusername = '' #referencing variable so it can be used before, data will change in while loop
ircmessage = '' #same as above
def Ibex(Message, Status):
chat = Message.Chat
members = chat.MemberObjects
msg = Message.Body
send = Message.Chat.SendMessage
sAlias = Message.FromDisplayName
sUsername = Message.FromHandle
if Status == 'RECEIVED':
irc.send ( 'PRIVMSG '+channel+' :<Skype - '+sUsername+'>: '+msg+'\r\n' )
if ircusername != '':
try:
ircmessage = data.split(channel+" :",1)[1]
send("<IRC - "+ircusername+">: "+ircmessage)
except:
print "Error getting new IRC message."
s.OnMessageStatus = Ibex
while True:
data = irc.recv ( 4096 )
print data
if data.find ( 'PING' ) != -1:
irc.send ( 'PONG ' + data.split() [ 1 ] + '\r\n' )
if data.find ( 'KICK' ) != -1:
irc.send ( 'JOIN '+channel+'\r\n' )
try:
ircusername = re.search(':(.*)!', data)
ircusername = ircusername.group(1)
except:
pass
经过大量的试验和错误。而且,在 IRC 和 Skype 中有很多垃圾邮件,我设法让它将 IRC 消息发送到 Skype。但是,它是垃圾邮件。
我会在 IRC 中发送一条消息,并且不会发生任何事情。我将在 Skype 中发送一条消息(因此 s.OnMessageStatus = Ibex),它按预期发送 IRC 消息。但是,它不会停止发送它。它像疯了一样向它发送垃圾邮件。我尝试在收到消息时设置 sendMSG = True,并在发送后将 sendMSG 设置为 false,然后如果 sendMSG = true,则发送。这似乎并不顺利。
有人有什么建议吗?我只是错过了导致此错误的小东西吗?感谢任何先进的人,这已经困扰了我一段时间了。
不久前我设法让一个旧的 IRC/Skype 桥接器工作,但那个脚本早已不复存在,我不记得我是如何做到的。