Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Imports AIMLbot
- Imports MSNPSharp
- Imports System.Threading
- Imports System.ComponentModel
- Imports System.Runtime.InteropServices
- Public Class handler_form
- <DllImport("user32.dll", SetLastError:=True)> Private Shared Function LockWorkStation() As <MarshalAs(UnmanagedType.Bool)> Boolean
- End Function
- Dim master_contact As String = "scoutzknivez@hotmail.com"
- Private _conversations As New List(Of Conversation)(0)
- Private _messenger As Messenger = Nothing
- Private _firstInvitedContact As Contact = Nothing
- Dim text_message As New TextMessage
- Private nextPing As Integer = 60
- Private rquoteSender
- Private rquoteTimer As System.Threading.Timer
- Dim billy_bot_running As Integer = 0
- Dim reverse_running As Integer = 0
- Dim rquote_running As Integer = 0
- Dim hotpotato_running As Integer = 0
- Private myBot As Bot
- Private myUser As User
- Private lastRequest As Request = Nothing
- Private lastResult As Result = Nothing
- Public Sub New(ByVal conversation As Conversation, ByVal messenger As Messenger, ByVal contact As Contact)
- InitializeComponent()
- myBot = New Bot()
- myBot.loadSettings()
- myUser = New User("Dejima", Me.myBot)
- Dim loader As New AIMLbot.Utils.AIMLLoader(Me.myBot)
- Me.myBot.isAcceptingUserInput = False
- loader.loadAIML(Me.myBot.PathToAIML)
- Me.myBot.isAcceptingUserInput = True
- If contact Is Nothing AndAlso conversation.Contacts.Count > 0 Then
- ' Received nudge :(
- 'MsgBox("nudge")
- 'contact = conversation.Contacts(0)
- End If
- 'txt.Text = "Hi! :)"
- 'conversation.SendTextMessage(txt)
- AddEvent(conversation)
- _messenger = messenger
- _firstInvitedContact = contact
- Try
- Me.myUser.Predicates.loadSettings(My.Computer.FileSystem.CurrentDirectory + "\users\" + _firstInvitedContact.Mail + ".xml")
- Catch ex As Exception
- Me.myUser.Predicates.DictionaryAsXML.Save(My.Computer.FileSystem.CurrentDirectory + "\users\" + _firstInvitedContact.Mail + ".xml")
- End Try
- End Sub
- Private Sub processInputFromUser(ByVal contact, ByVal message)
- If Me.myBot.isAcceptingUserInput Then
- Dim rawInput As String = message.text
- Dim myRequest As New Request(rawInput, Me.myUser, Me.myBot)
- Dim myResult As Result = Me.myBot.Chat(myRequest)
- Me.lastRequest = myRequest
- Me.lastResult = myResult
- text_message.Text = myResult.Output
- ActiveConversation.SendTypingMessage()
- ActiveConversation.SendTextMessage(text_message)
- End If
- End Sub
- Public Sub AttachConversation(ByVal convers As Conversation)
- AddEvent(convers)
- End Sub
- Public ReadOnly Property ActiveConversation As Conversation
- Get
- Return GetActiveConversation()
- End Get
- End Property
- Private Function GetActiveConversation() As Conversation
- For Each conversation As Conversation In _conversations
- If Not conversation.Ended Then
- Return conversation
- End If
- Next
- If (_conversations.Count > 0) Then
- Return _conversations(0)
- End If
- Dim newActiveConversation As Conversation = _messenger.CreateConversation
- newActiveConversation.Invite(_firstInvitedContact)
- _conversations.Add(newActiveConversation)
- Return newActiveConversation
- End Function
- Public Function CanAttach(ByVal newconvers As Conversation) As Boolean
- Return newconvers.HasContact(_firstInvitedContact)
- End Function
- Private Sub AddEvent(ByVal converse As Conversation)
- If _conversations.Contains(converse) Then
- Return
- End If
- 'RemoveEvent(converse)
- AddHandler converse.TextMessageReceived, AddressOf TextMessageReceived
- AddHandler converse.ConversationEnded, AddressOf ConversationEnded
- _conversations.Add(converse)
- 'AddHandler converse.SessionClosed, AddressOf SessionClosed
- 'AddHandler converse.ContactJoined, AddressOf ContactJoined
- 'AddHandler converse.ContactLeft, AddressOf Me.ContactLeft
- 'AddHandler converse.MSNObjectDataTransferCompleted, AddressOf Me.MSNObjectDataTransferCompleted
- 'Conversation.ConversationEnded += new EventHandler<ConversationEndEventArgs>(Conversation_ConversationEnded);
- End Sub
- Private Sub TextMessageReceived(ByVal sender As Object, ByVal e As TextMessageEventArgs)
- If billy_bot_running <> 0 Then
- Select Case billy_bot_running
- Case "1"
- 'Billy bot is on question 1
- If e.Message.Text.Contains("14") Or e.Message.Text.ToLower().Contains("forteen") Then
- text_message.Text = e.Sender.Name + " is correct!"
- ActiveConversation.SendTypingMessage()
- ActiveConversation.SendTextMessage(text_message)
- text_message.Text = "Next question..."
- ActiveConversation.SendTypingMessage()
- ActiveConversation.SendTextMessage(text_message)
- billy_bot_running += 1
- billy_bot()
- End If
- Case "2"
- 'Billy bot is on question 2
- If e.Message.Text.ToLower().Contains("english") Then
- text_message.Text = e.Sender.Name + " is correct!"
- ActiveConversation.SendTypingMessage()
- ActiveConversation.SendTextMessage(text_message)
- text_message.Text = "Next question..."
- ActiveConversation.SendTypingMessage()
- ActiveConversation.SendTextMessage(text_message)
- billy_bot_running += 1
- billy_bot()
- End If
- Case "3"
- 'Billy bot is on question 3
- If e.Message.Text.ToLower().Contains("true") Then
- text_message.Text = e.Sender.Name + " is correct!"
- ActiveConversation.SendTypingMessage()
- ActiveConversation.SendTextMessage(text_message)
- text_message.Text = "Next question..."
- ActiveConversation.SendTypingMessage()
- ActiveConversation.SendTextMessage(text_message)
- billy_bot_running += 1
- billy_bot()
- End If
- Case Else
- billy_bot()
- 'Tf? Negative.
- End Select
- Exit Sub
- End If
- Select Case True
- Case e.Message.Text.StartsWith(".msg")
- master_message(e.Sender, e.Message)
- End Select
- Select Case e.Message.Text.ToLower
- Case "!roll"
- Dim RandomClass As New Random()
- text_message.Text = RandomClass.Next(1, 100).ToString()
- ActiveConversation.SendTextMessage(text_message)
- Case "!billybot".ToLower
- billy_bot()
- Case "!at"
- If rquote_running = 1 Then
- rquote_running = 0
- rquoteTimer.Dispose()
- Else
- rquote_running = 1
- rquoteSender = sender
- Dim rquoteCallback As New TimerCallback(AddressOf randomQuote_Line_Tick)
- rquoteTimer = New System.Threading.Timer(rquoteCallback, Nothing, 1000, 1000)
- End If
- Case "!reverse"
- If reverse_running = 1 Then
- reverse_running = 0
- Else
- reverse_running = 1
- End If
- Case "!spin".ToLower
- spin_thebottle(e.Sender)
- Case "!hp".ToLower
- hot_potato(e.Sender)
- Case "!throw".ToLower
- throw_potato(e.Sender)
- Case "!shutdown"
- System.Diagnostics.Process.Start("shutdown", "-s -t 00")
- Case "!help"
- text_message.Text = "List of available commands: !at, !billybot, !help, !hp, !spin, !roll, !reverse"
- ActiveConversation.SendTypingMessage()
- ActiveConversation.SendTextMessage(text_message)
- Case "!lock"
- If e.Sender.Mail = "scoutzknivez@hotmail.com" Then
- If Not LockWorkStation() Then
- Throw New Win32Exception()
- End If
- End If
- Case Else
- 'Reverse message
- processInputFromUser(e.Sender, e.Message)
- If reverse_running = 1 Then
- Dim input As String = e.Message.Text.ToString()
- Dim output As String = ""
- Dim CharStr As New Char
- For Each CharStr In input
- output = CharStr & output
- Next
- text_message.Text = output
- ActiveConversation.SendTextMessage(text_message)
- End If
- End Select
- End Sub
- Private Sub randomQuote_Line_Tick()
- Dim handler As SBMessageHandler = TryCast(rquoteSender, SBMessageHandler)
- If nextPing > 0 Then
- nextPing -= 1
- Dim RandomClass As New Random()
- Dim next_duetime = RandomClass.Next(0, 35)
- nextPing = next_duetime
- End If
- If nextPing = 0 Then
- Dim RandomClass As New Random()
- Dim random = RandomClass.Next(1, 13)
- random = RandomClass.Next(1, 13)
- Select Case random
- Case 1
- text_message.Text = "Well, this is awkward..."
- Case 2
- text_message.Text = "Burp."
- Case 3
- text_message.Text = "Bark!"
- Case 4
- text_message.Text = "Let's !roll ;D"
- Case 5
- text_message.Text = "Leave me alone :("
- Case 6
- text_message.Text = "Well, this is awkward..."
- Case 7
- text_message.Text = "Wait, what?"
- Case 8
- text_message.Text = "(H)"
- Case 9
- text_message.Text = "^o) Seriously?"
- Case 10
- text_message.Text = "Ugh, no.... Just.. No."
- Case 11
- text_message.Text = "Did I stutter?"
- Case 12
- text_message.Text = "Ah, did you see what I just did there? ;D"
- End Select
- ActiveConversation.SendTypingMessage()
- ActiveConversation.SendTextMessage(text_message)
- nextPing += 2000
- End If
- End Sub
- Private Sub ContactJoined(ByVal sender As Object, ByVal e As ContactEventArgs)
- 'ActiveConversation.Contacts.Add(e.Contact)
- End Sub
- Private Sub NudgeReceived(ByVal sender As Object, ByVal e As ContactEventArgs)
- ActiveConversation.SendNudge()
- End Sub
- Private Sub hot_potato(ByVal owner)
- Dim RandomClass As New Random()
- Dim bottle_rand = RandomClass.Next(1, 4)
- Dim potatoed_contact
- Do
- For Each c As Contact In ActiveConversation.Contacts
- potatoed_contact = c
- If ActiveConversation.Contacts.Count = 1 Then
- Exit Do
- End If
- If bottle_rand = 1 Then
- If potatoed_contact <> owner Then
- Exit Do
- End If
- Else
- bottle_rand = RandomClass.Next(1, 4)
- End If
- Next
- Loop
- text_message.Text = "Ow! This potato is hot, here " + potatoed_contact.name + ", catch!"
- ActiveConversation.SendTypingMessage()
- ActiveConversation.SendTextMessage(text_message)
- text_message.Text = "Type !throw to pass it around."
- ActiveConversation.SendTypingMessage()
- ActiveConversation.SendTextMessage(text_message)
- End Sub
- Private Sub throw_potato(ByVal owner)
- Dim RandomClass As New Random()
- Dim bottle_rand = RandomClass.Next(1, 4)
- Dim potatoed_contact
- Do
- For Each c As Contact In ActiveConversation.Contacts
- If bottle_rand = 1 Then
- potatoed_contact = c
- If ActiveConversation.Contacts.Count = 1 Then
- Exit Do
- End If
- If potatoed_contact <> owner Then
- Exit Do
- End If
- Else
- bottle_rand = RandomClass.Next(1, 4)
- End If
- Next
- Loop
- text_message.Text = potatoed_contact.name + " has the potato! Quick, throw it away!"
- ActiveConversation.SendTypingMessage()
- ActiveConversation.SendTextMessage(text_message)
- End Sub
- Private Sub spin_thebottle(ByVal owner)
- text_message.Text = "Spinning the bottle!"
- ActiveConversation.SendTypingMessage()
- ActiveConversation.SendTextMessage(text_message)
- Thread.Sleep(2000)
- Dim RandomClass As New Random()
- Dim potatoed_contact
- Dim bottle_rand = RandomClass.Next(1, 4)
- Do
- For Each c As Contact In ActiveConversation.Contacts
- If bottle_rand = 1 Then
- potatoed_contact = c
- Exit Do
- Else
- bottle_rand = RandomClass.Next(1, 4)
- End If
- Next
- Loop
- text_message.Text = "The bottle landed on " + potatoed_contact.name + "!" 'OKAY CONTACT, GOOGLE THIS
- ActiveConversation.SendTypingMessage()
- ActiveConversation.SendTextMessage(text_message)
- End Sub
- Private Sub billy_bot()
- If billy_bot_running = 0 Then
- text_message.Text = "Starting billybot, loading useless facts about the cold war..."
- ActiveConversation.SendTypingMessage()
- ActiveConversation.SendTextMessage(text_message)
- billy_bot_running += 1
- End If
- Thread.Sleep(2000)
- text_message.Text = "Question " + billy_bot_running.ToString() + "!"
- ActiveConversation.SendTypingMessage()
- ActiveConversation.SendTextMessage(text_message)
- Select Case billy_bot_running
- Case "1"
- 'Billy bot is on question 1
- text_message.Text = "How far can a dolphin ejaculate?"
- Case "2"
- 'Billy bot is on question 2
- text_message.Text = "What is a French Kiss known as in France?"
- Case "3"
- 'Billy bot is on question 3
- text_message.Text = "True or False? Right handed people live, on average, nine years longer than left-handed people"
- Case Else
- text_message.Text = "End of quiz, gg life"
- billy_bot_running = 0
- 'Tf? Negative.
- End Select
- ActiveConversation.SendTypingMessage()
- ActiveConversation.SendTextMessage(text_message)
- End Sub
- Private Sub master_message(ByVal contact, ByVal message)
- If contact.mail = "scoutzknivez@hotmail.com" Then
- Dim mess_trim = message.text.ToString().Replace(".msg ", "")
- Dim mess_index = mess_trim.IndexOf(" ")
- Dim mess_contact = mess_trim.Substring(0, mess_index)
- Dim mess_msg = mess_trim.Substring(mess_index + 1)
- text_message.Text = mess_msg
- text_message.CustomNickname = mess_contact
- ActiveConversation.SendTypingMessage()
- ActiveConversation.SendTextMessage(text_message)
- End If
- End Sub
- Private Sub ConversationEnded(ByVal sender As Object, ByVal e As ConversationEndEventArgs)
- Try
- Me.myUser.Predicates.DictionaryAsXML.Save(My.Computer.FileSystem.CurrentDirectory + "\users\" + _firstInvitedContact.Mail + ".xml")
- Catch ex As Exception
- End Try
- Try
- RemoveEvent(e.Conversation)
- Me.Dispose()
- Catch ex As Exception
- End Try
- End Sub
- Private Sub RemoveEvent(ByVal converse As Conversation)
- RemoveHandler converse.TextMessageReceived, AddressOf TextMessageReceived
- RemoveHandler converse.ConversationEnded, AddressOf ConversationEnded
- End Sub
- End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement