Guest User

Untitled

a guest
Nov 11th, 2016
511
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 89.25 KB | None | 0 0
  1. Imports System.Net.Sockets
  2. Imports System.Net
  3. Imports System.Text
  4. Imports System.Text.RegularExpressions
  5. Imports System.IO
  6. Imports MySql.Data.MySqlClient
  7. Imports System.Threading
  8.  
  9. Imports System.Collections.Generic
  10.  
  11. Imports System.Reflection
  12.  
  13. Imports Google.Apis.Auth.OAuth2
  14. Imports Google.Apis.Services
  15. Imports Google.Apis.Upload
  16. Imports Google.Apis.Util.Store
  17. Imports Google.Apis.YouTube.v3
  18. Imports Google.Apis.YouTube.v3.Data
  19.  
  20.  
  21. Imports System.Web
  22.  
  23. Public Class EggDropBotClasses
  24. 'Socket Stuff
  25. Public tnSocket As Socket
  26. Public SendBytes As [Byte]()
  27.  
  28. 'Class textbox to assign text to send back to
  29. Public TheTextBox As TextBox
  30.  
  31. 'BOT SPECIFIC INFO
  32. Public ThreadID As Integer
  33. Public LocalFirstSW As Boolean
  34. Public ChannelJoinSW As Boolean
  35. Public ExitSW As Boolean
  36. Public BotName As String
  37. Public cmdPrefix As Char
  38. Public Record As String
  39. Public MasterAuth As Boolean
  40. Public Master As Boolean = False
  41. Public BotID As Long
  42. Public LowerLevel As Boolean = False
  43. Public ServerName As String
  44. Public rndNum As New Random(System.DateTime.Now.Millisecond)
  45.  
  46.  
  47. 'Uni Class calls
  48. Public AclClass As New Acl
  49. Public ChannelCommandClass As New ChannelCommand
  50. Public MathChannelClass As New MathCheckClass
  51.  
  52. 'CLASS SPECIFIC FUNCS
  53.  
  54. Public Function ConnectBot(ByVal threadID) As Object
  55. 'FUNCTION NAME:ConnectBot
  56. 'INPUT :Thread ID as object
  57. 'EXISTANCE :Main Engine
  58. 'OUTPUT :Anything
  59.  
  60. 'INSTANCE CLASS CHILD OBJECTS
  61. ChannelCommandClass.CmdPrefix = cmdPrefix
  62. MathChannelClass.cmdPrefix = cmdPrefix
  63. threadID = My.Settings.ThreadID
  64.  
  65. 'DECLARE SOCKET VARS
  66. Dim RecvString As String = String.Empty
  67. Dim NumBytes As Integer = 0
  68. Dim RecvBytes(255) As [Byte]
  69. Dim nickname, ident, hostname, command2, channel, message
  70. Dim regexp As String
  71. Dim mythreatstarted As Boolean = False
  72.  
  73. message = ""
  74. RecvString = ""
  75. tnSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
  76. Dim x As System.Threading.Thread
  77. While True
  78. Try
  79. If (tnSocket.Connected = False) Then
  80. tnSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
  81. tnSocket.Connect(currServer, PPort)
  82. If mythreatstarted = False Then
  83. x = New Thread(AddressOf PingServerWait)
  84. x.Start()
  85. mythreatstarted = True
  86. End If
  87. End If
  88.  
  89. Do
  90. If NumBytes < 256 Then
  91. NumBytes = tnSocket.Receive(RecvBytes, RecvBytes.Length, 0)
  92. RecvString = Trim(RecvString + Encoding.ASCII.GetString(RecvBytes, 0, NumBytes))
  93. TheTextBox.AppendText(RecvString)
  94. Else
  95. NumBytes = 0 'RESET
  96. End If
  97. Loop While NumBytes = 256
  98.  
  99. 'WE NOW HAVE RECV DATA
  100. While Not RecvString = "" Or ConnectedToServer = False
  101. 'DETERMINE IF WE HAVE TO QUIT OR EXIT BY SERVER OR CMD
  102. If Quit(RecvString, threadID) = True Then
  103. Exit While
  104. End If
  105.  
  106. 'SERVER PING
  107. If PingServer(RecvString) Then
  108. End If
  109.  
  110. 'SERVER SEND 004 WE NOW HAVE CONNECTED TO IT
  111. If InStr(RecvString, "004") > 0 And ConnectedToServer = False Then
  112. ConnectedToServer = True
  113. End If
  114.  
  115. 'DETERMINE IF CONNECTED
  116. If ConnectedToServer Then
  117. '#############################
  118. '#DETERMINE Notice #
  119. '#############################
  120.  
  121. regexp = "^\:(?<nickname>.+?)\!(?<ident>.+?)\@(?<hostname>.+?) NOTICE (?<user>.+) \:(?<message>.+)."
  122. Debug.Print(RecvString)
  123.  
  124. If (IrcInputCheck(RecvString, regexp)) Then
  125. Dim re As New Regex(regexp)
  126. Dim user As String
  127.  
  128. 'CHAT GRABBER
  129. mt = re.Match(RecvString)
  130. nickname = mt.Groups("nickname").ToString
  131. ident = mt.Groups("ident").ToString
  132. hostname = mt.Groups("hostname").ToString
  133. message = mt.Groups("message").ToString
  134. user = mt.Groups("user").ToString
  135.  
  136. 'THIS WILL NEED TO BE FIXED BETTER
  137. If InStr(nickname, "Serv") > 0 Or InStr(nickname, "serv") > 0 Then
  138. RecvString = ""
  139. Else
  140. 'SET PASS NOTICE
  141. If RegXPChecker("^set pass:(?<item>.+) (?<item2>.+)", message) Then
  142. Dim item, item2 As String
  143. re = New Regex("^set pass:(?<item>.+) (?<item2>.+)")
  144. mt = re.Match(message)
  145. item = mt.Groups("item").ToString
  146. item2 = mt.Groups("item2").ToString
  147. If item = "" Or item2 = "" Then
  148. SendInfo("NOTICE " & nickname & " :Invalid syntax " & item & "." & vbCrLf, SendBytes, tnSocket)
  149. Else
  150. item2 = GenerateHash(item2)
  151. Debug.Print(item2)
  152. item2 = QueryClean(item2)
  153. item = QueryClean(item)
  154. SQL = "UPDATE tblauth SET Password=""" & QueryClean(item2) & """ WHERE BotID=" & BotID & " AND UserName=""" & QueryClean(item) & """"
  155.  
  156. If UpdateRecords(SQL, "Set Pass Hash") = False Then
  157. Return False
  158. End If
  159. End If
  160. End If
  161.  
  162. 'AUTH NOTICE
  163. If RegXPChecker("^auth:(?<item>.+)", message) Then
  164. Dim item As String
  165. re = New Regex("^auth:(?<item>.+)")
  166. mt = re.Match(message)
  167. item = mt.Groups("item").ToString
  168.  
  169. SQL = "SELECT UserName FROM tblAuth Where BotID=" & BotID & " AND UserName=""" & QueryClean(nickname) & """"
  170. If CheckIfUserExists(nickname, SQL, BotID) Then
  171. item = GenerateHash(item)
  172. Debug.Print(item)
  173.  
  174. If AclClass.PasswordVerification(nickname, BotID, item) Then
  175. SendInfo("NOTICE " & nickname & " :Authenticated" & vbCrLf, SendBytes, tnSocket)
  176. nickname = QueryClean(nickname)
  177. SQL = "UPDATE tblauth SET IsAuthed=1 WHERE botID=" & BotID & " AND UserName=""" & QueryClean(nickname) & """"
  178. If UpdateRecords(SQL, "Auth") Then
  179.  
  180. End If
  181. Else
  182. SendInfo("NOTICE " & nickname & " :Invalid password" & vbCrLf, SendBytes, tnSocket)
  183. End If
  184. Else
  185. Return True
  186. End If
  187. End If
  188. End If
  189. 'Check if user is in user list
  190. RecvString = ""
  191. End If
  192.  
  193. '#####################################
  194. '#DETERMINE Private Message to bot #
  195. '#####################################
  196.  
  197. ':MrTwig!n=Jaw@unaffiliated/jawster NICK :Twig-Away
  198. ':ioudas!n=gc@cpe-74-75-90-244.maine.res.rr.com PRIVMSG assbott2 :hey
  199. regexp = "^\:(?<nickname>.+?)\!(?<ident>.+?)\@(?<hostname>.+?) PRIVMSG (?<user>.+?) \:(?<message>.+)."
  200.  
  201. If (IrcInputCheck(RecvString, regexp)) Then
  202. Dim re As New Regex(regexp)
  203. Dim user As String
  204.  
  205. mt = re.Match(RecvString)
  206. nickname = mt.Groups("nickname").ToString
  207. ident = mt.Groups("ident").ToString
  208. hostname = mt.Groups("hostname").ToString
  209. channel = "#" & mt.Groups("channel").ToString
  210. message = mt.Groups("message").ToString
  211. user = mt.Groups("user").ToString
  212.  
  213. If InStr(user, "#") > 0 Then
  214. Else
  215. If InStr(message, "PING") > 0 Or InStr(message, "TIME") > 0 Or InStr(message, "VERSION") > 0 Then
  216.  
  217. If CtcpReply(message, nickname) Then
  218. End If
  219. Else
  220. RecvString = "PING"
  221. End If
  222. End If
  223. End If
  224.  
  225. '#####################################
  226. '#DETERMINE Chan/Server Kick Commands#
  227. '#####################################
  228.  
  229. regexp = "^\:(?<nickname>.+?)\!(?<ident>.+?)\@(?<hostname>.+?) (?<command>.+?) #(?<channel>.+?) (?<userkicked>.+) \:(?<message>.+)."
  230. If IrcInputCheck(RecvString, regexp) Then
  231. Dim re As New Regex(regexp)
  232.  
  233. mt = re.Match(RecvString)
  234. nickname = mt.Groups("nickname").ToString
  235. ident = mt.Groups("ident").ToString
  236. hostname = mt.Groups("hostname").ToString
  237. command2 = mt.Groups("command").ToString
  238. channel = "#" & mt.Groups("channel").ToString
  239. message = mt.Groups("message").ToString
  240. Dim botProtectRejoin As New BotProtection
  241. Select Case command2
  242. Case "KICK"
  243. 'run kick code
  244.  
  245. If (botProtectRejoin.DetermineChannelJoin(BotID, channel)) Then
  246. SendInfo("JOIN " & channel, SendBytes, tnSocket)
  247. End If
  248. 'RecvString = ""
  249.  
  250. Case "MODE"
  251. 'wee
  252. 'Mode protection goes here
  253. If botProtectRejoin.DetectBanAgainstMe(channel, True, tnSocket, SendBytes, "greg") Then
  254.  
  255. End If
  256. End Select
  257.  
  258. If (AclClass.IsMaster(nickname, BotID)) Then
  259. Master = True
  260. Else
  261. Master = False
  262. End If
  263. End If
  264.  
  265. '####################################
  266. '#DETERMINE Chan/Server Commands #
  267. '####################################
  268. 'ioudas^ desktop!~ioudas@cpe-74-75-67-224.maine.res.rr.com PART #partyonirc :Closing Window
  269. 'ioudas^ desktop!~ioudas@cpe-74-75-67-224.maine.res.rr.com JOIN :#partyonirc
  270. regexp = "^\:(?<nickname>.+?)\!(?<ident>.+?)\@(?<hostname>.+?) (?<command>.+?) \:#(?<channel>.+?)"
  271. If IrcInputCheck(RecvString, regexp) Then
  272. Dim re As New Regex(regexp)
  273.  
  274. mt = re.Match(RecvString)
  275. nickname = mt.Groups("nickname").ToString
  276. ident = mt.Groups("ident").ToString
  277. hostname = mt.Groups("hostname").ToString
  278. command2 = mt.Groups("command").ToString
  279.  
  280. message = mt.Groups("message").ToString
  281. If Not (nickname = BotName) Then
  282.  
  283. If (command2 = "JOIN") = True Then
  284. 'SQL LOOKUP
  285. Dim joinreply As String
  286.  
  287. joinreply = GetField("select message, rand() as r from tblusergems WHERE BotID=" & BotID & " AND channel=""" & channel & """ And username = """ & nickname & """ order by r limit 1", "message", "message")
  288. If (joinreply = "") = False Then
  289. SendInfo("PRIVMSG " & channel & " : " & joinreply & vbCrLf, SendBytes, tnSocket)
  290. End If
  291.  
  292. End If
  293.  
  294. End If
  295.  
  296. End If
  297.  
  298.  
  299.  
  300. regexp = "^\:(?<nickname>.+?)\!(?<ident>.+?)\@(?<hostname>.+?) (?<command>.+?) #(?<channel>.+?) \:(?<message>.+)."
  301. If (IrcInputCheck(RecvString, regexp)) Then
  302. Dim re As New Regex(regexp)
  303. mt = re.Match(RecvString)
  304. nickname = mt.Groups("nickname").ToString
  305. ident = mt.Groups("ident").ToString
  306. hostname = mt.Groups("hostname").ToString
  307. command2 = mt.Groups("command").ToString
  308. channel = "#" & mt.Groups("channel").ToString
  309. message = mt.Groups("message").ToString
  310.  
  311. If (AclClass.IsMaster(nickname, BotID)) Then
  312. Master = True
  313. Else
  314. Master = False
  315. End If
  316.  
  317. 'RECONNECT COMMAND.
  318.  
  319. If message = cmdPrefix & "reconnect" Then
  320. LocalFirstSW = True
  321. ChannelJoinSW = True
  322. tnSocket.Close()
  323. ConnectedToServer = False
  324. x.Abort()
  325. Exit While
  326. End If
  327.  
  328. 'If :gregc!n=gc@cpe-74-75-90-244.maine.res.rr.com QUIT :
  329. If command2 = "QUIT" Then
  330. If AclClass.IsUserAuthed(nickname, BotID, channel) Then
  331. SQL = "UPDATE tblauth SET IsAuthed=0 WHERE BotID=" & BotID & " AND UserName=""" & QueryClean(nickname) & """"
  332. If UpdateRecords(SQL, "QUIT AUTH") Then
  333. End If
  334. Else
  335. End If
  336. End If
  337.  
  338. 'DB INSERT OF RCVD DATA TO USER CHAT TABLE
  339. If Record Then
  340. If Not InStr(message, cmdPrefix & "last") > 0 Then
  341. If InStr(message, cmdPrefix & "seen") > 0 Then
  342. Else
  343. If RecordInsert(QueryClean(channel), QueryClean(nickname), QueryClean(message), BotID, ServerName) = False Then
  344. End If
  345. End If
  346. End If
  347. End If
  348.  
  349. 'Channel Text
  350. If (ChannelGrab(message, channel, nickname)) Then
  351. RecvString = ""
  352. message = ""
  353. Exit While
  354. End If
  355.  
  356. 'CTCP CHAN PING REPLY
  357. If CtcpReply(message, nickname) Then
  358. RecvString = ""
  359. Exit While
  360. End If
  361.  
  362.  
  363. If Len(message) > 0 Then
  364. RecvString = ""
  365. Exit While
  366. End If
  367. End If
  368. End If
  369.  
  370. '####################################
  371. '#On server channel commands #
  372. '####################################
  373.  
  374. 'PAST CHANNEL COMMANDS Server commands go here
  375. If RegXPChecker("\:.+ 433 \* .+ \:.+", RecvString) Then
  376. Dim newnick As String
  377. newnick = "testbot"
  378. SendInfo("NICK " & newnick & vbCrLf, SendBytes, tnSocket)
  379. End If
  380.  
  381. Debug.Print(RecvString)
  382.  
  383. If InStr(RecvString, "376") Then
  384. Debug.Print("")
  385. End If
  386.  
  387.  
  388. If RegXPChecker("\:.+ 376 .+", RecvString) Then
  389. InitialJoin()
  390. End If
  391. ':irc.mad-season.com 376 assbott2 :End of /MOTD command.
  392. 'ASSIGN SERVER NICK
  393. 'ALSO HANDLES CHANNEL JOINS
  394. SetNickOnServer(tnSocket)
  395.  
  396. RecvString = ""
  397.  
  398.  
  399. End While
  400.  
  401. Catch myerror As Exception
  402. 'NEED A BETTER METHOD FOR HANDLING
  403. Debug.Print(myerror.GetHashCode())
  404. Debug.Print(myerror.Message)
  405. Debug.Print(myerror.ToString)
  406.  
  407. Dim thetime As String = Format(Today, "yyyy/MM/dd")
  408. Dim errorHandleStr As String = QueryClean(myerror.ToString)
  409.  
  410. SQL = "INSERT INTO tblerrorlog(botid, ErrorNumber, ErrorMessage,HappenedWhen,BotName) VALUES(" & BotID & ", """ & errorHandleStr & """, """ & myerror.Message & " " & message & """,""" & thetime & """,""" & BotName & """)"
  411. Try
  412. If InsertRecords(SQL, "ErrorLog") Then
  413.  
  414. End If
  415.  
  416. Catch ex As Exception
  417.  
  418. End Try
  419.  
  420. Select Case myerror.GetHashCode()
  421. Case 1997173
  422. Exit While
  423. End Select
  424. End Try
  425. End While
  426.  
  427.  
  428. Command = Nothing
  429. RecvString = Nothing
  430. ConnectedToServer = False
  431. tnSocket.Close()
  432. tnSocket = Nothing
  433. RecvString = Nothing
  434. ThreadKillID = 9999
  435. GC.Collect()
  436. Return "Dead"
  437.  
  438. End Function
  439.  
  440. Private Function ChannelGrab(ByVal Message As String, ByVal channel As String, ByVal nickname As String) As Boolean
  441. 'FUNCTION NAME:ChannelGrab
  442. 'INPUT :Message, Channel, Nick
  443. 'EXISTANCE :Grabs channel text and determines if command has been issued
  444. 'OUTPUT :true or false of a command is issues
  445. 'PP Note :This also can do many things such as send to channels etc.
  446.  
  447. Dim re As New Regex("")
  448. Dim mt As Match
  449. Dim item, item2, result
  450.  
  451. '###################################
  452. '#DETERMINE USER LEVEL AND AUTH #
  453. '###################################
  454.  
  455. Dim authed As Boolean = False
  456.  
  457. If AclClass.IsUserAuthed(nickname, BotID, channel) Then
  458. authed = True
  459. End If
  460.  
  461. 'TEXT CMD SPECS
  462. Debug.Print("CHANNEL GRAB THREAD INFO")
  463. Debug.Print(ThreadID)
  464. Debug.Print(CurrBotName)
  465. Debug.Print(Message)
  466.  
  467. 'DETERMINE COMMAND LEVEL
  468. If Master = True Or Master = False And authed = True Or authed = False Then
  469.  
  470. If ChannelCommandClass.CheckCommandInChannel(re, Message, tnSocket, SendBytes, BotID, BotName, channel) = True Then
  471. Return True
  472. End If
  473.  
  474. If MathChannelClass.CheckMathChannel(re, Message, tnSocket, SendBytes, BotID, BotName, channel) Then
  475. Return True
  476. End If
  477.  
  478.  
  479. If RegXPChecker("^" & cmdPrefix & "set pass (?<item>.+)", Message) Then
  480. re = New Regex("^" & cmdPrefix & "set pass (?<item>.+)")
  481. mt = re.Match(Message)
  482. item = mt.Groups("item").ToString
  483.  
  484. If item = "" Then
  485. SendInfo("PRIVMSG " & channel & " :Please include a username when setting a password." & item & vbCrLf, SendBytes, tnSocket)
  486. Else
  487. SendInfo("NOTICE " & nickname & " :Please notice me set pass:UserName PasswordHere for user " & item & "." & vbCrLf, SendBytes, tnSocket)
  488. End If
  489.  
  490. Return True
  491. End If
  492.  
  493. If RegXPChecker("^" & cmdPrefix & "ident$", Message) Then
  494. re = New Regex("^" & cmdPrefix & "ident")
  495. mt = re.Match(Message)
  496. item = mt.Groups("item").ToString
  497.  
  498. Dim serverip As String
  499. serverip = GetField("SELECT ServerIP FROM tblserverlist WHERE BotID=" & BotID & " AND ServerIP=""" & currServer & """", "ServerIP", "GetIP")
  500. Debug.Print(address.ToString)
  501.  
  502. If serverip = "" Then
  503. Return False
  504. End If
  505.  
  506. Dim reply As String = GetField("SELECT Ident FROM tblserverlist WHERE BotID=" & BotID & " AND ServerIP=""" & currServer & """", "Ident", "Ident")
  507.  
  508. If reply = "" Then
  509. Return False
  510. End If
  511.  
  512. SendInfo(reply, SendBytes, tnSocket)
  513. Return True
  514. End If
  515.  
  516. If RegXPChecker("^" & cmdPrefix & "sha (?<item>.+)", Message) Then
  517. re = New Regex("^" & cmdPrefix & "sha (?<item>.+)")
  518. mt = re.Match(Message)
  519. item = mt.Groups("item").ToString
  520.  
  521. If item = "" Then
  522. SendInfo("PRIVMSG " & channel & " :Please include a username when setting a password." & item & vbCrLf, SendBytes, tnSocket)
  523. Else
  524. SendInfo("PRIVMSG " & channel & " :" & GenerateHash(item) & vbCrLf, SendBytes, tnSocket)
  525. End If
  526.  
  527. Return True
  528. End If
  529.  
  530. If RegXPChecker("^" & cmdPrefix & "nick (?<item>.+)", Message) Then
  531. re = New Regex("^" & cmdPrefix & "nick (?<item>.+)")
  532. mt = re.Match(Message)
  533. item = mt.Groups("item").ToString
  534. SendInfo("NICK " & item, SendBytes, tnSocket)
  535. Return True
  536. End If
  537.  
  538. If RegXPChecker("^" & cmdPrefix & "delserver (?<item>.+?)", Message) Then
  539. re = New Regex("^" & cmdPrefix & "delserver (?<item>.+?)")
  540. mt = re.Match(Message)
  541. item = mt.Groups("item").ToString
  542. SendInfo("PRIVMSG " & channel & " :Deleted server" & item & vbCrLf, SendBytes, tnSocket)
  543. Return True
  544. End If
  545.  
  546. If RegXPChecker("^" & cmdPrefix & "addserver (?<item>.+)", Message) Then
  547. re = New Regex("^" & cmdPrefix & "addserver (?<item>.+)")
  548. mt = re.Match(Message)
  549. item = mt.Groups("item").ToString
  550.  
  551. If AddServer(item, GetBotID(BotName), "6667", 1, 1) Then
  552.  
  553. End If
  554.  
  555. SendInfo("PRIVMSG " & channel & " :Added server " & item & vbCrLf, SendBytes, tnSocket)
  556. Return True
  557. End If
  558.  
  559. If RegXPChecker("^http://(?<site>.+)", Message) Then
  560. re = New Regex("^http://(?<site>.+)")
  561. mt = re.Match(Message)
  562. item = mt.Groups("site").ToString
  563.  
  564.  
  565. Dim request As WebRequest = WebRequest.Create("http://" & item)
  566. Dim webresponse As WebResponse = request.GetResponse()
  567.  
  568. Dim sr As System.IO.StreamReader = New System.IO.StreamReader(webresponse.GetResponseStream())
  569.  
  570. Dim response As String = sr.ReadToEnd
  571. Dim pattern As String = "(?<=\<title\>)[a-zA-Z0-9\s]*(?=\</title\>)"
  572. Dim m As System.Text.RegularExpressions.Match = System.Text.RegularExpressions.Regex.Match(response, pattern)
  573. Dim result2 As String = m.Value
  574.  
  575. Dim reply
  576. If result2 = "" = False Then
  577. reply = "PRIVMSG " & channel & " :" & result2
  578. SendInfo(reply, SendBytes, tnSocket)
  579. End If
  580. End If
  581.  
  582. If RegXPChecker("^https://(?<site>.+)", Message) Then
  583. re = New Regex("^https://(?<site>.+)")
  584. mt = re.Match(Message)
  585. item = mt.Groups("site").ToString
  586.  
  587.  
  588. Dim request As WebRequest = WebRequest.Create("https://" & item)
  589. Dim webresponse As WebResponse = request.GetResponse()
  590.  
  591. Dim sr As System.IO.StreamReader = New System.IO.StreamReader(webresponse.GetResponseStream())
  592.  
  593. Dim response As String = sr.ReadToEnd
  594. Dim pattern As String = "(?<=\<title\>)[a-zA-Z0-9\s]*(?=\</title\>)"
  595. Dim m As System.Text.RegularExpressions.Match = System.Text.RegularExpressions.Regex.Match(response, pattern)
  596. Dim result2 As String = m.Value
  597.  
  598. Dim reply
  599. If result2 = "" = False Then
  600. reply = "PRIVMSG " & channel & " :" & result2
  601. SendInfo(reply, SendBytes, tnSocket)
  602. End If
  603. End If
  604.  
  605. If RegXPChecker("^" & cmdPrefix & "quit (?<item>.+)", Message) Then
  606. re = New Regex("^" & cmdPrefix & "quit (?<item>.+)")
  607. mt = re.Match(Message)
  608. item = mt.Groups("item").ToString
  609. SendInfo("QUIT :" & item, SendBytes, tnSocket)
  610. Return True
  611. End If
  612.  
  613. If RegXPChecker("^" & cmdPrefix & "quit$", Message) Then
  614. If nickname = "MrTwig" Or nickname = "MrPenguin" Then
  615. SendInfo("PRIVMSG " & channel & " :fag", SendBytes, tnSocket)
  616.  
  617. Return True
  618. End If
  619. SendInfo("QUIT :" & "Good Bye", SendBytes, tnSocket)
  620. Return True
  621. End If
  622.  
  623. If RegXPChecker("^" & cmdPrefix & "kick (?<item>.+) (?<item2>.+)", Message) Then
  624. re = New Regex("^" & cmdPrefix & "kick (?<item>.+?) (?<item2>.+)")
  625. mt = re.Match(Message)
  626. item = mt.Groups("item").ToString
  627. item2 = mt.Groups("item2").ToString
  628. SendInfo("KICK " & channel & " " & item & " :" & item2, SendBytes, tnSocket)
  629. Return True
  630. End If
  631.  
  632. If RegXPChecker("^" & cmdPrefix & "kick (?<item>.+)", Message) Then
  633. re = New Regex("^" & cmdPrefix & "kick (?<item>.+)")
  634. mt = re.Match(Message)
  635. item = mt.Groups("item").ToString
  636. SendInfo("KICK " & channel & " " & item, SendBytes, tnSocket)
  637. Return True
  638. End If
  639.  
  640. If RegXPChecker("^" & cmdPrefix & "mode (?<item>.+)", Message) Then
  641. re = New Regex("^" & cmdPrefix & "mode (?<item>.+)")
  642. mt = re.Match(Message)
  643. item = mt.Groups("item").ToString
  644. SendInfo("MODE " & channel & " " & item, SendBytes, tnSocket)
  645. Return True
  646. End If
  647.  
  648. If RegXPChecker("^" & cmdPrefix & "op (?<item>.+)", Message) Then
  649. re = New Regex("^" & cmdPrefix & "op (?<item>.+)")
  650. mt = re.Match(Message)
  651. item = mt.Groups("item").ToString
  652. SendInfo("MODE " & channel & " +o " & item, SendBytes, tnSocket)
  653. Return True
  654. End If
  655.  
  656. If RegXPChecker("^" & cmdPrefix & "deop (?<item>.+)", Message) Then
  657. re = New Regex("^" & cmdPrefix & "deop (?<item>.+)")
  658. mt = re.Match(Message)
  659. item = mt.Groups("item").ToString
  660. SendInfo("MODE " & channel & " -o " & item, SendBytes, tnSocket)
  661. Return True
  662. End If
  663.  
  664. If RegXPChecker("^" & cmdPrefix & "voice (?<item>.+)", Message) Then
  665. re = New Regex("^" & cmdPrefix & "voice (?<item>.+)")
  666. mt = re.Match(Message)
  667. item = mt.Groups("item").ToString
  668. SendInfo("MODE " & channel & " +v " & item, SendBytes, tnSocket)
  669. Return True
  670. End If
  671.  
  672. If RegXPChecker("^" & cmdPrefix & "help (?<item>.+)", Message) Then
  673. re = New Regex("^" & cmdPrefix & "help (?<item>.+)")
  674. mt = re.Match(Message)
  675. item = mt.Groups("item").ToString
  676. SQL = "SELECT tblbotcmdlist.BotID, tblbotcmdlist.Command, tblbotcmdlist.Usage, tblbotcmdlist.Syntax FROM tblbotcmdlist GROUP BY tblbotcmdlist.BotID, tblbotcmdlist.Command, tblbotcmdlist.Usage, tblbotcmdlist.Syntax HAVING (((tblbotcmdlist.BotID)=" & BotID & ") AND ((tblbotcmdlist.Command)=""" & QueryClean(item) & """));"
  677.  
  678. Dim conn As New MySqlConnection
  679. Dim myCommand As New MySqlCommand
  680. Dim myReader As MySqlDataReader
  681.  
  682. conn.ConnectionString = des.Decrypt(My.Settings.ConnStr)
  683.  
  684. Try
  685. conn.Open()
  686. Try
  687. myCommand.Connection = conn
  688. myCommand.CommandText = SQL
  689. myReader = myCommand.ExecuteReader
  690. Dim reply As String = ""
  691.  
  692. While myReader.Read
  693. reply = "Command:" & nz(myReader.GetValue(1), "")
  694. reply = reply & " Syntax:" & nz(myReader.GetValue(3), "")
  695. Debug.Print(reply)
  696.  
  697. If reply = "Command: Syntax:" Then
  698.  
  699. Else
  700. SendInfo("NOTICE " & nickname & " :" & reply, SendBytes, tnSocket)
  701. Wait(2000)
  702. End If
  703.  
  704. End While
  705.  
  706. Catch myerror As MySqlException
  707. MsgBox("There was an error reading from the database: " & myerror.Message)
  708. End Try
  709. Catch myerror As MySqlException
  710. MsgBox("Error connecting to the database: " & myerror.Message)
  711. Finally
  712. If conn.State <> ConnectionState.Closed Then conn.Close()
  713. End Try
  714. Return True
  715. End If
  716.  
  717. If RegXPChecker("^" & cmdPrefix & "help$", Message) Then
  718. SQL = "SELECT tblbotcmdlist.BotID, tblbotcmdlist.Command, tblbotcmdlist.Usage, tblbotcmdlist.Syntax FROM tblbotcmdlist GROUP BY tblbotcmdlist.BotID, tblbotcmdlist.Command, tblbotcmdlist.Usage, tblbotcmdlist.Syntax HAVING (((tblbotcmdlist.BotID)=" & BotID & "));"
  719.  
  720. Dim conn As New MySqlConnection
  721. Dim myCommand As New MySqlCommand
  722. Dim myReader As MySqlDataReader
  723.  
  724. conn.ConnectionString = des.Decrypt(My.Settings.ConnStr)
  725.  
  726. Try
  727. conn.Open()
  728. Try
  729. myCommand.Connection = conn
  730. myCommand.CommandText = SQL
  731. myReader = myCommand.ExecuteReader
  732. Dim reply As String = ""
  733.  
  734. While myReader.Read
  735. reply = "Command:" & nz(myReader.GetValue(1), "")
  736. reply = reply & " Syntax:" & nz(myReader.GetValue(3), "")
  737. If reply = "Command: Syntax:" Then
  738.  
  739. Else
  740. SendInfo("NOTICE " & nickname & " :" & reply, SendBytes, tnSocket)
  741. Wait(2000)
  742. End If
  743. End While
  744.  
  745. Catch myerror As MySqlException
  746. MsgBox("There was an error reading from the database: " & myerror.Message)
  747. End Try
  748. Catch myerror As MySqlException
  749. MsgBox("Error connecting to the database: " & myerror.Message)
  750. Finally
  751. If conn.State <> ConnectionState.Closed Then conn.Close()
  752. End Try
  753. Return True
  754. End If
  755.  
  756. If RegXPChecker("^" & cmdPrefix & "errorlog (?<item>.+)", Message) Then
  757. re = New Regex("^" & cmdPrefix & "errorlog (?<item>.+)")
  758. mt = re.Match(Message)
  759. item = mt.Groups("item").ToString
  760. If RegXPChecker(ZeroTo9Regex, item) Then
  761. item = System.Convert.ToInt32(item)
  762. If item < 0 Then
  763. Return False
  764. End If
  765. Else
  766. Return False
  767. End If
  768.  
  769. SQL = "SELECT IDNum,ErrorNumber,HappenedWhen FROM tblerrorlog WHERE BotID=" & BotID & " ORDER BY IDNum DESC LIMIT " & QueryClean(item)
  770.  
  771. Dim conn As New MySqlConnection
  772. Dim myCommand As New MySqlCommand
  773. Dim myReader As MySqlDataReader
  774.  
  775. conn.ConnectionString = des.Decrypt(My.Settings.ConnStr)
  776.  
  777. Try
  778. conn.Open()
  779. Try
  780. myCommand.Connection = conn
  781. myCommand.CommandText = SQL
  782. myReader = myCommand.ExecuteReader
  783.  
  784. Dim reply As String = ""
  785. While myReader.Read
  786. reply = "Error Num:" & nz(myReader.GetValue(1), "") & " at:" & nz(myReader.GetValue(2), "")
  787. reply = Replace(reply, vbCrLf, "")
  788. Debug.Print(reply)
  789.  
  790. If reply = "Error Num: at:" Then
  791. Return True
  792. End If
  793. SendInfo("PRIVMSG " & channel & " :" & reply, SendBytes, tnSocket)
  794. Wait(2200)
  795.  
  796. End While
  797. Return True
  798. Catch myerror As MySqlException
  799. MsgBox("There was an error reading from the database: " & myerror.Message)
  800. End Try
  801. Catch myerror As MySqlException
  802. MsgBox("Error connecting to the database: " & myerror.Message)
  803. Finally
  804. If conn.State <> ConnectionState.Closed Then conn.Close()
  805. End Try
  806. SendInfo("PRIVMSG " & channel & " :Hooray no errors! you must of fixed me!", SendBytes, tnSocket)
  807. Return False
  808. End If
  809.  
  810. If RegXPChecker("^" & cmdPrefix & "delerrorlog$", Message) Then
  811.  
  812. If DeleteRecords("DELETE FROM tblerrorlog WHERE BotID=" & BotID, "Error log Del") Then
  813.  
  814. End If
  815.  
  816. SendInfo("PRIVMSG " & channel & " :Deleted error log", SendBytes, tnSocket)
  817. Return True
  818. End If
  819.  
  820. If RegXPChecker("^" & cmdPrefix & "calc (?<item>.+)\*(?<item2>.+)", Message) Then
  821. re = New Regex("^" & cmdPrefix & "calc (?<item>.+)\*(?<item2>.+)")
  822. mt = re.Match(Message)
  823. item = mt.Groups("item").ToString
  824. item2 = mt.Groups("item2").ToString
  825.  
  826. If RegXPChecker(ZeroTo9Regex, item) = False Or RegXPChecker(ZeroTo9Regex, item2) = False Then
  827. Return False
  828. End If
  829.  
  830. SendInfo("PRIVMSG " & channel & " :Answer: " & item * item2, SendBytes, tnSocket)
  831. Return True
  832. End If
  833.  
  834. If RegXPChecker("^" & cmdPrefix & "setupftp (?<item>.+) (?<item2>.+)", Message) Then
  835. re = New Regex("^" & cmdPrefix & "setupftp (?<item>.+) (?<item2>.+)")
  836. mt = re.Match(Message)
  837. item = mt.Groups("item").ToString
  838. item2 = mt.Groups("item2").ToString
  839.  
  840. If RegXPChecker(ZeroTo9Regex, item2) = False Then
  841. Return False
  842. End If
  843.  
  844. SQL = "INSERT INTO tblP2PServers(Server,Port,Proto,BotID) VALUES(""" & item & """,""" & item2 & """,""" & "FTP" & """," & BotID & ")"
  845. If InsertRecords(SQL, "InsertFTP") Then
  846.  
  847. End If
  848.  
  849. SendInfo("NOTICE " & nickname & " :to set a username notice me: SetFtpUser <username>", SendBytes, tnSocket)
  850. SendInfo("NOTICE " & nickname & " :to set a username notice me: SetFtpPass <pass>", SendBytes, tnSocket)
  851. SendInfo("PRIVMSG " & channel & " :Added ftp server " & item & " on port " & item2, SendBytes, tnSocket)
  852. Return True
  853. End If
  854.  
  855. If RegXPChecker("^" & cmdPrefix & "setupssh (?<item>.+) (?<item2>.+)", Message) Then
  856. re = New Regex("^" & cmdPrefix & "setupssh (?<item>.+) (?<item2>.+)")
  857. mt = re.Match(Message)
  858. item = mt.Groups("item").ToString
  859. item2 = mt.Groups("item2").ToString
  860.  
  861. If RegXPChecker(ZeroTo9Regex, item2) = False Then
  862. Return False
  863. End If
  864.  
  865. SQL = "INSERT INTO tblP2PServers(Server,Port,Proto,BotID) VALUES(""" & item & """,""" & item2 & """,""" & "FTP" & """," & BotID & ")"
  866. If InsertRecords(SQL, "InsertFTP") Then
  867.  
  868. End If
  869.  
  870. SendInfo("NOTICE " & nickname & " :to set a username notice me: SetFtpUser <username>", SendBytes, tnSocket)
  871. SendInfo("NOTICE " & nickname & " :to set a username notice me: SetFtpPass <pass>", SendBytes, tnSocket)
  872. SendInfo("PRIVMSG " & channel & " :Added ftp server " & item & " on port " & item2, SendBytes, tnSocket)
  873. Return True
  874. End If
  875.  
  876. If RegXPChecker("^" & cmdPrefix & "setuptracker (?<item>.+) (?<item2>.+)", Message) Then
  877. re = New Regex("^" & cmdPrefix & "setuptracker (?<item>.+) (?<item2>.+)")
  878. mt = re.Match(Message)
  879. item = mt.Groups("item").ToString
  880. item2 = mt.Groups("item2").ToString
  881.  
  882. SQL = "INSERT INTO tblP2PServers(Server,Port,Proto,BotID) VALUES(""" & item & """,""" & item2 & """,""" & "BITTORRENT" & """," & BotID & ")"
  883.  
  884. If InsertRecords(SQL, "InsertFTP") Then
  885.  
  886. End If
  887.  
  888. SendInfo("PRIVMSG " & channel & " :Added torrent tracker: " & item, SendBytes, tnSocket)
  889. Return True
  890. End If
  891.  
  892. If RegXPChecker("^" & cmdPrefix & "mergetracker (?<item>.+) (?<item2>.+)", Message) Then
  893. re = New Regex("^" & cmdPrefix & "mergetracker (?<item>.+) (?<item2>.+)")
  894. mt = re.Match(Message)
  895. item = mt.Groups("item").ToString
  896. item2 = mt.Groups("item2").ToString
  897.  
  898. SQL = "INSERT INTO tblP2PServers(Server,Port,Proto,BotID) VALUES(""" & item & """,""" & item2 & """,""" & "BITTORRENT" & """," & BotID & ")"
  899.  
  900. If InsertRecords(SQL, "InsertFTP") Then
  901.  
  902. End If
  903.  
  904. SendInfo("PRIVMSG " & channel & " :Added torrent tracker: " & item, SendBytes, tnSocket)
  905. Return True
  906. End If
  907.  
  908. If RegXPChecker("^" & cmdPrefix & "devoice (?<item>.+)", Message) Then
  909. re = New Regex("^" & cmdPrefix & "devoice (?<item>.+)")
  910. mt = re.Match(Message)
  911. item = mt.Groups("item").ToString
  912. SendInfo("MODE " & channel & " -v " & item, SendBytes, tnSocket)
  913. Return True
  914. End If
  915.  
  916. If RegXPChecker("^" & cmdPrefix & "ban (?<item>.+)", Message) Then
  917. re = New Regex("^" & cmdPrefix & "ban (?<item>.+)")
  918. mt = re.Match(Message)
  919. item = mt.Groups("item").ToString
  920. SendInfo("MODE " & channel & " +b " & item, SendBytes, tnSocket)
  921. Return True
  922. End If
  923.  
  924. If RegXPChecker("^" & cmdPrefix & "last (?<item>.+)", Message) Then
  925. re = New Regex("^" & cmdPrefix & "last (?<item>.+)")
  926. mt = re.Match(Message)
  927. item = mt.Groups("item").ToString
  928.  
  929. 'MAKE DB CALL
  930. SQL = "SELECT message FROM tbluserchat WHERE tbluserchat.Nick=""" & QueryClean(item) & """ AND tbluserchat.Channel=""" & channel & """ ORDER BY idnum DESC LIMIT 1"
  931.  
  932. Dim conn As New MySqlConnection
  933. Dim myCommand As New MySqlCommand
  934. Dim myReader As MySqlDataReader
  935.  
  936. conn.ConnectionString = des.Decrypt(My.Settings.ConnStr)
  937.  
  938. Try
  939. conn.Open()
  940. Try
  941. myCommand.Connection = conn
  942. myCommand.CommandText = SQL
  943. myReader = myCommand.ExecuteReader
  944.  
  945. Dim reply As String = ""
  946.  
  947. While myReader.Read
  948. reply = nz(myReader.GetValue(0), "")
  949. End While
  950.  
  951. If reply = "" Then
  952. SendInfo("PRIVMSG " & channel & " :No history for " & item, SendBytes, tnSocket)
  953. Else
  954. SendInfo("PRIVMSG " & channel & " :" & item & " said: " & reply, SendBytes, tnSocket)
  955. End If
  956.  
  957. Catch myerror As MySqlException
  958. MsgBox("There was an error reading from the database: " & myerror.Message)
  959. End Try
  960. Catch myerror As MySqlException
  961. MsgBox("Error connecting to the database: " & myerror.Message)
  962. Finally
  963. If conn.State <> ConnectionState.Closed Then conn.Close()
  964. End Try
  965. Return True
  966. End If
  967.  
  968. If RegXPChecker("^" & cmdPrefix & "gem (?<item>.+)", Message) Then
  969. re = New Regex("^" & cmdPrefix & "gem (?<item>.+)")
  970. mt = re.Match(Message)
  971. item = mt.Groups("item").ToString
  972.  
  973. SQL = "INSERT INTO tbllines(botid, Command, Line) VALUES(" & BotID & ", """ & cmdPrefix & "gem" & """, """ & item & """)"
  974.  
  975. If InsertRecords(SQL, "GEM") Then
  976.  
  977. End If
  978.  
  979. Return True
  980. End If
  981.  
  982.  
  983.  
  984. 'If RegXPChecker("^" & cmdPrefix & "joinmsg (?<item>.+)", Message) Then
  985. ' re = New Regex("^" & cmdPrefix & "joinmsg (?<item>.+)")
  986. ' mt = re.Match(Message)
  987. ' item = mt.Groups("item").ToString
  988.  
  989. ' SQL = "INSERT INTO tblusergems(botid, username, channel, message) VALUES(" & BotID & ", """ & nickname & """, """ & channel & """,""" & item & """)"
  990.  
  991. ' If InsertRecords(SQL, "joinmsg") Then
  992.  
  993. ' End If
  994.  
  995. ' Return True
  996. 'End If
  997.  
  998.  
  999. If RegXPChecker("^" & cmdPrefix & "joinmsg (?<item>[\w&.\-]*):(?<item2>.+[\w&.\-]*)", Message) Then
  1000. re = New Regex("^" & cmdPrefix & "joinmsg (?<item>[\w&.\-]*):(?<item2>.+[\w&.\-]*)")
  1001. mt = re.Match(Message)
  1002. item = mt.Groups("item").ToString
  1003. item2 = mt.Groups("item2").ToString
  1004. SQL = "INSERT INTO tblusergems(botid, username, channel, message) VALUES(" & BotID & ", """ & QueryClean(item) & """, """ & channel & """,""" & QueryClean(item2) & """)"
  1005.  
  1006. If InsertRecords(SQL, "joinmsg") Then
  1007. SendInfo("PRIVMSG " & channel & " :Added join msg " & item, SendBytes, tnSocket)
  1008.  
  1009. End If
  1010.  
  1011. Return True
  1012. End If
  1013.  
  1014.  
  1015. If RegXPChecker("^" & cmdPrefix & "gem$", Message) Then
  1016.  
  1017. Dim maxint As String = "0"
  1018. Dim minint As String = "0"
  1019. maxint = GetField("SELECT max(idnum) FROM tbllines", maxint, "Max")
  1020. minint = GetField("SELECT min(idnum) FROM tbllines", minint, "min") - 1
  1021.  
  1022. SQL = "SELECT Line FROM tbllines WHERE IDNum>=" & RandomNumber(maxint, minint)
  1023.  
  1024. Dim conn As New MySqlConnection
  1025. Dim myCommand As New MySqlCommand
  1026. Dim myReader As MySqlDataReader
  1027.  
  1028. conn.ConnectionString = des.Decrypt(My.Settings.ConnStr)
  1029. Try
  1030. conn.Open()
  1031.  
  1032. Try
  1033. myCommand.Connection = conn
  1034. myCommand.CommandText = SQL
  1035. myReader = myCommand.ExecuteReader
  1036. Dim reply As String = ""
  1037. While myReader.Read
  1038. reply = "PRIVMSG " & channel & " :" & nz(myReader.GetValue(0), "")
  1039. Exit While
  1040. End While
  1041.  
  1042. SendInfo(reply, SendBytes, tnSocket)
  1043.  
  1044. Catch myerror As MySqlException
  1045. MsgBox("There was an error reading from the database: " & myerror.Message)
  1046. End Try
  1047. Catch myerror As MySqlException
  1048. MsgBox("Error connecting to the database: " & myerror.Message)
  1049. Finally
  1050. If conn.State <> ConnectionState.Closed Then conn.Close()
  1051. End Try
  1052. Return True
  1053. End If
  1054.  
  1055. If RegXPChecker("^" & cmdPrefix & "8ball (?<item>.+)", Message) Then
  1056. re = New Regex("^" & cmdPrefix & "8ball (?<item>.+)")
  1057. mt = re.Match(Message)
  1058. item = mt.Groups("item").ToString
  1059. Dim EightBallResponse(20) As String
  1060. EightBallResponse(0) = "You may rely on it"
  1061. EightBallResponse(1) = "Yes - definitely"
  1062. EightBallResponse(2) = "Yes"
  1063. EightBallResponse(3) = "Without a doubt"
  1064. EightBallResponse(4) = "Very doubtful"
  1065. EightBallResponse(5) = "Signs point to yes"
  1066. EightBallResponse(6) = "Reply hazy, try again"
  1067. EightBallResponse(7) = "Outlook not so good"
  1068. EightBallResponse(8) = "Outlook good"
  1069. EightBallResponse(9) = "My sources say no"
  1070. EightBallResponse(10) = "My reply is no"
  1071. EightBallResponse(11) = "Most likely"
  1072. EightBallResponse(12) = "It is decidedly so"
  1073. EightBallResponse(13) = "It is certain"
  1074. EightBallResponse(14) = "Don't count on it"
  1075. EightBallResponse(15) = "Concentrate and ask again"
  1076. EightBallResponse(16) = "Cannot predict now"
  1077. EightBallResponse(17) = "Better not tell you now"
  1078. EightBallResponse(18) = "Ask again later"
  1079. EightBallResponse(19) = "As I see it, yes"
  1080.  
  1081.  
  1082. Dim rndnumeightball As Integer
  1083. rndnumeightball=randomnumber(19,0)
  1084. Debug.Print(rndnumeightball)
  1085. SendInfo("PRIVMSG " & channel & " :" & EightBallResponse(rndnumeightball),SendBytes,tnSocket)
  1086. Return True
  1087. End If
  1088.  
  1089. If RegXPChecker("^" & cmdPrefix & "seen (?<item>.+)", Message) Then
  1090. re = New Regex("^" & cmdPrefix & "seen (?<item>.+)")
  1091. mt = re.Match(Message)
  1092. item = mt.Groups("item").ToString
  1093.  
  1094. SQL = "SELECT TheTime,message FROM tbluserchat WHERE tbluserchat.Nick=""" & QueryClean(item) & """ AND tbluserchat.Channel=""" & QueryClean(channel) & """ ORDER BY idnum DESC LIMIT 1"
  1095.  
  1096. Dim conn As New MySqlConnection
  1097. Dim myCommand As New MySqlCommand
  1098. Dim myReader As MySqlDataReader
  1099.  
  1100. conn.ConnectionString = des.Decrypt(My.Settings.ConnStr)
  1101.  
  1102. Try
  1103. conn.Open()
  1104.  
  1105. Try
  1106. myCommand.Connection = conn
  1107. myCommand.CommandText = SQL
  1108. myReader = myCommand.ExecuteReader
  1109. Dim reply As String = ""
  1110. While myReader.Read
  1111. reply = "PRIVMSG " & channel & " :" & item & " was last seen on: " & nz(myReader.GetValue(0), "Never") & " Saying " & nz(myReader.GetValue(1), "I Dont Exist!")
  1112. End While
  1113.  
  1114. SendInfo(reply, SendBytes, tnSocket)
  1115. Catch myerror As MySqlException
  1116. MsgBox("There was an error reading from the database: " & myerror.Message)
  1117. End Try
  1118. Catch myerror As MySqlException
  1119. MsgBox("Error connecting to the database: " & myerror.Message)
  1120. Finally
  1121. If conn.State <> ConnectionState.Closed Then conn.Close()
  1122. End Try
  1123. Return True
  1124. End If
  1125.  
  1126.  
  1127.  
  1128. If RegXPChecker("^" & cmdPrefix & "youtube (?<item>.+)", Message) Then
  1129. re = New Regex("^" & cmdPrefix & "youtube (?<item>.+)")
  1130. mt = re.Match(Message)
  1131. item = mt.Groups("item").ToString
  1132. Dim youtubeService = New YouTubeService(New BaseClientService.Initializer() With {
  1133. .ApiKey = "AIzaSyDXLdLqJC4u15v9n3QfLc_Z7a_X_sYKmsY",
  1134. .ApplicationName = Me.[GetType]().ToString()
  1135. })
  1136.  
  1137. Dim searchListRequest = youtubeService.Search.List("snippet")
  1138. searchListRequest.Q = item
  1139. 'searchListRequest.CreateRequest(SearchListResponse)
  1140. Dim searchListResponse = searchListRequest.Execute()
  1141.  
  1142. ' Replace with your search term.
  1143. searchListRequest.MaxResults = 1
  1144.  
  1145. ' Call the search.list method to retrieve results matching the specified query term.
  1146.  
  1147. Dim videos As New List(Of String)()
  1148. Dim channels As New List(Of String)()
  1149. Dim playlists As New List(Of String)()
  1150. Dim resultid As String = ""
  1151. Dim resulttitle As String = ""
  1152. ' Add each result to the appropriate list, and then display the lists of
  1153. ' matching videos, channels, and playlists.
  1154. For Each searchResult In searchListResponse.Items
  1155. Select Case searchResult.Id.Kind
  1156. Case "youtube#video"
  1157. resulttitle = searchResult.Snippet.Title
  1158. resultid = searchResult.Id.VideoId
  1159. Exit For
  1160. videos.Add([String].Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.VideoId))
  1161. Exit Select
  1162.  
  1163. Case "youtube#channel"
  1164. channels.Add([String].Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.ChannelId))
  1165. Exit Select
  1166.  
  1167. Case "youtube#playlist"
  1168. playlists.Add([String].Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.PlaylistId))
  1169. Exit Select
  1170. End Select
  1171. Next
  1172. Dim reply
  1173.  
  1174.  
  1175. If resultid = "" = False Then
  1176. reply = "PRIVMSG " & channel & " :" & resulttitle
  1177. SendInfo(reply, SendBytes, tnSocket)
  1178. reply = "PRIVMSG " & channel & " :https://www.youtube.com/watch?v=" & resultid
  1179. SendInfo(reply, SendBytes, tnSocket)
  1180. End If
  1181.  
  1182. Return True
  1183. End If
  1184.  
  1185.  
  1186. If RegXPChecker("^" & cmdPrefix & "google (?<item>.+)", Message) Then
  1187. re = New Regex("^" & cmdPrefix & "google (?<item>.+)")
  1188. mt = re.Match(Message)
  1189. item = mt.Groups("item").ToString
  1190.  
  1191. Dim url = "http://www.google.com/search?q=" & item & "&btnI'"
  1192. Dim request As WebRequest = WebRequest.Create(url)
  1193. Dim webresponse As WebResponse = request.GetResponse()
  1194.  
  1195.  
  1196. Dim sr As System.IO.StreamReader = New System.IO.StreamReader(webresponse.GetResponseStream())
  1197.  
  1198. Dim youtube As String = sr.ReadToEnd
  1199.  
  1200. Dim r As New System.Text.RegularExpressions.Regex("""title"": "".*""")
  1201. Dim matches As MatchCollection = r.Matches(youtube)
  1202. Dim result2 = ""
  1203. For Each itemcode As Match In matches
  1204. result2 = itemcode.Value.Split(":").GetValue(1).Trim().TrimStart("""").TrimEnd("""")
  1205. Next
  1206.  
  1207. Dim reply
  1208. If result2 = "" = False Then
  1209. reply = "PRIVMSG " & channel & " :" & result2
  1210. SendInfo(reply, SendBytes, tnSocket)
  1211. End If
  1212.  
  1213.  
  1214. End If
  1215.  
  1216. If RegXPChecker("^" & cmdPrefix & "weather (?<item>.+)", Message) Then
  1217. re = New Regex("^" & cmdPrefix & "weather (?<item>.+)")
  1218. mt = re.Match(Message)
  1219. item = mt.Groups("item").ToString
  1220. 'Dim url As String = "http://http://api.openweathermap.org/data/2.5/weather?q=" & item
  1221. Dim url As String = "http://api.wunderground.com/auto/wui/geo/WXCurrentObXML/index.xml?query=" & item
  1222. Dim webClient As System.Net.WebClient = New System.Net.WebClient()
  1223. webClient.DownloadFile(url, "c:\bot\tmp.txt")
  1224. Dim str2 As String = ""
  1225. Dim xmlparse As New XmlReader
  1226. Dim reply As String
  1227.  
  1228. reply = xmlparse.ReadXML("c:\bot\tmp.txt")
  1229.  
  1230. If reply = "" Or reply = "None" Then
  1231. Return False
  1232. End If
  1233.  
  1234. reply = "PRIVMSG " & channel & " :" & reply
  1235. SendInfo(reply, SendBytes, tnSocket)
  1236. Return True
  1237. End If
  1238.  
  1239. If RegXPChecker("^" & cmdPrefix & "unban (?<item>.+)", Message) Then
  1240. re = New Regex("^" & cmdPrefix & "unban (?<item>.+)")
  1241. mt = re.Match(Message)
  1242. item = mt.Groups("item").ToString
  1243. SendInfo("MODE " & channel & " -b " & item & "@", SendBytes, tnSocket)
  1244. Return True
  1245. End If
  1246.  
  1247. If RegXPChecker("^\" & cmdPrefix & "say (?<item>.+)", Message) Then
  1248. re = New Regex("^\" & cmdPrefix & "say (?<item>.+)")
  1249. mt = re.Match(Message)
  1250. item = mt.Groups("item").ToString
  1251. SendInfo("PRIVMSG " & channel & " :" & item & vbCrLf, SendBytes, tnSocket)
  1252. Return True
  1253. End If
  1254.  
  1255. 'LEVEL ADDING AND GROUP CMD ADDING
  1256. If RegXPChecker("^\" & cmdPrefix & "addlevel (?<item>.+) (?<item2>.+)", Message) Then
  1257. re = New Regex("^\" & cmdPrefix & "addlevel (?<item>.+) (?<item2>.+)")
  1258. mt = re.Match(Message)
  1259. item = mt.Groups("item").ToString
  1260. item2 = mt.Groups("item2").ToString
  1261.  
  1262. If InStr(item, "#") > 0 Then
  1263. Return False
  1264. End If
  1265.  
  1266. If RegXPChecker(ZeroTo9Regex, item2) = False Then
  1267. SendInfo("PRIVMSG " & channel & " :" & item & vbCrLf, SendBytes, tnSocket)
  1268. End If
  1269.  
  1270. result = AclClass.AddUserLevel(item, BotID, channel, BotName, item2, ServerName)
  1271.  
  1272. If Not result = "False" Then
  1273. SendInfo(result, SendBytes, tnSocket)
  1274. End If
  1275.  
  1276. Return True
  1277. End If
  1278.  
  1279. If RegXPChecker("^\" & cmdPrefix & "addlevel (?<item>.+) ", Message) Then
  1280. re = New Regex("^\" & cmdPrefix & "addlevel (?<item>.+)")
  1281. mt = re.Match(Message)
  1282. item = "#" & mt.Groups("item").ToString
  1283. item2 = mt.Groups("item2").ToString
  1284.  
  1285. If RegXPChecker(ZeroTo9Regex, item2) = False Then
  1286. SendInfo("PRIVMSG " & channel & " :" & item & vbCrLf, SendBytes, tnSocket)
  1287. End If
  1288.  
  1289. result = AclClass.AddUserLevel(item, BotID, channel, BotName, item2, ServerName)
  1290.  
  1291. If Not result = "False" Then
  1292. SendInfo(result, SendBytes, tnSocket)
  1293. End If
  1294.  
  1295. Return True
  1296. End If
  1297.  
  1298. If RegXPChecker("^" & cmdPrefix & "dellevel (?<item>.+?) (?<item2>.+)", Message) Then
  1299. re = New Regex("^" & cmdPrefix & "dellevel (?<item>.+?) (?<item2>.+)")
  1300. mt = re.Match(Message)
  1301. item = mt.Groups("item").ToString
  1302. item2 = mt.Groups("item2").ToString
  1303. SendInfo("PRIVMSG " & channel & " :Deleted level " & item & vbCrLf, SendBytes, tnSocket)
  1304. Return True
  1305. End If
  1306.  
  1307. If RegXPChecker("^" & cmdPrefix & "delcmd (?<item>.+) group (?<item2>.+)", Message) Then
  1308. re = New Regex("^" & cmdPrefix & "delcmd (?<item>.+) group (?<item2>.+)")
  1309. mt = re.Match(Message)
  1310. item = mt.Groups("item").ToString
  1311. item2 = mt.Groups("item2").ToString
  1312. SendInfo("PRIVMSG " & channel & " :Deleted command group " & item2 & vbCrLf, SendBytes, tnSocket)
  1313. Return True
  1314. End If
  1315.  
  1316. If RegXPChecker("^\" & cmdPrefix & "addgroup (?<item>.+?) (?<item2>.+)", Message) Then
  1317. re = New Regex("^\" & cmdPrefix & "addgroup (?<item>.+?) (?<item2>.+)")
  1318. mt = re.Match(Message)
  1319. item = mt.Groups("item").ToString
  1320. item2 = mt.Groups("item2").ToString
  1321. result = AclClass.AddUserGroup(BotName, item2, BotID, channel, item, ServerName)
  1322.  
  1323. If Not result = "False" Then
  1324. SendInfo(result, SendBytes, tnSocket)
  1325. End If
  1326.  
  1327. Return True
  1328. End If
  1329.  
  1330. If RegXPChecker("^\" & cmdPrefix & "listgroups (?<item>.+?)", Message) Then
  1331. re = New Regex("^\" & cmdPrefix & "listgroups (?<item>.+?)")
  1332. mt = re.Match(Message)
  1333. item = mt.Groups("item").ToString
  1334. If RegXPChecker(A2ZRegex, item) Then
  1335.  
  1336. SQL = "SELECT BotGroup FROM tblaclbygroup WHERE BotID=" & BotID & " AND BotGroup=""" & item & """GROUP BY BotGroup"
  1337.  
  1338. Dim conn As New MySqlConnection
  1339. Dim myCommand As New MySqlCommand
  1340. Dim myReader As MySqlDataReader
  1341.  
  1342. conn.ConnectionString = des.Decrypt(My.Settings.ConnStr)
  1343.  
  1344. Try
  1345. conn.Open()
  1346.  
  1347. Try
  1348. myCommand.Connection = conn
  1349. myCommand.CommandText = SQL
  1350. myReader = myCommand.ExecuteReader
  1351. Dim reply As String = ""
  1352.  
  1353. While myReader.Read
  1354. reply = nz(myReader.GetValue(0), "")
  1355. SendInfo("NOTICE " & nickname & " : Group " & reply & vbCrLf, SendBytes, tnSocket)
  1356. Wait(1000)
  1357. End While
  1358.  
  1359. Catch myerror As MySqlException
  1360. MsgBox("There was an error reading from the database: " & myerror.Message)
  1361. End Try
  1362. Catch myerror As MySqlException
  1363. MsgBox("Error connecting to the database: " & myerror.Message)
  1364. Finally
  1365. If conn.State <> ConnectionState.Closed Then conn.Close()
  1366. End Try
  1367. End If
  1368.  
  1369. Return True
  1370. End If
  1371.  
  1372. If RegXPChecker("^" & cmdPrefix & "listgroups$", Message) Then
  1373. SQL = "SELECT BotGroup FROM tblaclbygroup WHERE BotID=" & BotID & " GROUP BY BotGroup"
  1374.  
  1375. Dim conn As New MySqlConnection
  1376. Dim myCommand As New MySqlCommand
  1377. Dim myReader As MySqlDataReader
  1378.  
  1379. conn.ConnectionString = des.Decrypt(My.Settings.ConnStr)
  1380.  
  1381. Try
  1382. conn.Open()
  1383.  
  1384. Try
  1385. myCommand.Connection = conn
  1386. myCommand.CommandText = SQL
  1387. myReader = myCommand.ExecuteReader
  1388. Dim reply As String = ""
  1389.  
  1390. While myReader.Read
  1391. reply = nz(myReader.GetValue(0), "")
  1392. SendInfo("NOTICE " & nickname & " : Group " & reply & vbCrLf, SendBytes, tnSocket)
  1393. Wait(1000)
  1394. End While
  1395.  
  1396. Catch myerror As MySqlException
  1397. MsgBox("There was an error reading from the database: " & myerror.Message)
  1398. End Try
  1399. Catch myerror As MySqlException
  1400. MsgBox("Error connecting to the database: " & myerror.Message)
  1401. Finally
  1402. If conn.State <> ConnectionState.Closed Then conn.Close()
  1403. End Try
  1404. Return True
  1405. End If
  1406.  
  1407. If RegXPChecker("^\" & cmdPrefix & "listlevels (?<item>.+?)", Message) Then
  1408. re = New Regex("^\" & cmdPrefix & "listlevels (?<item>.+?)")
  1409. mt = re.Match(Message)
  1410. item = mt.Groups("item").ToString
  1411. If RegXPChecker(ZeroTo9Regex, item) Then
  1412.  
  1413. SQL = "SELECT Level FROM tblacl WHERE BotID=" & BotID & " AND Level=""" & item & """ GROUP BY Level"
  1414.  
  1415. Dim conn As New MySqlConnection
  1416. Dim myCommand As New MySqlCommand
  1417. Dim myReader As MySqlDataReader
  1418.  
  1419. conn.ConnectionString = des.Decrypt(My.Settings.ConnStr)
  1420.  
  1421. Try
  1422. conn.Open()
  1423.  
  1424. Try
  1425. myCommand.Connection = conn
  1426. myCommand.CommandText = SQL
  1427. myReader = myCommand.ExecuteReader
  1428. Dim reply As String = ""
  1429.  
  1430. While myReader.Read
  1431. reply = nz(myReader.GetValue(0), "")
  1432. SendInfo("NOTICE " & nickname & " : Level " & reply & vbCrLf, SendBytes, tnSocket)
  1433. Wait(1000)
  1434. End While
  1435.  
  1436. Catch myerror As MySqlException
  1437. MsgBox("There was an error reading from the database: " & myerror.Message)
  1438. End Try
  1439. Catch myerror As MySqlException
  1440. MsgBox("Error connecting to the database: " & myerror.Message)
  1441. Finally
  1442. If conn.State <> ConnectionState.Closed Then conn.Close()
  1443. End Try
  1444. End If
  1445.  
  1446. Return True
  1447. End If
  1448.  
  1449. If RegXPChecker("^\" & cmdPrefix & "listlevels$", Message) Then
  1450.  
  1451. SQL = "SELECT Level FROM tblacl WHERE BotID=" & BotID & " GROUP BY Level"
  1452.  
  1453. Dim conn As New MySqlConnection
  1454. Dim myCommand As New MySqlCommand
  1455. Dim myReader As MySqlDataReader
  1456.  
  1457. conn.ConnectionString = des.Decrypt(My.Settings.ConnStr)
  1458.  
  1459. Try
  1460. conn.Open()
  1461.  
  1462. Try
  1463. myCommand.Connection = conn
  1464. myCommand.CommandText = SQL
  1465. myReader = myCommand.ExecuteReader
  1466. Dim reply As String = ""
  1467.  
  1468. While myReader.Read
  1469. reply = nz(myReader.GetValue(0), "")
  1470. SendInfo("NOTICE " & nickname & " : Level " & reply & vbCrLf, SendBytes, tnSocket)
  1471. Wait(1000)
  1472. End While
  1473.  
  1474. Catch myerror As MySqlException
  1475. MsgBox("There was an error reading from the database: " & myerror.Message)
  1476. End Try
  1477. Catch myerror As MySqlException
  1478. MsgBox("Error connecting to the database: " & myerror.Message)
  1479. Finally
  1480. If conn.State <> ConnectionState.Closed Then conn.Close()
  1481. End Try
  1482. Return True
  1483. End If
  1484.  
  1485. If RegXPChecker("^\" & cmdPrefix & "delgroup (?<item>.+)", Message) Then
  1486. re = New Regex("^\" & cmdPrefix & "delgroup (?<item>.+)")
  1487. mt = re.Match(Message)
  1488. item = mt.Groups("item").ToString
  1489. result = AclClass.DelUserGroup(nickname, BotID, channel, item)
  1490.  
  1491. If Not result = "False" Then
  1492. SendInfo("PRIVMSG " & channel & " :Deleted level " & item & vbCrLf, SendBytes, tnSocket)
  1493. End If
  1494. Return True
  1495. End If
  1496.  
  1497. If RegXPChecker("^\" & cmdPrefix & "setupproxy (?<item>.+?)", Message) Then
  1498. re = New Regex("^\" & cmdPrefix & "setupproxy (?<item>.+?)")
  1499. mt = re.Match(Message)
  1500. item = mt.Groups("item").ToString
  1501.  
  1502. SQL = "INSERT INTO tblserverevasion(botID, ThreadID,Server,BotName) VALUES(" & BotID & ", """ & ThreadID & """, """ & item & """,""" & BotName & """)"
  1503. InsertRecords(SQL, "SETUP PROXY")
  1504. SendInfo("PRIVMSG " & channel & " :Added proxy " & item & vbCrLf, SendBytes, tnSocket)
  1505. Return True
  1506. End If
  1507.  
  1508. If RegXPChecker("^\" & cmdPrefix & "addcmd (?<item>.+?) (?<item2>.+)", Message) Then
  1509. re = New Regex("^\" & cmdPrefix & "addcmd (?<item>.+?) (?<item2>.+)")
  1510. mt = re.Match(Message)
  1511. item = mt.Groups("item").ToString
  1512. item2 = mt.Groups("item2").ToString
  1513.  
  1514. If RegXPChecker(ZeroTo9Regex, item2) Then
  1515. SQL = "INSERT INTO tblbotcmdlist(botid, Command, Level) VALUES(" & BotID & ", """ & item & """, """ & item2 & """)"
  1516. AddBotCmd(BotID, SQL)
  1517. SendInfo("PRIVMSG " & channel & " :Added command " & item & " to level: " & item2 & vbCrLf, SendBytes, tnSocket)
  1518. ElseIf RegXPChecker(A2ZRegex, item2) Then
  1519. SQL = "INSERT INTO tblbotcmdlist(botID, Command,GroupName) VALUES(" & BotID & ", """ & item & """, """ & item2 & """)"
  1520. AddBotCmd(BotID, SQL)
  1521. SendInfo("PRIVMSG " & channel & " :Added command " & item & " to group: " & item2 & vbCrLf, SendBytes, tnSocket)
  1522. End If
  1523.  
  1524. Return True
  1525. End If
  1526.  
  1527. If RegXPChecker("^" & cmdPrefix & "delcmd (?<item>.+?) (?<item2>.+)", Message) Then
  1528. re = New Regex("^" & cmdPrefix & "delcmd (?<item>.+?) (?<item2>.+)")
  1529. mt = re.Match(Message)
  1530. item = mt.Groups("item").ToString
  1531. item2 = mt.Groups("item2").ToString
  1532. SendInfo("PRIVMSG " & channel & " :Deleted command level " & item & vbCrLf, SendBytes, tnSocket)
  1533. Return True
  1534. End If
  1535.  
  1536. If RegXPChecker("^" & cmdPrefix & "wa (?<item>.+)", Message) Then
  1537. re = New Regex("^" & cmdPrefix & "wa (?<item>.+)")
  1538. mt = re.Match(Message)
  1539. item = mt.Groups("item").ToString
  1540. Dim Engine As New WolframAlphaEngine("R7HWET-RLWT2WRUVL")
  1541. Dim WolframAlphaApplicationID As String = "Greg"
  1542.  
  1543. 'Define what we want to search for.
  1544. Dim WolframAlphaSearchTerms As New WolframAlphaQuery
  1545. WolframAlphaSearchTerms.APIKey = "R7HWET-RLWT2WRUVL"
  1546. WolframAlphaSearchTerms.Query = item
  1547.  
  1548.  
  1549. Engine.LoadResponse(WolframAlphaSearchTerms)
  1550.  
  1551. 'Print out a message saying that the last task was successful.
  1552.  
  1553.  
  1554. Dim PodNumber As Integer = 1
  1555. Dim SubPodNumber As Integer = 1
  1556. For Each greg As WolframAlphaPod In Engine.QueryResult.Pods
  1557.  
  1558. Dim reply As String
  1559.  
  1560.  
  1561.  
  1562.  
  1563. For Each SubItem As WolframAlphaSubPod In greg.SubPods
  1564. If SubPodNumber = 2 Then
  1565. reply = "PRIVMSG " & channel & " :" & SubItem.Title
  1566. SendInfo(reply, SendBytes, tnSocket)
  1567. reply = "PRIVMSG " & channel & " :Answer " & SubItem.PodText & " " & SubItem.PodImage.Location.ToString
  1568.  
  1569.  
  1570.  
  1571. SendInfo(reply, SendBytes, tnSocket)
  1572.  
  1573. Exit For
  1574.  
  1575. End If
  1576.  
  1577.  
  1578. SubPodNumber += 1
  1579.  
  1580. Next
  1581. If PodNumber = 2 Then
  1582. Exit For
  1583. End If
  1584. PodNumber += 1
  1585.  
  1586. Next
  1587. Return True
  1588. End If
  1589.  
  1590.  
  1591. If RegXPChecker("^\" & cmdPrefix & "delcmd (?<item>.+?)", Message) Then
  1592. re = New Regex("^\" & cmdPrefix & "delcmd (?<item>.+?)")
  1593. mt = re.Match(Message)
  1594. item = mt.Groups("item").ToString
  1595. item2 = mt.Groups("item").ToString
  1596.  
  1597. 'If DeleteRecords("DELETE FROM tblbotcmdlist WHERE Command=""" & item & """", "Delete botcmdlist") Then
  1598.  
  1599. 'End If
  1600.  
  1601. SendInfo("PRIVMSG " & channel & " :Deleted command level " & item & vbCrLf, SendBytes, tnSocket)
  1602. Return True
  1603. End If
  1604.  
  1605. If RegXPChecker("^" & cmdPrefix & "link (?<item>.+)", Message) Then
  1606. re = New Regex("^" & cmdPrefix & "link (?<item>.+)")
  1607. mt = re.Match(Message)
  1608. item = mt.Groups("item").ToString
  1609. SendInfo("NOTICE " & item & " :Link" & BotName, SendBytes, tnSocket)
  1610. SendInfo("PRIVMSG " & channel & " :Linked to " & item, SendBytes, tnSocket)
  1611. Return True
  1612. End If
  1613.  
  1614. If RegXPChecker("^" & cmdPrefix & "unlink (?<item>.+)", Message) Then
  1615. re = New Regex("^" & cmdPrefix & "unlink (?<item>.+)")
  1616. mt = re.Match(Message)
  1617. item = mt.Groups("item").ToString
  1618. SendInfo("PRIVMSG " & channel & " :Linked " & item, SendBytes, tnSocket)
  1619. Return True
  1620. End If
  1621.  
  1622. If RegXPChecker("^" & cmdPrefix & "action (?<item>.+)", Message) Then
  1623. re = New Regex("^" & cmdPrefix & "action (?<item>.+)")
  1624. mt = re.Match(Message)
  1625. item = mt.Groups("item").ToString
  1626. SendInfo("PRIVMSG " & channel & " :" & "ACTION " & item & "", SendBytes, tnSocket)
  1627. Return True
  1628. End If
  1629.  
  1630. If RegXPChecker("^" & cmdPrefix & "topic (?<item>.+)", Message) Then
  1631. re = New Regex("^" & cmdPrefix & "topic (?<item>.+)")
  1632. mt = re.Match(Message)
  1633. item = mt.Groups("item").ToString
  1634. SendInfo("TOPIC " & channel & " :" & item, SendBytes, tnSocket)
  1635. Return True
  1636. End If
  1637.  
  1638. If RegXPChecker("^" & cmdPrefix & "part (?<item>.+)", Message) Then
  1639. re = New Regex("^" & cmdPrefix & "part (?<item>.+)")
  1640. mt = re.Match(Message)
  1641. item = mt.Groups("item").ToString
  1642. SendInfo("PART :" & item, SendBytes, tnSocket)
  1643. Return True
  1644. End If
  1645.  
  1646. If RegXPChecker("^" & cmdPrefix & "rejoin$", Message) Then
  1647. SendInfo("PART :" & channel, SendBytes, tnSocket)
  1648. SendInfo("JOIN :" & channel, SendBytes, tnSocket)
  1649. Return True
  1650. End If
  1651.  
  1652. If RegXPChecker("^" & cmdPrefix & "adduserprotect (?<item>.+) (?<item2>.+)", Message) Then
  1653. re = New Regex("^" & cmdPrefix & "adduserprotect (?<item>.+) (?<item2>.+)")
  1654. mt = re.Match(Message)
  1655. item = mt.Groups("item").ToString
  1656. item2 = mt.Groups("item2").ToString
  1657.  
  1658. If (AddProtect(item, BotName, item2, channel)) Then
  1659.  
  1660. End If
  1661.  
  1662. SendInfo("PRIVMSG " & channel & " :" & "added user", SendBytes, tnSocket)
  1663. Return True
  1664. End If
  1665.  
  1666. If RegXPChecker("^" & cmdPrefix & "adduserprotect (?<item>.+)", Message) Then
  1667. re = New Regex("^" & cmdPrefix & "adduserprotect (?<item>.+)")
  1668. mt = re.Match(Message)
  1669. item = mt.Groups("item").ToString
  1670.  
  1671. If (AddProtect(item, BotID, BotName)) Then
  1672.  
  1673. End If
  1674.  
  1675. SendInfo("PRIVMSG " & channel & " :" & "Added user:" & item, SendBytes, tnSocket)
  1676. Return True
  1677. End If
  1678.  
  1679. If RegXPChecker("^" & cmdPrefix & "deluserprotect (?<item>.+) (?<item2>.+)", Message) Then
  1680. re = New Regex("^" & cmdPrefix & "deluserprotect (?<item>.+) (?<item2>.+)")
  1681. mt = re.Match(Message)
  1682. item = mt.Groups("item").ToString
  1683. item2 = mt.Groups("item2").ToString
  1684.  
  1685. If (DelProtect(item, BotName, item2, channel)) Then
  1686.  
  1687. End If
  1688.  
  1689. SendInfo("PRIVMSG " & channel & " :" & "deleted user", SendBytes, tnSocket)
  1690. Return True
  1691. Else
  1692. If RegXPChecker("^" & cmdPrefix & "deluser (?<item>.+)", Message) Then
  1693. re = New Regex("^" & cmdPrefix & "deluser (?<item>.+)")
  1694. mt = re.Match(Message)
  1695. item = mt.Groups("item").ToString
  1696.  
  1697. If (DelProtect(item, BotName, "", channel)) Then
  1698.  
  1699. End If
  1700.  
  1701. SendInfo("PRIVMSG " & channel & " :" & "deleted user", SendBytes, tnSocket)
  1702. Return True
  1703. End If
  1704. End If
  1705.  
  1706. If RegXPChecker("^" & cmdPrefix & "deluserprotect (?<item>.+)", Message) Then
  1707. re = New Regex("^" & cmdPrefix & "deluserprotect (?<item>.+")
  1708. mt = re.Match(Message)
  1709. item = mt.Groups("item").ToString
  1710. item2 = mt.Groups("item2").ToString '
  1711.  
  1712. If (DelProtect(item, BotName, item2, channel)) Then
  1713.  
  1714. End If
  1715.  
  1716. SendInfo("PRIVMSG " & channel & " :" & "deleted user", SendBytes, tnSocket)
  1717. Return True
  1718. Else
  1719. If RegXPChecker("^" & cmdPrefix & "deluser (?<item>.+)", Message) Then
  1720. re = New Regex("^" & cmdPrefix & "deluser (?<item>.+)")
  1721. mt = re.Match(Message)
  1722. item = mt.Groups("item").ToString
  1723.  
  1724. If (DelProtect(item, BotName, "", channel)) Then
  1725.  
  1726. End If
  1727.  
  1728. SendInfo("PRIVMSG " & channel & " :" & "deleted user", SendBytes, tnSocket)
  1729. Return True
  1730. End If
  1731. End If
  1732.  
  1733. If RegXPChecker("^\" & cmdPrefix & "login$", Message) Then
  1734. SendInfo("NOTICE " & nickname & " :Please notice me auth:password" & vbCrLf, SendBytes, tnSocket)
  1735. Return True
  1736. End If
  1737.  
  1738.  
  1739. If RegXPChecker("^\" & cmdPrefix & "mylevel$", Message) Then
  1740. Dim Ulevel As String = ""
  1741. Dim UAuth As String = ""
  1742. Ulevel = GetField("SELECT Level FROM tblacl WHERE BotID=" & BotID & " AND UserAccessName=""" & nickname & """", Ulevel, "Ulevel")
  1743. SendInfo("NOTICE " & nickname & " :you are AuthStatus at Status:" & Ulevel & vbCrLf, SendBytes, tnSocket)
  1744. Return True
  1745. End If
  1746.  
  1747. If RegXPChecker("^" & cmdPrefix & "sql (?<item>.+)", Message) Then
  1748. re = New Regex("^" & cmdPrefix & "sql (?<item>.+)")
  1749. mt = re.Match(Message)
  1750. item = mt.Groups("item").ToString
  1751. If InStr(LCase(item), "drop") > 0 Then
  1752. SendInfo("NOTICE " & nickname & " :faggot", SendBytes, tnSocket)
  1753. Return True
  1754. End If
  1755.  
  1756. If InStr(LCase(item), "delete") > 0 Then
  1757. SendInfo("NOTICE " & nickname & " :faggot", SendBytes, tnSocket)
  1758. Return True
  1759. End If
  1760.  
  1761. If InStr(LCase(item), "update") > 0 Then
  1762. SendInfo("NOTICE " & nickname & " :faggot", SendBytes, tnSocket)
  1763. Return True
  1764. End If
  1765.  
  1766. If InStr(LCase(item), "truncate") > 0 Then
  1767. SendInfo("NOTICE " & nickname & " :faggot", SendBytes, tnSocket)
  1768. Return True
  1769. End If
  1770.  
  1771. If InStr(LCase(item), "insert") > 0 Then
  1772. SendInfo("NOTICE " & nickname & " :faggot", SendBytes, tnSocket)
  1773. Return True
  1774. End If
  1775. If InStr(LCase(item), "alter") > 0 Then
  1776. SendInfo("NOTICE " & nickname & " :faggot", SendBytes, tnSocket)
  1777. Return True
  1778. End If
  1779.  
  1780. If InStr(LCase(item), "desc") > 0 Then
  1781. Return True
  1782. End If
  1783. Dim conn As New MySqlConnection(My.Settings.ConnStr)
  1784.  
  1785. Try
  1786. conn.Open()
  1787. Dim stm As String = item
  1788. stm = QueryClean(stm)
  1789. Dim cmd As MySqlCommand = New MySqlCommand(stm, conn)
  1790. Dim reader As MySqlDataReader = cmd.ExecuteReader()
  1791. Dim result2 As String = vbNullString
  1792. While reader.Read()
  1793.  
  1794.  
  1795. Dim i
  1796. For i = 0 To reader.FieldCount - 1
  1797. result2 = result2 & " " & String.Concat(" ", reader(i))
  1798. Next i
  1799.  
  1800. SendInfo("PRIVMSG " & channel & " :" & reader.GetInt32(0) & ": " & result2, SendBytes, tnSocket)
  1801. result2 = ""
  1802. End While
  1803.  
  1804. reader.Close()
  1805.  
  1806. Catch ex As MySqlException
  1807. Console.WriteLine("Error: " & ex.ToString())
  1808. Finally
  1809. conn.Close()
  1810. End Try
  1811.  
  1812. Return True
  1813. End If
  1814.  
  1815. If Message = "gregbot" Then
  1816. SendInfo("PRIVMSG " & channel & " :I hate you " & nickname & vbCrLf, SendBytes, tnSocket)
  1817. Return True
  1818. End If
  1819.  
  1820. If Message = "paprpushr!" Then
  1821. SendInfo("PRIVMSG " & channel & " :I Push Paper!." & vbCrLf, SendBytes, tnSocket)
  1822.  
  1823. Return True
  1824. End If
  1825.  
  1826. If InStr(Message, "story") > 0 Then
  1827. SendInfo("PRIVMSG " & channel & " :Cool story BRO, tell it again." & vbCrLf, SendBytes, tnSocket)
  1828.  
  1829. Return True
  1830. End If
  1831.  
  1832. If Message = "Rick Astley" Then
  1833. SendInfo("PRIVMSG " & channel & " :Will Never Give You Up." & vbCrLf, SendBytes, tnSocket)
  1834. SendInfo("PRIVMSG " & channel & " :Never Let You Down, Never Turn Around and Hurt You" & vbCrLf, SendBytes, tnSocket)
  1835. Return True
  1836. End If
  1837.  
  1838. If Message = "@whyistwiglame" Then
  1839. SendInfo("PRIVMSG " & channel & " :Canada" & vbCrLf, SendBytes, tnSocket)
  1840. Return True
  1841. End If
  1842.  
  1843. If Message = "@gaydar_detect" Then
  1844. SendInfo("PRIVMSG " & channel & " :Detecting Canadians" & vbCrLf, SendBytes, tnSocket)
  1845. Return True
  1846. End If
  1847.  
  1848. If InStr(Message, "gay") > 0 Then
  1849. SendInfo("PRIVMSG " & channel & " :Like Canada?" & vbCrLf, SendBytes, tnSocket)
  1850. Return True
  1851. End If
  1852.  
  1853. Dim mygames As New Games
  1854. mygames.BlackJack(Message)
  1855. Return False
  1856. Else
  1857. Return False
  1858. End If
  1859. End Function
  1860.  
  1861. Public Function CtcpReply(ByVal message As String, ByVal nickname As String) As Boolean
  1862. 'FUNCTION NAME: CtcpReply
  1863. 'INPUT : Message from channel, Nickname from channel
  1864. 'EXISTANCE : Replies to the user any ctcp request
  1865. 'OUTPUT : The nesscary request response over ctcp
  1866.  
  1867. If RegXPChecker("\001PING (?<ts>.+)\001", message) Then
  1868. Dim epochtime As String
  1869. Dim ddate As Date
  1870. ddate = "1/1/1970"
  1871. epochtime = CStr(DateDiff(DateInterval.Second, CDate("1/1/1970"), Now.ToUniversalTime))
  1872. SendInfo("NOTICE " & nickname & " :" & Chr(1) & "PING" & " " & epochtime & Chr(1), SendBytes, tnSocket)
  1873. Return True
  1874. End If
  1875.  
  1876. If RegXPChecker("\001VERSION\001", message) Then
  1877. SendInfo("NOTICE " & nickname & " :" & Chr(1) & "VERSION " & "Easy WinDrop " & 1 & Chr(1), SendBytes, tnSocket)
  1878. Return True
  1879. End If
  1880.  
  1881. If RegXPChecker("\001TIME\001", message) Then
  1882. SendInfo("NOTICE " & nickname & " :" & Chr(1) & "TIME" & " " & Now.Date.DayOfWeek.ToString & " " & Now.ToUniversalTime & " " & Now.Year & Chr(1), SendBytes, tnSocket)
  1883. Return True
  1884. End If
  1885. Return False
  1886. End Function
  1887.  
  1888. Public Function SetNickOnServer(ByRef tnSocket As Socket) As Boolean
  1889. 'FUNCTION NAME: SetNickOnServer
  1890. 'INPUT : Nothing
  1891. 'EXISTANCE : Sets the nick and user pref stats
  1892. 'OUTPUT : Data to server about this connect to log in
  1893.  
  1894. If LocalFirstSW = True Then
  1895. SendInfo("NICK " & CurrBotName & vbCrLf, SendBytes, tnSocket)
  1896. SendInfo("USER EasyWinDrop 8 * : EasyWinDrop 1.0" & vbCrLf, SendBytes, tnSocket)
  1897. ConnectedToServer = True
  1898. LocalFirstSW = False
  1899. Return True
  1900. End If
  1901.  
  1902. If ChannelJoinSW = True Then
  1903. Wait(3000)
  1904. 'CHANNEL JOIN
  1905. 'InitialJoin()
  1906. ChannelJoinSW = False
  1907. JoinAnswer = True
  1908. Return True
  1909. End If
  1910. Return False
  1911. End Function
  1912.  
  1913. Public Function PingServer(ByVal RecvString) As Boolean
  1914. 'FUNCTION NAME: PingServer
  1915. 'INPUT : Recv Data From Socket
  1916. 'EXISTANCE : Pings server to maintain connecitong
  1917. 'OUTPUT : Pong reply
  1918.  
  1919.  
  1920.  
  1921. If RegXPChecker("^PING \:(?<key>.+)", RecvString) Then
  1922. Dim re As New Regex("PING \:(?<key>.+)")
  1923. Dim item
  1924.  
  1925. mt = re.Match(RecvString)
  1926. item = mt.Groups("key").ToString
  1927. SendInfo("PONG :" & item & vbCrLf, SendBytes, tnSocket)
  1928. TheTextBox.AppendText("PONG :" & item & vbCrLf)
  1929. RecvString = ""
  1930. item = Nothing
  1931. Return True
  1932. End If
  1933. Return False
  1934. End Function
  1935.  
  1936. Public Function PingServerWait() As Boolean
  1937. 'FUNCTION NAME: PingServer
  1938. 'INPUT : Recv Data From Socket
  1939. 'EXISTANCE : Pings server to maintain connecitong
  1940. 'OUTPUT : Pong reply
  1941.  
  1942. Do
  1943. Wait(20000)
  1944. SendInfo("PONG :" & ServerName & vbCrLf, SendBytes, tnSocket)
  1945. TheTextBox.AppendText("PONG :" & ServerName & vbCrLf)
  1946. Loop
  1947.  
  1948. Return True
  1949.  
  1950.  
  1951. End Function
  1952.  
  1953.  
  1954. Public Function InitialJoin() As Boolean
  1955. 'FUNCTION NAME: InitialJoin
  1956. 'INPUT : Nothing
  1957. 'EXISTANCE : Selects channels and joins then
  1958. 'OUTPUT : Joined channel
  1959.  
  1960. 'CHANNEL INNER JOIN
  1961. 'SELECT tblbots.idnum, tblchannellist.ChannelName
  1962. 'FROM tblbots INNER JOIN tblchannellist ON tblbots.idnum = tblchannellist.BotID
  1963. 'WHERE (((tblbots.idnum)=1));
  1964.  
  1965. SQL = "SELECT ChannelName,AutoOp FROM tblchannellist WHERE BotID=" & BotID
  1966.  
  1967. Dim conn As New MySqlConnection
  1968. Dim myCommand As New MySqlCommand
  1969. Dim myReader As MySqlDataReader
  1970.  
  1971. conn.ConnectionString = des.Decrypt(My.Settings.ConnStr)
  1972.  
  1973. Try
  1974. conn.Open()
  1975.  
  1976. Try
  1977. myCommand.Connection = conn
  1978. myCommand.CommandText = SQL
  1979. myReader = myCommand.ExecuteReader
  1980. Dim reply As String = ""
  1981.  
  1982. While myReader.Read
  1983. reply = nz(myReader.GetValue(0), "")
  1984. SendInfo("JOIN " & reply, SendBytes, tnSocket)
  1985. End While
  1986.  
  1987. Catch myerror As MySqlException
  1988. MsgBox("There was an error reading from the database: " & myerror.Message)
  1989. Return False
  1990. End Try
  1991. Catch myerror As MySqlException
  1992. MsgBox("Error connecting to the database: " & myerror.Message)
  1993. Return False
  1994. Finally
  1995. If conn.State <> ConnectionState.Closed Then conn.Close()
  1996. End Try
  1997. Return True
  1998. End Function
  1999.  
  2000. Public Function Quit(ByRef RecvString As String, ByVal ThreadID As Long) As Boolean
  2001. 'FUNCTION NAME: Quit
  2002. 'INPUT : Recv Data,TheadID
  2003. 'EXISTANCE : Kills bot through proto
  2004. 'OUTPUT : sends quit cmd if its a panel kill, sends sig term to text box to remove
  2005.  
  2006. 'PANEL KILL
  2007. Dim RegExp As String = ""
  2008.  
  2009. If ThreadID = ThreadKillID And Not ThreadID = 0 Then
  2010. ' SendInfo("QUIT :Easy Win Drop Panel Kill" & vbCrLf, SendBytes, tnSocket)
  2011. Wait(2000)
  2012. Return False
  2013. End If
  2014.  
  2015. 'SERVER DISCONNECT
  2016. RegExp = "ERROR \:Closing Link: .+"
  2017. If RegXPChecker(RegExp, RecvString) Then
  2018. 'SEND SIGTERM TO TEXTBOX
  2019. TheTextBox.AppendText("CLOSING:" & ThreadID)
  2020. 'DETERMINE IF BOT NEEDS RECONNECT
  2021.  
  2022. If ExitSW Then
  2023. LocalFirstSW = True
  2024. ChannelJoinSW = True
  2025. tnSocket.Close()
  2026. Return True
  2027. End If
  2028.  
  2029.  
  2030. Quit = False
  2031. RecvString = ""
  2032. Exit Function
  2033. End If
  2034. Return False
  2035. End Function
  2036.  
  2037. Public Function RandomNumber(ByVal MaxNumber As Integer, Optional ByVal MinNumber As Integer = 0) As Integer
  2038. 'FUNCTION NAME: RandomNumber
  2039. 'INPUT : MaxNumber,MinNumber
  2040. 'EXISTANCE : Gens random number
  2041. 'OUTPUT : A random number
  2042.  
  2043. 'initialize random number generator
  2044. 'if passed incorrect arguments, swap them
  2045. 'can also throw exception or return 0
  2046.  
  2047. If MinNumber > MaxNumber Then
  2048. Dim t As Integer = MinNumber
  2049. MinNumber = MaxNumber
  2050. MaxNumber = t
  2051. End If
  2052. Return rndNum.Next(MinNumber, MaxNumber)
  2053. End Function
  2054. End Class
Add Comment
Please, Sign In to add comment