私はこれを機能させるために、先週かそこらで非常に多くの方法を試しました。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 ブリッジを動作させることができましたが、そのスクリプトはとうの昔になくなっており、どのように実行したか正確には思い出せません。