Advertisement
Guest User

Untitled

a guest
May 7th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Private WithEvents Winsock1 As Winsock
  2.  
  3. Private m_Server   As String, _
  4.         m_Port     As String, _
  5.         m_Nick     As String, _
  6.         m_AuthUser As String, _
  7.         m_AuthPass As String
  8.        
  9. Private Step As Integer
  10.  
  11. Public Event Connected()
  12. Public Event DataArrived(Data As String)
  13. Public Event UserInRoom(User As String)
  14. Public Event UserLeftRoom(User As String)
  15. Public Event VersionInfo(User As String, Info As String)
  16. Public Event Message(User As String, Msg As String)
  17. Public Event ChannelMessage(Channel As String, Msg As String)
  18. Public Event NotSure(Msg As String)
  19.  
  20. Public Property Get Server() As String
  21.     Server = m_Server
  22. End Property
  23. Public Property Let Server(TheServer As String)
  24.     m_Server = TheServer
  25. End Property
  26.  
  27. Public Property Get Port() As String
  28.     Port = m_Port
  29. End Property
  30. Public Property Let Port(ThePort As String)
  31.     m_Port = ThePort
  32. End Property
  33.  
  34. Public Property Get Nick() As String
  35.     Nick = m_Nick
  36. End Property
  37. Public Property Let Nick(TheNick As String)
  38.     m_Nick = TheNick
  39. End Property
  40.  
  41. Public Property Get AuthUser() As String
  42.     AuthUser = m_AuthUser
  43. End Property
  44. Public Property Let AuthUser(TheAuthUser As String)
  45.     m_AuthUser = TheAuthUser
  46. End Property
  47.  
  48. Public Property Get AuthPass() As String
  49.     AuthPass = m_AuthPass
  50. End Property
  51. Public Property Let AuthPass(TheAuthPass As String)
  52.     m_AuthPass = TheAuthPass
  53. End Property
  54.  
  55. Public Sub Connect()
  56.     Winsock1.Close
  57.     Winsock1.Connect m_Server, m_Port
  58. End Sub
  59.  
  60. Public Sub BindWinsock(SCK As Winsock)
  61.     Set Winsock1 = SCK
  62. End Sub
  63.  
  64. Private Sub Winsock1_Connect()
  65.     RaiseEvent Connected
  66.     Step = 0
  67. End Sub
  68.  
  69. Public Sub Auth()
  70.     SendData "AUTHSERV AUTH " & m_AuthUser & " " & m_AuthPass
  71. End Sub
  72.  
  73. Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  74.  
  75.     Dim Inc As String, Tmp() As String, i As Integer, d As String, x As Integer, t() As String
  76.    
  77.     Winsock1.GetData Inc
  78.     RaiseEvent DataArrived(Inc)
  79.    
  80.     If Step = 0 Then
  81.         SendData "NICK " & m_Nick
  82.         SendData "USER " & m_Nick & " ""yahoo.com"" """ & m_Server & """ :chris"
  83.         SendData "PROTOCTL NAMESX"
  84.         Step = 1
  85.         Exit Sub
  86.     End If
  87.    
  88.     t() = Split(Inc, vbCrLf)
  89.    
  90.     For x = 0 To (UBound(t) - 1)
  91.         Tmp() = Split(t(x), " ")
  92.        
  93.         Select Case Tmp(0)
  94.             Case "PING"
  95.                 SendData "PONG :" & Mid(Tmp(1), 2)
  96.         End Select
  97.    
  98.         If UBound(Tmp) = 0 Then Exit Sub
  99.  
  100.        
  101.         Select Case Tmp(1)
  102.             Case "353" 'names list
  103.                For i = 6 To (UBound(Tmp) - 1)
  104.                     RaiseEvent UserInRoom(Tmp(i))
  105.                 Next
  106.             Case "PART"
  107.                 d = Split(Tmp(0), "!")(0)
  108.                 RaiseEvent UserLeftRoom(Mid(d, 2))
  109.                
  110.             Case "JOIN"
  111.                 d = Split(Tmp(0), "!")(0)
  112.                 RaiseEvent UserInRoom(Mid(d, 2))
  113.                
  114.             Case "NOTICE"
  115.                 If Tmp(3) = ":" & Chr(1) & "VERSION" Then
  116.                     d = Split(Tmp(0), "!")(0)
  117.                     RaiseEvent VersionInfo(Mid(d, 2), Replace(AppendArray(Tmp(), 4, " "), Chr(1), ""))
  118.                 End If
  119.                
  120.             Case "PRIVMSG"
  121.                 d = Split(Tmp(0), "!")(0)
  122.                 If Tmp(3) = ":" & Chr(1) & "VERSION" & Chr(1) Then
  123.                     SendData "NOTICE " & Mid(d, 2) & " :" & Chr(1) & "VERSION PINEAPPLES ARE AWESOME" & Chr(1)
  124.                 End If
  125.                
  126.             Case Else
  127.                 RaiseEvent NotSure(t(x))
  128.         End Select
  129.     Next
  130. End Sub
  131.  
  132. Private Function AppendArray(Ar As Variant, s As Integer, Delim As String)
  133.  
  134.     Dim i As Integer
  135.    
  136.     For i = s To UBound(Ar)
  137.         AppendArray = AppendArray & Ar(i) & Delim
  138.     Next
  139.    
  140.     AppendArray = Left(AppendArray, Len(AppendArray) - Len(Delim))
  141.  
  142. End Function
  143. Private Sub SendData(Data As String)
  144.     Winsock1.SendData Data & vbCrLf
  145. End Sub
  146.  
  147. Public Sub JoinChannel(Channel As String)
  148.     SendData "JOIN #" & Channel
  149.     SendData "MODE #" & Channel
  150. End Sub
  151.  
  152. Public Sub LeaveChannel(Channel As String)
  153.     SendData "PART #" & Channel
  154. End Sub
  155.  
  156. Public Sub SendChat(Channel As String, Txt As String)
  157.     SendData "PRIVMSG #" & Channel & " :" & Txt
  158. End Sub
  159.  
  160. Public Sub SendPM(User As String, Txt As String)
  161.     SendData "PRIVMSG " & User & " :" & Txt
  162. End Sub
  163.  
  164. Public Sub NS(cmd As String)
  165.     SendData "NS " & cmd
  166. End Sub
  167.  
  168. Public Sub Version(User As String)
  169.     SendData "PRIVMSG " & User & " :" & Chr(1) & "VERSION" & Chr(1)
  170. End Sub
  171.  
  172. Public Sub Notice(User As String, Msg As String)
  173.     SendData "NOTICE " & User & " :" & Msg
  174. End Sub
  175.  
  176. Public Sub Identify(pass As String)
  177.     SendPM "nickserv", "identify " & pass
  178. End Sub
  179.  
  180. Public Sub Kick(Channel As String, User As String)
  181.     SendData "KICK #" & Channel & " " & User
  182. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement