Imports System
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Module Module1
Dim sock As Socket
Dim server As String
Dim channel As String
Dim nick As String
Dim cout As System.IO.TextWriter = Console.Out
Dim cin As System.IO.TextReader = Console.In
Sub Main()
cout.WriteLine("My IRC Bot")
cout.Write(vbNewLine)
cout.Write("Server name: ")
server = cin.ReadLine
cout.Write("Channel: ")
Channel = cin.ReadLine
cout.Write("Nickname: ")
nick = cin.ReadLine
Dim iph As System.Net.IPHostEntry = System.Net.Dns.GetHostEntry(server)
Dim ipe As New System.Net.IPEndPoint(iph.AddressList(0), 6667)
sock = New System.Net.Sockets.Socket(ipe.Address.AddressFamily, Net.Sockets.SocketType.Stream, Net.Sockets.ProtocolType.Tcp)
sock.Connect(ipe)
send("NICK " & nick)
send("USER " & nick & " 0 * :" & nick)
send("JOIN " & Channel)
send("MODE " & nick & " +iw")
Do While sock.Connected = True
Dim mail As String = recv()
cout.WriteLine(mail)
Loop
End Sub
Sub send(ByVal msg As String)
msg &= vbCr & vbLf
Dim data() As Byte = System.Text.ASCIIEncoding.UTF8.GetBytes(msg)
sock.Send(data, msg.Length, SocketFlags.None)
End Sub
Function recv() As String
Dim data(4096) As Byte
sock.Receive(data, 4096, SocketFlags.None)
Dim mail As String = System.Text.ASCIIEncoding.UTF8.GetString(data)
If mail.Contains(" ") Then
If mail.Substring(0, 4) = "PING" Then
Dim pserv As String = mail.Substring(mail.IndexOf(":"), mail.Length - mail.IndexOf(":"))
pserv = pserv.TrimEnd(Chr(0))
mail = "PING from " & pserv & vbNewLine & "PONG to " & pserv
send("PONG " & pserv)
ElseIf mail.Substring(mail.IndexOf(" ") + 1, 7) = "PRIVMSG" Then
Dim tmparr() As String = Nothing
mail = mail.Remove(0, 1)
tmparr = mail.Split("!")
Dim rnick As String = tmparr(0)
tmparr = mail.Split(":")
Dim rmsg As String = tmparr(1)
mail = "msg: " & rnick & ">" & rmsg
End If
End If
If mail.LastIndexOf(vbLf) > -1 Then
mail = mail.TrimEnd(Chr(0))
mail = mail.Remove(mail.LastIndexOf(vbLf), 1)
mail = mail.Remove(mail.LastIndexOf(vbCr), 1)
End If
Return mail
End Function
End Module