2

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

4

0 に答える 0