-- guestbook by bastya_elvtars (the rock n' roll doctor) ---> rnrdoctor@vipmail.hu -- for 6Marilyn6Manson6 -- ripped from lawmaker -- no flush function, delete a dat file instead (gonna add if needed ^^) -- multiple entries can be deleted by adding multiple nubers separated by spaces (meaning !delguestbook 1 43 555 756612346239) -- but u can separate them with any non-number char if u like it better -- commands can be added in PM or in main, bot responds according 2 them -- make a folder called dats in the scripts folder!!! ---------------------- CONFIG PART Bot="NoteBook" -- i made only 3 of this add/show/delete shit. -- if you need more, notify me -- The help text can only be changed by experts,altho you might translate it - see a lua documentation -- levels are always the following, determining who CAN use the command: -- 5:only superops -- 4 ops & above -- 3 vips & above -- 2 registered users & above -- 1 anyone -- 0 disabled ---=========== #1 -- What it is called? gbname="guestbook" -- the name of this function (call it what you want) -- name of the textfile that contains entries - if it does not exist, the script will create one. gbfile="dats/guestbook.dat" -- this shows the guestbook or wtf levgbcmd1=1 gbcmd1="!showguestbook" -- adds new entry to guestbook or wtf levgbcmd2=1 gbcmd2="!addguestbook" -- deletes an entry by ID levgbcmd3=5 gbcmd3="!delguestbook" --========== #2 -- What it is called? nname="news bulletin" -- the name of this function (call it what you want) -- name of the textfile that contains entries - if it does not exist, the script will create one. nfile="dats/news.dat" -- this shows the news bulletin or wtf levncmd1=1 ncmd1="!shownews" -- adds new entry to news bulletin or wtf levncmd2=1 ncmd2="!addnews" -- deletes an entry by ID levncmd3=5 ncmd3="!delnews" --========== #3 -- What it is called? rname="request board" -- the name of this function (call it what you want) -- name of the textfile that contains entries - if it does not exist, the script will create one. rfile="dats/requests.dat" -- this shows the requests or wtf levrcmd1=1 rcmd1="!showrequests" -- adds new entry to requests or wtf levrcmd2=1 rcmd2="!addrequest" -- deletes an entry by ID levrcmd3=5 rcmd3="!delrequest" -------------------- END OF CONFIG function parseenv(user,env,bot) if env=="PM" then return "$To: "..user.sName.." From: "..bot.." $<"..bot.."> " elseif env=="MAIN" then return "<"..bot.."> " end end function DataArrival(user,data) returndata=0 if strsub(data, 1, 1) == "<" then data=strsub(data,1,strlen(data)-1) local _,_,cmd = strfind(data,"%b<>%s+(%S+)") if cmd then returndata=parsecmds(user,data,strlower(cmd),"MAIN") end elseif strsub(data, 1, 4) == "$To:" then data=strsub(data,1,strlen(data)-1) -- is this meant for our bot? local _,_,whoTo = strfind(data,"$To:%s+(%S+)") if (whoTo == Bot) then local _,_,cmd = strfind(data,"$To:%s+%S+%s+From:%s+%S+%s+$%b<>%s+(%S+)") cmd=strlower(cmd) returndata=parsecmds(user,data,cmd,"PM") end end return returndata end function parsecmds(user,data,cmd,env) local returndata=0 if cmd==gbcmd1 then showshit(user,entries,gbname,gbfile,levgbcmd1,env) returndata=1 -- (user,container,wtf,file) elseif cmd==gbcmd2 then addshit(user,data,entries,gbfile,levgbcmd2,env) returndata=1 -- (user,data,container,file) elseif cmd==gbcmd3 then delshit(user,data,entries,gbfile,gbname,levgbcmd3,env) returndata=1 -- delshit(user,data,container,file,wtf) -- news stuff elseif cmd==ncmd1 then showshit(user,entries,nname,nfile,levncmd1,env) returndata=1 -- (user,container,wtf,file) elseif cmd==ncmd2 then addshit(user,data,entries,nfile,levncmd2,env) returndata=1 -- (user,data,container,file) elseif cmd==ncmd3 then delshit(user,data,entries,nfile,nname,levncmd3,env) returndata=1 -- delshit(user,data,container,file,wtf) -- requests stuff elseif cmd==rcmd1 then showshit(user,entries,rname,rfile,levrcmd1,env) returndata=1 -- (user,container,wtf,file) elseif cmd==rcmd2 then addshit(user,data,entries,rfile,levrcmd2,env) returndata=1 -- (user,data,container,file) elseif cmd==rcmd3 then delshit(user,data,entries,rfile,rname,levrcmd3,env) returndata=1 -- delshit(user,data,container,file,wtf) end return returndata end function addshit(user,data,container,file,cmdlevel,env) if cmdlevel~=0 then if CheckUserLevel(user) >= cmdlevel then local container=loadshit(file) number=number+1 local _,_,entry=strfind(data,"%b<>%s+%S+%s+(.*)") if entry then container[number]=date("%c").."|"..user.sName.."|"..entry saveshit(container,file) user:SendData(parseenv(user,env,Bot).."Your entry has been successfully added.") else user:SendData(parseenv(user,env,Bot).."Please add an entry, too.") end container={} else user:SendData(parseenv(user,env,Bot).."You do not have sufficient rights to run that command! |") end else user:SendData(parseenv(user,env,Bot).."That command is disabled.") end end function loadshit(file) local shit={} number=0 readfrom(file) while 1 do local line = read() if line == nil then break else number = number +1 shit[number]=line end end return shit end function saveshit(container,file) writeto(file) for i=1,number do if container[i] then write(container[i].."\n") end end writeto() end function showshit(user,container,wtf,file,cmdlevel,env) if cmdlevel~=0 then if CheckUserLevel(user) >= cmdlevel then local container=loadshit(file) local msg="\r\nHere you go, the "..wtf..":\r\n\r\n" if number>0 then for i=1,number do s,e,who,when,entry=strfind(container[i], "(.+)|(.+)|(.+)") msg=msg..i..".\t"..who.." - "..when.." ---> "..entry.."\r\n" end else msg=msg.."No entries in "..wtf.."." end user:SendPM(Bot,msg) else user:SendData(parseenv(user,env,Bot).."You do not have sufficient rights to run that command! |") end else user:SendData(parseenv(user,env,Bot).."That command is disabled.") end end function delshit(user,data,container,file,wtf,cmdlevel,env) if cmdlevel~=0 then if CheckUserLevel(user) >= cmdlevel then local container=loadshit(file) local _,_,args=strfind(data,"%b<>%s+%S+%s+(.+)") if args then gsub(args,"(%d+)",function (what) what = tonumber(what) if what then if %container[what] then %user:SendData(parseenv(%user,%env,Bot).."Entry #"..what.." is deleted from the "..%wtf..".|") %container[what]=nil saveshit(%container,%file) else %user:SendData(parseenv(%user,%env,Bot).."Entry #"..what.." wasn't found in the "..%wtf..".|") end else %user:SendData(parseenv(%user,%env,Bot).. "I need the ID number to delete an entry.|") end end) else user:SendData(parseenv(user,env,Bot).. "I need at least one ID number to work! ;).|") end else user:SendData(parseenv(user,env,Bot).."You do not have sufficient rights to run that command! |") end else user:SendData(parseenv(user,env,Bot).."That command is disabled.") end container=nil end function CheckUserLevel(user) if user.iProfile==0 then return 5 elseif user.iProfile==1 then return 4 elseif user.iProfile==3 then return 2 elseif user.iProfile==2 then return 3 else return 1 end end function Main() frmHub:RegBot(Bot) end