Created
December 14, 2012 05:16
-
-
Save stwalkerster/4282852 to your computer and use it in GitHub Desktop.
Helpmebot v3 :o Dragged out of the archives
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Module Module1 | |
#Region "constants and variables" | |
'get the connection stuff | |
Const server As String = "kubrick.freenode.net" | |
Dim client As New System.Net.Sockets.TcpClient(server, 8001) | |
Dim streamreader As New System.IO.StreamReader(client.GetStream) | |
Dim streamwriter As New System.IO.StreamWriter(client.GetStream) | |
'details reqd. for connection etc. | |
Dim chan As String | |
Dim nick As String | |
Dim pass As String | |
Const ver As String = "3.3.1.4" | |
#End Region | |
Sub connect() | |
Try | |
client.Connect(server, 8001) | |
Catch : End Try | |
streamwriter.WriteLine("USER " & nick & " * * :" & nick) | |
streamwriter.Flush() | |
streamwriter.WriteLine("NICK " & nick) | |
streamwriter.Flush() | |
writeline("IDENTIFY " & pass, "NickServ") | |
'System.Threading.Thread.Sleep(3000) | |
End Sub | |
Sub Main() | |
Console.Title = My.Application.Info.AssemblyName | |
'Console.WriteLine("Channel?") | |
chan = "##stwalkerster" 'Console.ReadLine() | |
'Console.WriteLine("Botnick?") | |
nick = "stwalkerbot" 'Console.ReadLine() | |
'Console.WriteLine("Botpass?") | |
pass = "xxxxxxxxxxxx" 'Console.ReadLine() | |
streamwriter.AutoFlush = True | |
Call connect() | |
streamwriter.WriteLine("JOIN " & chan) | |
streamwriter.Flush() | |
Dim line As String = Nothing | |
Do | |
'Try | |
readline: line = streamreader.ReadLine | |
If (Not line.Contains("@")) Or line.Contains(":" & server) Then GoTo readline | |
If line.Contains("JOIN") Or line.Contains("PART") Or line.Contains("MODE") Then GoTo readline | |
Dim nick, username, host, msgtype, channel, command, param1, param2, param3 As String | |
Call parseline(line, nick, username, host, msgtype, channel, command, param1, param2, param3) | |
If command.Length >= 5 Then | |
If command.ToLower.Substring(0, 5) = ("!link") Then | |
Try | |
Dim wikilink As String = command.Substring(command.IndexOf("[[")) | |
Dim linktext As String = wikilink.Substring(2, wikilink.IndexOf("]]") - 2) | |
writeline(nick & ": http://en.wikipedia.org/wiki/" & linktext, channel) | |
Catch ex As Exception | |
writeline(nick & ": http://en.wikipedia.org/", channel) | |
End Try | |
End If | |
End If | |
'Catch ex As Exception | |
' Try : writeline(ex.InnerException.ToString & ": " & ex.Message, chan) : Catch : End Try | |
'End Try | |
System.Threading.Thread.Sleep(500) 'flood protection | |
Loop | |
End Sub | |
Public Sub writeline_raw(ByVal msg As String) | |
Dim write As String = msg | |
streamwriter.WriteLine(write) | |
streamwriter.Flush() | |
End Sub | |
Public Sub writeline(ByVal message As String, ByVal channel As String, Optional ByVal type As String = "PRIVMSG", Optional ByVal voice As Boolean = False) | |
Dim write As String = type & " " & channel & " :" & message | |
streamwriter.WriteLine(write) | |
streamwriter.Flush() | |
Console.WriteLine(write) | |
End Sub | |
Sub parseline(ByVal line As String, ByRef nick As String, ByRef username As String, ByRef host As String, _ | |
ByRef msgtype As String, ByRef channel As String, ByRef command As String, _ | |
ByRef param1 As String, ByRef param2 As String, ByRef param3 As String) | |
':Stwalkerster!i=HydraIRC@wikipedia/Stwalkerster PRIVMSG #Stwalkerbot :message | |
':nick!username@host msgtype channel :!command param1 param2 param3 | |
If line.Contains("MODE") Then Exit Sub | |
Dim nick_sep As Integer = line.IndexOf(":") | |
Dim username_sep As Integer = line.IndexOf("!", 0 + 1) | |
Dim host_sep As Integer = line.IndexOf("@", username_sep + 1) | |
Dim msgtype_sep As Integer = line.IndexOf(" ", host_sep + 1) | |
Dim channel_sep As Integer = line.IndexOf(" ", msgtype_sep + 1) | |
Dim command_sep As Integer = line.IndexOf(":", channel_sep + 1) | |
'Dim param1_sep As Integer = line.IndexOf(" ", command_sep + 1) | |
'Dim param2_sep As Integer = line.IndexOf(" ", param1_sep + 1) | |
'Dim param3_sep As Integer = line.IndexOf(" ", param2_sep + 1) | |
nick = line.Substring(nick_sep + 1, username_sep - nick_sep - 1) | |
username = line.Substring(username_sep + 1, host_sep - username_sep - 1) | |
host = line.Substring(host_sep + 1, msgtype_sep - host_sep - 1) | |
msgtype = line.Substring(msgtype_sep + 1, channel_sep - msgtype_sep - 1) | |
channel = line.Substring(channel_sep + 1, command_sep - channel_sep - 1) | |
channel = channel.Trim() | |
' Try | |
command = line.Substring(command_sep + 1) ', param1_sep - command_sep - 1) | |
'Catch ex As ArgumentOutOfRangeException | |
' command = Nothing | |
'End Try | |
'Try | |
' param1 = line.Substring(param1_sep + 1, param2_sep - param1_sep - 1) | |
'Catch ex As ArgumentOutOfRangeException | |
' param1 = Nothing | |
'End Try | |
'Try | |
' param2 = line.Substring(param2_sep + 1, param3_sep - param2_sep - 1) | |
'Catch ex As ArgumentOutOfRangeException | |
' param2 = Nothing | |
'End Try | |
'Try | |
' param3 = line.Substring(param3_sep + 1) | |
'Catch ex As ArgumentOutOfRangeException | |
' param3 = Nothing | |
'End Try | |
Console.WriteLine(nick & " " & username & " " & host & " " & msgtype & " " & channel & " " & command) '& " " & param1 & " " & param2 & " " & param3) | |
End Sub | |
End Module |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment