PtokaX forum

Archive => Archived 5.0 boards => Finished Scripts => Topic started by: Dessamator on 14 May, 2005, 12:15:50

Title: Post Bot
Post by: Dessamator on 14 May, 2005, 12:15:50
--lua 5 by Dessamator
--## Made by nErBoS
--## Requested by gba1620
--## Commands:
--## !write <post><span style="white-space: pre;"> </span>- To create a new post<br>--##<span style="white-space: pre;"> </span>!read<span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>- Shows all post of the HUB<br>--##<span style="white-space: pre;"> </span>!delall <span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>- TO DELETE ALL POSTS OF THE HUB<br>--##<span style="white-space: pre;"> </span>!delpost <span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>- To delete a certain post<br><br><br>arrPost = {}<br>fPost = "post.dat"<br><br>mins = 60<br>hours =mins*60<br>days = 24*hours<br><br>--## Configuration ##--<br>AutoDel = true <span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>-- true if you want automatically delete all posts after some time(iPostDel)<br>iPostDel = 1*hours<span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>-- Number of (secs/minutes/hours/days) that you want the post to hold on before been deleted<br>sBot = frmHub:GetHubBotName()   -- Bot Name<br>--## END ##--<br><br>function Main()<br><span style="white-space: pre;"> </span>frmHub:RegBot(sBot)<br><span style="white-space: pre;"> </span>LoadFromFile(fPost)<br>end<br><br>function OnExit()<br><span style="white-space: pre;"> </span>SaveToFile(fPost , arrPost , "arrPost")<br>end<br><br>function ChatArrival(user, data)<br><br>local function WorkTime(string1, string2)<br><span style="white-space: pre;"> </span>if not(string1 == nil) then<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>local hour1,min1,sec1 = string.sub(string1,1,2),string.sub(string1,4,5),string.sub(string1,7,8)<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>local hour2,min2,sec2 = string.sub(string2,1,2),string.sub(string2,4,5),string.sub(string2,7,8)<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>local hour = tonumber(hour2) - tonumber(hour1)<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>local min = tonumber(min2) - tonumber(min1)<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>local sec = tonumber(sec2) - tonumber(sec1)<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>hour = hour*3600<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>min = min*60<br><span style="white-space: pre;"> </span>return (hour + min + sec)<br><span style="white-space: pre;"> </span>end<br>end<br>local function Refresh()<br><span style="white-space: pre;"> </span>local ctime,time,aux = os.date("%X")<br><span style="white-space: pre;"> </span>if AutoDel then<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>for time, aux in arrPost do<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>if (WorkTime(arrPost[time]["time"], ctime) >= iPostDel) then<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>arrPost[time] = nil<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>end<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>end<br><span style="white-space: pre;"> </span>end<br>end<span style="white-space: pre;"> </span><br><br><br>--Cmds --<br><span style="white-space: pre;"> </span>data=string.sub(data,1,string.len(data)-1)<br><span style="white-space: pre;"> </span>s,e,cmd = string.find(data, "%b<>%s+(%S+)")<br><span style="white-space: pre;"> </span>if (string.lower(cmd) == "!write") then<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>WritePost(user, data)<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>return 1<br><span style="white-space: pre;"> </span>elseif (string.lower(cmd) == "!read") then<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>Refresh()<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>ReadPost(user)<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>return 1<br><span style="white-space: pre;"> </span>elseif (string.lower(cmd) == "!delpost") then<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>DoDelPost(user,data)<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>return 1<br><span style="white-space: pre;"> </span>elseif <span style="white-space: pre;"> </span>(string.lower(cmd) == "!delall") then<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>DoDelall(user)<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>return 1<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><br><span style="white-space: pre;"> </span>end<br>end<br><br>function ToArrival(user,data)<br><span style="white-space: pre;"> </span>if string.sub(data,6,5+(string.len(sBot))) == sBot then <br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>ChatArrival(user,data)<br><span style="white-space: pre;"> </span>end<br>end<br><br>--------->>>>> Write & Read functions<br>function WritePost(user, data)<br><br>local s,e,post = string.find(data, "%b<>%s+%S+%s+(.+)")<br><br>--Check if post exists --<br>local function Checkpost()<br>local check= true<br><span style="white-space: pre;"> </span>for pos, aux in arrPost do<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>if (arrPost[pos]["post"] == post) then<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span> check=false<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>end<br><span style="white-space: pre;"> </span>end<br><span style="white-space: pre;"> </span>return check<br>end<br><br>--GetPosition Function --<br>local function GetPosition(table)<br><span style="white-space: pre;"> </span>local pos = 0<br><span style="white-space: pre;"> </span>while 1 do<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>if (table[pos] == nil) then<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>return pos<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>else<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>pos = pos + 1<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>end<br><span style="white-space: pre;"> </span>end<br>end<br><br><span style="white-space: pre;"> </span>if not(post == nil)and Checkpost()  then<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>local pos = GetPosition(arrPost)<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>arrPost[pos] = {}<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>arrPost[pos]["post"] = post<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>arrPost[pos]["by"] = user.sName<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>arrPost[pos]["time"] = os.date("%X")<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>arrPost[pos]["date"] = os.date("Day: %d/%m/20%y")<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>user:SendPM(sBot, "Your post has been saved.")<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>SendToAll(sBot, "A New Post has been posted, type !read to see.")<br><span style="white-space: pre;"> </span><br><span style="white-space: pre;"> </span>elseif not Checkpost() then<span style="white-space: pre;"> </span><br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>user:SendPM(sBot, "That post already exists.")<span style="white-space: pre;"> </span><br><span style="white-space: pre;"> </span>else<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>user:SendPM(sBot, "Syntax Error, !write <post>, you must write a post.")<br><span style="white-space: pre;"> </span>end<br><br>end<br><br>function ReadPost(user)<br><span style="white-space: pre;"> </span>local sTmp,pos,table = "The Post of the HUB:\r\n\r\n"<br><span style="white-space: pre;"> </span>for pos, table in arrPost do<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>sTmp = sTmp.."Subject : "..table.post.."\r\n"<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>sTmp = sTmp.. string.rep("-",30).."\r\n"<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>sTmp = sTmp.."ID: "..pos.."\r\n"<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>sTmp = sTmp.."By: "..table.by.."\r\n"<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>sTmp = sTmp.."Time: "..table.time.."\r\n"<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>sTmp = sTmp.."Date: "..table.date.."\r\n"<br><span style="white-space: pre;"> </span>end<span style="white-space: pre;"> </span><br><span style="white-space: pre;"> </span>user:SendPM(sBot, sTmp)<br>end<span style="white-space: pre;"> </span><br>-------->>>>End write & read Functions<br><br><br>------->>>>Del Functions<br>function DoDelPost(user,data)<br><span style="white-space: pre;"> </span>local s,e,id = string.find(data, "%b<>%s+%S+%s+(.+)")<br><span style="white-space: pre;"> </span>if   id == nil or tonumber(id)==nil then<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span> user:SendPM(sBot, "Syntax Error, !delpost <id> , the id must be specified.")<br><span style="white-space: pre;"> </span>elseif (arrPost[tonumber(id)] == nil) then<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span> user:SendPM(sBot, "That post doesnt exist")<br><span style="white-space: pre;"> </span>elseif  (arrPost[tonumber(id)]["by"]==user.sName or user.bOperator) then<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span> arrPost[tonumber(id)] = nil<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span> user:SendPM(sBot, "The post has been deleted")<br><span style="white-space: pre;"> </span>else<br><span style="white-space: pre;"> </span>user:SendPM(sBot, "You are not authorized to delete the post !")<span style="white-space: pre;"> </span><br><span style="white-space: pre;"> </span>end<br>end<br><br>function DoDelall(user)<br><span style="white-space: pre;"> </span>if user.bOperator then <br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>arrPost = nil<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>arrPost = {}<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>user:SendPM(sBot, " All posts have been removed")<br><span style="white-space: pre;"> </span>else<br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>user:SendPM(sBot, "You are not authorized to delete the post !")<br><span style="white-space: pre;"> </span>end<br>end<span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><br><br>----------->>>End del Functions<br><br><br>---------->>>>>>>>>>>>OTHER FUNCTIONS <<<<<<<<<<<<<<<<<<---------------<br>function Serialize(tTable, sTableName, sTab) <br>        assert(tTable, "tTable equals nil"); <br>        assert(sTableName, "sTableName equals nil"); <br> <br>        assert(type(tTable) == "table", "tTable must be a table!"); <br>        assert(type(sTableName) == "string", "sTableName must be a string!"); <br> <br>        sTab = sTab or ""; <br>        sTmp = "" <br> <br>        sTmp = sTmp..sTab..sTableName.." = {\n" <br> <br>        for key, value in tTable do <br>                local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key); <br> <br>                if(type(value) == "table") then <br>                        sTmp = sTmp..Serialize(value, sKey, sTab.."\t"); <br>                else <br>                        local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value); <br>                        sTmp = sTmp..sTab.."\t"..sKey.." = "..sValue <br>                end <br> <br>                sTmp = sTmp..",\n" <br>        end <br> <br>        sTmp = sTmp..sTab.."}" <br>        return sTmp <br>end <br> <br>function SaveToFile(file , table , tablename) <br><span style="white-space: pre;"> </span>local handle = io.open(file,"w+") <br>        handle:write(Serialize(table, tablename)) <br><span style="white-space: pre;"> </span>handle:flush() <br>        handle:close() <br>end <br> <br>function LoadFromFile(file) <br><span style="white-space: pre;"> </span>local handle = io.open(file,"r") <br><span style="white-space: pre;"> </span>if (handle ~= nil) then <br>                dofile(file) <br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>handle:flush() <br><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>handle:close() <br>        end <br>end <br>--------------------------<br></code> </div><!-- .postbody --> <div class="postheader"> Title: <strong>error</strong><br> Post by: <strong>XPMAN</strong> on <strong>20 May, 2005, 08:37:57</strong> </div> <div class="postbody"> Kool script :) But it doesnt seem to display the  Date and time correctly.  It displays the date.....only the time is beside the date...lol   but it doesnt display the actual date at all. See below:<br><br>ID: 0<br>By: TEST<br>Date: 02:32:43<br>- <subject> This is the post info for the rest of the hub members.<br>    -------------- <br><br><br>It should be Date then time.<br><br>O is there anyways to put the subject by itself, then the post appear directly underneath, rather then putting it all together. Maybe a simple way to seperate it.  Thanks again for the kool script. </div><!-- .postbody --> <div class="postheader"> Title: <strong></strong><br> Post by: <strong>Dessamator</strong> on <strong>20 May, 2005, 13:17:29</strong> </div> <div class="postbody"> <blockquote class="bbc_standard_quote"><cite>Quote</cite><i>Originally posted by XPMAN </i><br>Kool script :) But it doesnt seem to display the  Date and time correctly.  It displays the date.....only the time is beside the date...lol   but it doesnt display the actual date at all. See below:<br><br>ID: 0<br>By: TEST<br>Date: 02:32:43<br><br>    -------------- <br><br><br>It should be Date then time.<br><br>O is there anyways to put the subject by itself, then the post appear directly underneath, rather then putting it all together. Maybe a simple way to seperate it.  Thanks again for the kool script.<br></blockquote><br>first part of ur request is done, it should work now, <br>post edited<br><br>now the second part<br><br>u mean something like this  ::<br><br><div class="codeheader"><span class="code floatleft">Code</span> <a class="codeoperation smf_select_text">Select</a> <a class="codeoperation smf_expand_code hidden" data-shrink-txt="Shrink" data-expand-txt="Expand">Expand</a></div><code class="bbc_code">- <subject> This is the post info for the rest of the hub members.<br>--------------------------------------------------------------------<br>ID: 0<br>By: TEST<br>Time: 02:32:43<br>Date: xx/xx/xx<br><br></code> <br><br>?? </div><!-- .postbody --> <div class="postheader"> Title: <strong>yes yes</strong><br> Post by: <strong>XPMAN</strong> on <strong>20 May, 2005, 16:02:59</strong> </div> <div class="postbody"> yes yes :) exactly like that my friend. If ya get a chance then maybe you can do that. Thanx again :) </div><!-- .postbody --> <div class="postheader"> Title: <strong></strong><br> Post by: <strong>Dessamator</strong> on <strong>20 May, 2005, 17:00:58</strong> </div> <div class="postbody"> done !<br>script edited, post updated  :] </div><!-- .postbody --> <div class="postheader"> Title: <strong>Thank u :)</strong><br> Post by: <strong>XPMAN</strong> on <strong>21 May, 2005, 06:18:07</strong> </div> <div class="postbody"> Thank u again for taking the time to do this for me, I really appreciate it :) </div><!-- .postbody --> <div class="postheader"> Title: <strong></strong><br> Post by: <strong>Dessamator</strong> on <strong>21 May, 2005, 10:45:01</strong> </div> <div class="postbody"> ur welcome ! </div><!-- .postbody --> </div><!-- #posts --> <div class="print_options"> <strong><a href="http://forum.ptokax.org/index.php?PHPSESSID=j6q112cgtp7rttgubvf1g1dg5i&action=printpage;topic=4470.0">Text only</a></strong> | <a href="http://forum.ptokax.org/index.php?PHPSESSID=j6q112cgtp7rttgubvf1g1dg5i&action=printpage;topic=4470.0;images">Text with Images</a> </div><!-- .print_options --> <div id="footer" class="smalltext"><a href="http://forum.ptokax.org/index.php?PHPSESSID=j6q112cgtp7rttgubvf1g1dg5i&action=credits" title="License" target="_blank" rel="noopener">SMF 2.1.4 © 2023</a>, <a href="https://www.simplemachines.org" title="Simple Machines" target="_blank" rel="noopener">Simple Machines</a></div> </body> </html>