-- BotMgr 1.01b -- by Mutor -- -- Add/Remove botnames to/from user list -- Option for context menu [you can add more of your own commands] -- Sends PM to OPs when bot added or removed -- Allow command by profile -- !delbot --Remove bot from user list -- !addbot --Add bot to user list -- -- Restart scripts will list bot again... ------------------------------------------------------------------------- aprof = 0-- Masters are authorized to use these commands SendMenu = "0"-- Provide context [right click] menu commands, 0 for no ------------------------------------------------------------------------- Bot = frmHub:GetHubBotName(BotManager)
function NewUserConnected(user) if SendMenu == "1" then if user.iProfile == aprof then customCMDS(user) user:SendData(" *** Notice :: Right click hub tab or user list for Admin commands. ***") else return end else end end
OpConnected = NewUserConnected
--$UserCommand 1 X Where -> 1=Hub Menu 2=User Menu 3=Hub/User Menu function customCMDS(user) --user:SendData("$UserCommand 255 7")--clear the menu first user:SendData("$UserCommand 1 3 [Admin]\\Remove Bot $<%[mynick]> !delbot %[line:BotNick]||") user:SendData("$UserCommand 1 3 [Admin]\\Restore Bot $<%[mynick]> !addbot %[line:BotNick]||") end
function DataArrival(user, data) if user.iProfile == aprof then if strsub(data,1,1)=="<" then data=strsub(data,1,strlen(data)-1) s,e,cmd,name = strfind(data,"%b<>%s+(%S+)%s+(%S+)") if cmd=="!delbot" then frmHub:UnregBot(name) SendPmToOps(Bot, user.sName.." has removed the bot [ "..name.." ] from the user list.") return 1 elseif cmd=="!addbot" then frmHub:RegBot(name) SendPmToOps(Bot, user.sName.." has added the bot [ "..name.." ] to the user list.") return 1 end end end end
-- auto/manual registered user cleaner if user hasn't been in the hub for x weeks -- made by plop -- julian day function made by the guru tezlo -- code stripped from artificial insanety bot
-- !noclean add/remove - adds/removes users from/to the list which aren't cleaned -- !showusers - shows all registered users -- !seen - shows the last time the user left the hub -- !shownoclean - shows all names wich are on the noclean list -- !cleanusers - manualy start the usercleaner
-- a folder named userinfo is needed for this bot 2 work
--------------------------------------------------------------------- config WEEKS = 4 -- every1 older then x weeks is deleted Bot = "User?Cleaner" AUTO = 0 -- use 1 for automode, 0 for manual CleanLevels = {[3]=1,[4]=1,[5]=1} -- levels it needs 2 clean
--------------------------------------------------------------------- the needed tables UsersTable = {} Seen = {} NoClean = {}
--------------------------------------------------------------------- julian day function 2 calcute the time users spend in the hub function jdate(d, m, y) local a, b, c = 0, 0, 0 if m <= 2 then y = y - 1 m = m + 12 end if (y*10000 + m*100 + d) >= 15821015 then a = floor(y/100) b = 2 - a + floor(a/4) end if y <= 0 then c = 0.75 end return floor(365.25*y - c) + floor(30.6001*(m+1) + d + 1720994 + b) end
--------------------------------------------------------------------- loading the last seen database function LoadLastSeen() readfrom("userinfo/lastseen.lst") while 1 do local line = read() if line == nil then break end local s,e,name,date = strfind(line, "(.+)$(.+)") if name ~= nil then Seen[name]=date end end readfrom() end
--------------------------------------------------------------------- saving last seen date function SaveSeen() writeto("userinfo/lastseen.lst") for a,b in Seen do Seen[a]=b write(a.."$"..b.."\n") end writeto() end
--------------------------------------------------------------------- call the garbage man function Clear() collectgarbage() flush() end
--------------------------------------------------------------------- opening the registered users file from ptokax and inserting the users into the table function OpenRegisterdUsersFile() readfrom("../RegisteredUsers.dat") UsersTable = nil Clear() UsersTable = {} while 1 do local line = read() local name, level if line == nil then readfrom() break end s,e,name,level = strfind(line,"(.+)|.+|(.+)") if CleanLevels[tonumber(level)] then UsersTable[name] = 1 end end end
--------------------------------------------------------------------- extracting the time/date when a user was last seen from the database function SeenUser(user, data) s,e,who = strfind(data, "%b<>%s%S+%s(.+)") if who == nil then user:SendPM(Bot, "Syntax error, can't read your mind, pls tell me wich user you wanne check|") elseif Seen[who] then user:SendPM(Bot, who.." was last seen on: "..Seen[who].."|") else user:SendPM(Bot, who.." is a unknown user|") end end
--------------------------------------------------------------------- shows all the nicks of all registered users function NewShowUsers(user) local lines = {} local info = "\r\n\r\n" info = info.." Here are the registered users\r\n" info = info.."=====================================\r\n" for a,b in UsersTable do tinsert(lines, a) end sort(lines) for i=1,getn(lines) do info = info.." "..lines[i].."\r\n" end info = info.."=====================================\r\n" user:SendPM(Bot, info.." |") Clear() end
--------------------------------------------------------------------- shows all the nicks on the no clean list function ShowNoClean(user) local lines = {} local info = "\r\n\r\n" info = info.." Here are the users who aren't cleaned\r\n" info = info.."=====================================\r\n" for a,b in NoClean do tinsert(lines, a) end sort(lines) for i=1,getn(lines) do info = info.." "..lines[i].."\r\n" end info = info.."=====================================\r\n" user:SendPM(Bot, info.." |") Clear() end
--------------------------------------------------------------------- cleanup old users function CleanUsers() SendToAll(Bot, "The cleaner Started. Every registered user who hasn't been in the hub for "..WEEKS.." weeks will be deleted...|") OpenRegisterdUsersFile() local s,e,month,day,year = strfind(date("%x"), "(%d+)%/(%d+)%/(%d+)") year = "20"..year local juliannow = jdate(tonumber(day), tonumber(month), tonumber(year)) local oldest = WEEKS*7 local Count2,Count = 0,0 for a,b in UsersTable do Count = Count+1 if Seen[a] then if NoClean[a]== nil then local s,e,monthu,dayu,yearu = strfind(Seen[a], "(%d+)%/(%d+)%/(%d+)") yearu = "20"..yearu local julianu = jdate(tonumber(dayu), tonumber(monthu), tonumber(yearu)) if (juliannow - julianu) > oldest then Count2 = Count2 +1 Seen[a] = nil DelRegUser(a) end end else Seen[a] = date("%x") end end if Count ~= 0 then SendToAll(Bot, Count.." users were processed, "..Count2.." of them were deleted.|") end SaveSeen() OpenRegisterdUsersFile() end
--------------------------------------------------------------------- don't clean this users adding/removing function NoCleanUser(user, data) local s,e,who, addrem = strfind(data, "%b<>%s+%S+%s+(%S+)%s+(%S+)%s*") if (who or addrem) == nil then user:SendData(Bot, "RTFM ;). it's !noclean |") elseif UsersTable[who] then if addrem == "add" then if NoClean[who] then user:SendData(Bot, who.." is allready on the imune list.|") else NoClean[who] = 1 user:SendData(Bot, who.." is added to the imune list and won't be cleaned.|") SaveNoClean() end elseif addrem == "remove" then if NoClean[who] then NoClean[who] = nil user:SendData(Bot, who.." is removed from the imune list.|") SaveNoClean() else user:SendData(Bot, who.." was not on the imune list.|") end else user:SendData(Bot, "RTFM ;). it's !noclean |") end else user:SendData(Bot, who.." isn't a registered user.|") end end
--------------------------------------------------------------------- save no clean users 2 file function SaveNoClean() writeto("userinfo/noclean.lst") for a,b in NoClean do write(a.."\n") end writeto() end
--------------------------------------------------------------------- load no clean users from file function LoadNoClean() readfrom("userinfo/noclean.lst") while 1 do local line = read() if line == nil then readfrom() break end NoClean[line] = 1 end end
--------------------------------------------------------------------- do i need 2 explain this ????? function DataArrival(user, data) if AUTO == 1 then if CleanDay ~= date("%x") then -- user cleaning trigger, works as a timer without a timer CleanDay = date("%x") CleanUsers() end end if( strsub(data, 1, 1) == "<" ) then if user.bOperator then data=strsub(data,1,strlen(data)-1) s,e,cmd = strfind(data,"%b<>%s+(%S+)") if cmd == "!noclean" then NoCleanUser(user, data) return 1 elseif cmd == "!showusers" then NewShowUsers(user) return 1 elseif cmd == "!shownoclean" then ShowNoClean(user) return 1 elseif cmd == "!seen" then SeenUser(user, data) return 1 elseif cmd =="!cleanusers" then CleanUsers() return 1 end end end end
--------------------------------------------------------------------- stuff done when a user/vip leaves function UserDisconnected(user) if UsersTable[user.sName] then Seen[user.sName]=date("%x") SaveSeen() end end
--------------------------------------------------------------------- do the same stuff for op's if needed function OpDisconnected(user) if UsersTable[user.sName] then Seen[user.sName]=date("%x") SaveSeen() end end
--------------------------------------------------------------------- stuff done on bot startup function Main() OpenRegisterdUsersFile() LoadNoClean() LoadLastSeen() CleanDay = date("%x") end
[size=10]I apologise it came out in three POSTs i wanted to keep it organized[/size]
Title:
Post by: Pothead on 14 March, 2005, 02:03:43
bit big writing that innit ? search the forum both me and someone else have already converted the plop's usercleaner. :)
-- BotMgr 1.01b -- by Mutor -- converted to LUA 5 by jiten -- -- Add/Remove botnames to/from user list -- Option for context menu [you can add more of your own commands] -- Sends PM to OPs when bot added or removed -- Allow command by profile -- !delbot --Remove bot from user list -- !addbot --Add bot to user list -- -- Restart scripts will list bot again... ------------------------------------------------------------------------- aprof = 0-- Masters are authorized to use these commands SendMenu = "0"-- Provide context [right click] menu commands, 0 for no ------------------------------------------------------------------------- Bot = frmHub:GetHubBotName(BotManager)
function NewUserConnected(user) if SendMenu == "1" then if user.iProfile == aprof then customCMDS(user) user:SendData(" *** Notice :: Right click hub tab or user list for Admin commands. ***") else return end else end end
OpConnected = NewUserConnected
--$UserCommand 1 X Where -> 1=Hub Menu 2=User Menu 3=Hub/User Menu function customCMDS(user) --user:SendData("$UserCommand 255 7")--clear the menu first user:SendData("$UserCommand 1 3 [Admin]\\Remove Bot $<%[mynick]> !delbot %[line:BotNick]||") user:SendData("$UserCommand 1 3 [Admin]\\Restore Bot $<%[mynick]> !addbot %[line:BotNick]||") end
function ChatArrival(user, data) if user.iProfile == aprof then if string.sub(data,1,1)=="<" then data=string.sub(data,1,string.len(data)-1) s,e,cmd,name = string.find(data,"%b<>%s+(%S+)%s+(%S+)") if cmd=="!delbot" then frmHub:UnregBot(name) SendPmToOps(Bot, user.sName.." has removed the bot [ "..name.." ] from the user list.") return 1 elseif cmd=="!addbot" then frmHub:RegBot(name) SendPmToOps(Bot, user.sName.." has added the bot [ "..name.." ] to the user list.") return 1 end end end end
Title:
Post by: jiten on 14 March, 2005, 10:20:19
For the usercleaner, try these links:
Link 1 (http://board.univ-angers.fr/thread.php?threadid=3805&boardid=26&sid=818cfb8294cc991958750ad30af5748a)
Link 2 (http://board.univ-angers.fr/thread.php?threadid=3818&boardid=26&sid=818cfb8294cc991958750ad30af5748a)