1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| Option Explicit
Public WithEvents msn As MsgrObject
Dim test As Integer
Private Sub Form_Load()
Set msn = New MsgrObject
Open App.Path & "\log.txt" For Append As #2
Print #2, "*** Session open the " & Date; " at " & Time() & " ***"
End Sub
Private Sub Form_Unload(Cancel As Integer)
Print #2, "*** Session close the " & Date; " at " & Time() & " ***"
Close #2
End Sub
Private Sub msn_OnTextReceived(ByVal pIMSession As Messenger.IMsgrIMSession, ByVal User As Messenger.IMsgrUser, ByVal bstrMsgHeader As String, ByVal Usersay As String, pfEnableDefault As Boolean)
Dim replystring As String
Dim question() As String
Dim replies() As String
Dim nbrrep As Integer
Dim randomnbr As Integer
If Usersay <> vbCrLf Then
Print #2, "User :" & Usersay
End If
'convert in lower case
Usersay = LCase(Usersay)
'open file
Open App.Path & "\replies.txt" For Input As #1
Do Until EOF(1) 'do until the file end
'read line and put in reply string
Line Input #1, replystring
question = Split(replystring, "#")
'test if There is Usersay in question
test = InStr(Usersay, question(0))
If test > 0 Then
'verify if there is several pipes and exit if there isn't any
test = InStr(question(1), "|")
If test < 1 Then
User.SendText bstrMsgHeader, question(1), MMSGTYPE_ALL_RESULTS
Print #2, "Bot :" & question(1)
Close #1
Exit Sub
End If
'get the number of "|" (=replies) after #
replies = Split(question(1), "|")
nbrrep = UBound(replies)
'make a random number between 0 to nbrrep
Randomize
randomnbr = Int(Rnd() * (nbrrep - 0 + 1)) + 0
'if there is nothing to reply (two pipes), we leaves
If replies(randomnbr) = "" Then
Close #1
Exit Sub
End If
'replie with the random number
User.SendText bstrMsgHeader, replies(randomnbr), MMSGTYPE_ALL_RESULTS
If replies(randomnbr) <> vbCrLf Then
Print #2, "Bot :" & replies(randomnbr)
End If
End If
Loop
Close #1
End Sub |
Partager