-- TrickerBot2.lua, created by Ptaczek Dec-24, 2002 -- Just see how to implement the NMDC TriggerBot in LUA :) -- changes -- Feb-24, 2003, v2.0 Modification for DataArrival return value. -- Tiny changes by VidFamne with lot of help by Piglja -- VidFamne added Pigljas time-function, and some more trigs -- A bug-fix by VidFamne, hopefully. And added some more triggs ;) -- A new bug-fix ( for the "!me-command" ) by VidFamne, added ( 09.04.2003 ). -- Added MatrixX On/Off function. Just type +quiet in mainchat to stop the Bot, -- and +talk to start the Bot again. By VidFamne ( 05.05.2003 ) -- Bug-fix by [AF]Mike -- Modified to read (and write) trigs from file. OpiumVolage ( 12.06.2003 ) botname ="(@)Truckers garage(@)" trigall=1 TrigFile="Trigers.ini" function Main() frmHub:RegBot(botname) trigs = parseINI(TrigFile) -- writeINI(TrigFile, trigs) end function parseINI(fName) readfrom(fName) local line = read() local table = {} while line do local s, e, sec = strfind(line, "^%[(.*)%]$") if s then section = sec table[section] = {} else assert(section, "parseINI: format problem with "..fName) tinsert(table[section], line) end line = read() end readfrom() return table end -- function parseINI(fName) function writeINI(fName, table) assert(table, "writeINI: table not found") local fHandle = openfile(fName, "w") if fHandle then for id,entry in table do write(fHandle, "["..id.."]\n") for i=1,getn(entry) do write(fHandle, entry[i].."\n") end end -- for id,entry closefile(fHandle) end -- if fHandle end -- function writeINI function DataArrival(curUser, data) status=strsub(data,1,strlen(data)-1) -- parse the command s,e,cmd = strfind( status, "%b<>%s+(%S+)" ) if (cmd=="&quiet") then trigall=0 SendToAll(botname, " Hmf, Okidoki I will be quiet :(( ") return 1 elseif (cmd=="&talk") then trigall=1 SendToAll(botname, " Okay, I will talk to you again :-)") return 1 end if( strsub(data, 1, 1) == "<" ) then -- get the msg only using regular expression s,e,msg = strfind(data, "%b<>([%a ]+)") -- look in the table if trigall==1 then 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() SendToAll( botname, answer ) -- send bot's answer StopTimer() end end