PtokaX forum

Archive => Archived 4.0 boards => Request for Lua 4 scripts => Topic started by: dvxjunkie on 01 August, 2004, 18:56:00

Title: ultimate smart ass chatbot
Post by: dvxjunkie on 01 August, 2004, 18:56:00
I want a chatbot that will listen for a yes or no question asked in main (such as "does anybody have" or "anyone got" ect and then it appears that all users in the hub answer "no" or "yes but you cant have it") I tried playing around with modifying the elfgirls script but it gave me a headache :o(  any chance someone could pull this off?
Title:
Post by: Troubadour on 02 August, 2004, 00:02:44
Maybe this will help you.
I haven't checked it so it might be buggy.


-- Triggy by Troubadour --

botname = "Triggy"

opsnames = {
"[NL]-=DJ_Bert=-",
"Troubadour",
"Tarot",
"(NL)Bitmepper",
"(NL)bomarlon",
"[NL]Ricka",
"KeStJo1969",
"[NL]Xantia",
"Banjo5",
"Lexus",
"[NL]MrBuitenhuizen",
"[cable]erwianni",
"Soepkip",
"The_Boss",
"Whistler",
}

trigs = {
["does anyone have"]="Yes, but you can't have it! ",
["who has"]="We all, but it is illigal for you... ",
["can someone"]={
     "No, [USER] we can't do that.",
     "Duh! [USER]  what do you mean?",
     "Sure, can't you?",
     "Pffff, silly question dude!"   },
["anyone got"]="No, do you wanna give it to us? "
}

function Main()
frmHub:RegBot(botname)
end

function DataArrival(curUser, data)
       
   if( strsub(data, 1, 1) == "<" ) then
      -- get the msg only using regular expression
      s,e,msg = strfind(data, "%b<>%s+(.+)")
      -- look in the table
      for key, value in trigs do
                for key2, value2 in value do
                     
   if( strfind( strlower(msg), key) ) then
                 else break  
   end

        if( strfind( strlower(msg), "!me") ) then
                  t="**"..curUser.sName
                  data=gsub (msg, "!me", t, 1 )
   end

      SendToAll( data ) -- send the original data
                   
            SetTimer(1800)
                  StartTimer()
      answer, x = gsub(value[random(1,getn(value))], "%b[]", curUser.sName)

   return 1; -- tell the hub we have processed the data
   end
   end  
   end
end

function OnTimer()
   theperson = opsnames[random(1,getn(opsnames))]
SendToAll(""..theperson, answer ) -- send bot's answer
   StopTimer()
end