WBB Status BOT für IRC mit Winsock

BlueDog

Mitglied
Ich habe für ein Board einen IRC Channelbot geschrieben, dieser
gibt auf Anfrage im Query zb den neusten User, den neusten Post
oder Thread aus. Läuft soweit auch super, habe mir vom Boardadmin
eine php api machen lassen so das der Bot eigtl nix weiter machen
muss ausser die api abzufragen.

dies tätige ich mit folgender funktion:
Code:
Sub GetUrlData(ByVal URL, ByVal strData)
 pos1 = InStr(strData, ":")
 nickname2 = Mid(strData, pos1 + 1)
  pos1 = InStr(nickname2, "!")
  nickname2 = Left(nickname2, pos1 - 1)
    Dim SiteHTML As String
    Inet1.Cancel
    Inet1.Protocol = icHTTP
    Inet1.AccessType = icDirect
SiteHTML = Inet1.OpenURL(Trim$(URL), icString)
sckIRC.SendData "PRIVMSG " & nickname2 & " :" & SiteHTML & vbCrLf
End Sub
Code:
If strData Like "*!user*" Then
Call GetUrlData("http://server.com/api.php?get=lastuser", strData)
End If

So und nun zu meinem Problem, der Bot Gott möge ihn schützen
wenn er das noch weiter macht ^^, disconnected ca aller 135 mins
vom IRC Server ohne Grund. Mir ist gänzlich unklar woher das kommt,
es liegt auch nicht am IRC Server der Bot macht es überall auf jedem
IRC Server den ich teste.

so sieht es aus:
Code:
23:41… BotNick has joined #chan
02:00… BotNick has quit IRC (quit)

Ich habe zum testen extra einmal nur das Grundgerüst
des Bot's verwendet aber auch hier das gleiche Spiel.
Also muss der Fehler ja hier zu finden sein.
(sckIRC ist eine Winsock Control 6.0)
Code:
Option Explicit
Const SERVER = "irc.server.de"
Const PORT = 6667
Const Channel = "#chan"
Const Nick = "BotNick"
Dim Inhalt As String

Private Sub Form_Load()
sckIRC.Connect SERVER, PORT
End Sub

Private Sub sckIRC_Connect()
Dim UserName, RealName As String
UserName = Nick
RealName = Nick
sckIRC.SendData "USER " & UserName & " 0 * " & RealName & vbCrLf
sckIRC.SendData "NICK " & Nick & vbCrLf
End Sub

Private Sub sckIRC_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
sckIRC.GetData strData
DoEvents

If InStr(strData, "PING") <> 0 Then
sckIRC.SendData Replace(strData, "PING", "PONG") & vbCrLf
End If

If strData Like "*376*" Then
sckIRC.SendData "JOIN " & Channel & vbCrLf
End If

End Sub

Auch die Anwendung eines Timers würde mich hier nicht
weiterbringen, klar man könnte es über sckIRC_Close()
machen aber wie sieht das denn aus wenn der Bot aller
135 mins neu den Channel joint? oO

Jungens und Mädels bitte helft mir weiter wenn
ihr könnt ich bin am ende meines lateins :(

THX BlueDog
 
Zurück