0

このようにソケットを介してchanに接続するボットを作成しました

socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.connect((network,port))
irc = ssl.wrap_socket(socket)

次に、いくつかのアクションがトリガーされたときにメッセージを送信します。これは非常にうまく機能しますが、切り捨てられたメッセージが 1 つあり、スクリプトはエラーを返しません。このメッセージのコードは次のとおりです。

def GimmeUrlInfos(channel,message):
  link = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', message)
  response = urllib2.urlopen(link[0])
  html = BeautifulSoup(response.read())
  urlTitle = html.find('title')
  irc.send("PRIVMSG %s Link infos:" % (channel) + urlTitle.contents[0] + "\r\n" )

内部にリンクがある場合、スクリプトはメッセージを調べます。ある場合、beautifulSoup は HTML ページのタイトルを取得します。したがって、次のようなものが返されますLink infos: THis is the Title of the Webpage you give in your message

しかし、それは戻るだけです

リンク

チャンネルで。いくつかの制限または何かがありますか?

4

2 に答える 2

1

あなたの質問からはわかりにくいですが、次のようなものを送信したかったと思います。

PRIVMSG #mychannel Link infos: Title of Page\r\n

…そして実際には次のようなものしか送信しませんでした:

PRIVMSG #mychannel Link 

これについて考えられる説明の 1 つはsocket.sendSSLSocket.sendは、指定した文字列全体を必ずしも送信しないということです。そのため、送信されたバイト数が返されます。文字列全体を送信できるようになるまでブロックしたい場合は、sendall代わりに使用してください。

于 2013-10-03T19:09:32.060 に答える