Что нового

[Сеть, интернет] Не могу подключиться к irc серверу

ak40u

Знающий
Сообщения
33
Репутация
7
После запуска скрипт появляется msgbox("server is not responding")
Script:
Код:
#include <IRC.au3>
Global $irc=""
Global $server = "wifa.prov.ru"
Global $port = 6667
Global $nick = "Au3Bot323"
Global $channel = "#WIFA"

TCPStartup ()
Global $sock = _IRCConnect($server, $port, $nick); Connects to IRC and Identifies its Nickname

While 1
	$recv = TCPRecv($sock, 8192); Recieve things from server
	If @error Then Exit MsgBox(1, "IRC Example", "Server has errored or disconnected"); If you can't recieve then the server must have died.
	Local $sData = StringSplit($recv, @CRLF); Splits the messages, sometimes the server groups them
	For $i = 1 To $sData[0] Step 1; Does each message seperately
		Local $sTemp = StringSplit($sData[$i], " "); Splits the message by spaces
		If $sTemp[1] = "" Then ContinueLoop; If its empty, Continue!
		If $sTemp[1] = "PING" Then _IRCPing($sTemp[2]); Checks for PING replys (There smaller then usual messages so its special!
		If $sTemp[0] <= 2 Then ContinueLoop; Useless messages for the most part
		Switch $sTemp[2]; Splits the command msg
			Case "266"; It's what I use as an indictator to show when its done sending you info.
				_IRCJoinChannel ($sock, $channel)
				_IRCSendMessage($sock, "Hello!", $channel)
				_IRCChangeMode ($sock, "+i", $nick)
		EndSwitch
	Next
WEnd

Библиотека:
Код:
;===============================================================================
;
; Description:      Connects you to a IRC Server, and gives your chosen Nick
; Parameter(s):     $server - IRC Server you wish to connect to
;                   $port - Port to connect to (Usually 6667)
;                   $nick - Nick you choose to use (You can change later)
; Requirement(s):   TCPStartup () to be run
; Return Value(s):  On Success - Socket identifer
;                   On Failure - It will exit on error
; Author(s):        Chip
; Note(s):          English only
;
;===============================================================================
Func _IRCConnect ($server, $port, $nick)
	Local $i = TCPConnect(TCPNameToIP($server), $port)
	If $i = -1 Then Exit MsgBox(1, "IRC.au3 Error", "Server " & $server & " is not responding.")
	TCPSend($i, "NICK " & $nick & @CRLF)
	TCPSend($i, "USER " & $nick & " 0 0 " & $nick &@CRLF)
	Return $i
EndFunc

;===============================================================================
;
; Description:      Joins an IRC Channel
; Parameter(s):     $irc - Socket Identifer from _IRCConnect ()
;                   $chan - Channel you wish to join
; Requirement(s):   _IRCConnect () to be run
; Return Value(s):  On Success - 1
;                   On Failure - -1 = Server disconnected.
; Author(s):        Chip
; Note(s):          English only
;
;===============================================================================
Func _IRCJoinChannel ($irc, $chan)
	If $irc = -1 Then Return 0
	TCPSend($irc, "JOIN " & $chan & @CRLF)
	If @error Then
		MsgBox(1, "IRC.au3", "Server has disconnected.")
		Return -1
	EndIf
	Return 1
EndFunc

;===============================================================================
;
; Description:      Sends a message using IRC
; Parameter(s):     $irc - Socket Identifer from _IRCConnect ()
;					$msg - Message you want to send
;                   $chan - Channel/Nick you wish to send to
; Requirement(s):   _IRCConnect () to be run
; Return Value(s):  On Success - 1
;                   On Failure - -1 = Server disconnected.
; Author(s):        Chip
; Note(s):          English only
;
;===============================================================================
Func _IRCSendMessage ($irc, $msg, $chan="")
	If $irc = -1 Then Return 0
	If $chan = "" Then
		TCPSend($irc, $msg & @CRLF)
		If @error Then
			MsgBox(1, "IRC.au3", "Server has disconnected.")
			Return -1
		EndIf
		Return 1
	EndIf
	TCPSend($irc, "PRIVMSG " & $chan & " :" & $msg & @CRLF)
		If @error Then
		MsgBox(1, "IRC.au3", "Server has disconnected.")
		Return -1
	EndIf
	Return 1
EndFunc

;===============================================================================
;
; Description:      Changes a MODE on IRC
; Parameter(s):     $irc - Socket Identifer from _IRCConnect ()
;					$mode - Mode you wish to change
;                   $chan - Channel/Nick you wish to send to
; Requirement(s):   _IRCConnect () to be run
; Return Value(s):  On Success - 1
;                   On Failure - -1 = Server disconnected.
; Author(s):        Chip
; Note(s):          English only
;
;===============================================================================
Func _IRCChangeMode ($irc, $mode, $chan="")
	If $irc = -1 Then Return 0
	If $chan = "" Then
		TCPSend($irc, "MODE " & $mode & @CRLF)
		If @error Then
		MsgBox(1, "IRC.au3", "Server has disconnected.")
		Return -1
	EndIf
	Return 1
	EndIf
	TCPSend($irc, "MODE " & $chan & " " & $mode & @CRLF)
		If @error Then
		MsgBox(1, "IRC.au3", "Server has disconnected.")
		Return -1
	EndIf
	Return 1
EndFunc

;===============================================================================
;
; Description:      Returns a PING to Server
; Parameter(s):     $irc - Socket Identifer from _IRCConnect ()
;					$ret - The end of the PING to return
; Requirement(s):   _IRCConnect () to be run
; Return Value(s):  On Success - 1
;                   On Failure - -1 = Server disconnected.
; Author(s):        Chip
; Note(s):          English only
;
;===============================================================================
Func _IRCPing($ret)
	If $ret = "" Then Return -1
	TCPSend($irc, "PONG " & $ret & @CRLF)
		If @error Then
		MsgBox(1, "IRC.au3", "Server has disconnected.")
		Return -1
	EndIf
	Return 1
EndFunc
 

kzru_hunter

Осваивающий
Сообщения
144
Репутация
49
У меня и через обычный IRC клиент не соединяет.
Этот пример с udf даже на рабочем irc сервере не работает.

Ниже - рабочие. В теме на офф. форуме нашел решение.

Пример:
Код:
#include "irc.au3"

Global $server = "campus.k26.ru"
Global $port = 6667
Global $nick = "AutoIt"
Global $channel = "#campus"

TCPStartup ()
Global $sock = _IRCConnect($server, $port, $nick); Connects to IRC and Identifies its Nickname

While 1
	$recv = TCPRecv($sock, 8192); Recieve things from server
	If @error Then Exit MsgBox(1, "IRC Example", "Server has errored or disconnected"); If you can't recieve then the server must have died.
	Local $sData = StringSplit($recv, @CRLF); Splits the messages, sometimes the server groups them
	For $i = 1 To $sData[0] Step 1; Does each message seperately
		Local $sTemp = StringSplit($sData[$i], " "); Splits the message by spaces
		If $sTemp[1] = "" Then ContinueLoop; If its empty, Continue!
		If $sTemp[1] = "PING" Then _IRCPing($sock,$sTemp[2]); Checks for PING replys (There smaller then usual messages so its special!
		If $sTemp[0] <= 2 Then ContinueLoop; Useless messages for the most part
		Switch $sTemp[2]; Splits the command msg
			Case "266"; It's what I use as an indictator to show when its done sending you info.
				_IRCJoinChannel ($sock, $channel)
				_IRCSendMessage($sock, "Hello!", $channel)
				_IRCChangeMode ($sock, "+i", $nick)
		EndSwitch
	Next
WEnd

UDF:
Код:
;===============================================================================
;
; Description:      Connects you to a IRC Server, and gives your chosen Nick
; Parameter(s):     $server - IRC Server you wish to connect to
;                   $port - Port to connect to (Usually 6667)
;                   $nick - Nick you choose to use (You can change later)
; Requirement(s):   TCPStartup () to be run
; Return Value(s):  On Success - Socket identifer
;                   On Failure - It will exit on error
; Author(s):        Chip
; Note(s):          English only
;
;===============================================================================
Func _IRCConnect($server, $port, $nick)
	Local $i = TCPConnect(TCPNameToIP($server), $port)
	If $i = -1 Then Exit MsgBox(1, "irc.au3 Error", "Server " & $server & " is not responding.")
	TCPSend($i, "NICK " & $nick & @CRLF)
	TCPSend($i, "USER " & $nick & " 0 0 " & $nick & @CRLF)
	Return $i
EndFunc   ;==>_IRCConnect

;===============================================================================
;
; Description:      Joins an IRC Channel
; Parameter(s):     $irc - Socket Identifer from _IRCConnect ()
;                   $chan - Channel you wish to join
; Requirement(s):   _IRCConnect () to be run
; Return Value(s):  On Success - 1
;                   On Failure - -1 = Server disconnected.
; Author(s):        Chip
; Note(s):          English only
;
;===============================================================================
Func _IRCJoinChannel($irc, $chan)
	If $irc = -1 Then Return 0
	TCPSend($irc, "JOIN " & $chan & @CRLF)
	If @error Then
		MsgBox(1, "irc.au3", "Server has disconnected.")
		Return -1
	EndIf
	Return 1
EndFunc   ;==>_IRCJoinChannel

;===============================================================================
;
; Description:      Sends a message using IRC
; Parameter(s):     $irc - Socket Identifer from _IRCConnect ()
;					$msg - Message you want to send
;                   $chan - Channel/Nick you wish to send to
; Requirement(s):   _IRCConnect () to be run
; Return Value(s):  On Success - 1
;                   On Failure - -1 = Server disconnected.
; Author(s):        Chip
; Note(s):          English only
;
;===============================================================================
Func _IRCSendMessage($irc, $msg, $chan = "")
	If $irc = -1 Then Return 0
	If $chan = "" Then
		TCPSend($irc, $msg & @CRLF)
		If @error Then
			MsgBox(1, "irc.au3", "Server has disconnected.")
			Return -1
		EndIf
		Return 1
	EndIf
	TCPSend($irc, "PRIVMSG " & $chan & " :" & $msg & @CRLF)
	If @error Then
		MsgBox(1, "irc.au3", "Server has disconnected.")
		Return -1
	EndIf
	Return 1
EndFunc   ;==>_IRCSendMessage

;===============================================================================
;
; Description:      Changes a MODE on IRC
; Parameter(s):     $irc - Socket Identifer from _IRCConnect ()
;					$mode - Mode you wish to change
;                   $chan - Channel/Nick you wish to send to
; Requirement(s):   _IRCConnect () to be run
; Return Value(s):  On Success - 1
;                   On Failure - -1 = Server disconnected.
; Author(s):        Chip
; Note(s):          English only
;
;===============================================================================
Func _IRCChangeMode($irc, $mode, $chan = "")
	If $irc = -1 Then Return 0
	If $chan = "" Then
		TCPSend($irc, "MODE " & $mode & @CRLF)
		If @error Then
			MsgBox(1, "irc.au3", "Server has disconnected.")
			Return -1
		EndIf
		Return 1
	EndIf
	TCPSend($irc, "MODE " & $chan & " " & $mode & @CRLF)
	If @error Then
		MsgBox(1, "irc.au3", "Server has disconnected.")
		Return -1
	EndIf
	Return 1
EndFunc   ;==>_IRCChangeMode

;===============================================================================
;
; Description:      Returns a PING to Server
; Parameter(s):     $irc - Socket Identifer from _IRCConnect ()
;					$ret - The end of the PING to return
; Requirement(s):   _IRCConnect () to be run
; Return Value(s):  On Success - 1
;                   On Failure - -1 = Server disconnected.
; Author(s):        Chip
; Note(s):          English only
;
;===============================================================================
Func _IRCPing($irc, $ret)
	If $irc = -1 Then Return 0
	If $ret = "" Then Return -1
	TCPSend($irc, "PONG " & $ret & @CRLF)
	If @error Then
		MsgBox(1, "irc.au3", "Server has disconnected.")
		Return -1
	EndIf
	Return 1
EndFunc   ;==>_IRCPing
 
Автор
A

ak40u

Знающий
Сообщения
33
Репутация
7
Появилась другая проблема, бот не хочет отправлять приватное сообщение.
_IRCSendMessage($sock, "/PRIVMSG Nickname :test ", $channel)
Сообщение такого вида у него получается обычным. а не приватным
 
Верх