UserCleaner2.lua
 

News:

29 December 2022 - PtokaX 0.5.3.0 (20th anniversary edition) released...
11 April 2017 - PtokaX 0.5.2.2 released...
8 April 2015 Anti child and anti pedo pr0n scripts are not allowed anymore on this board!
28 September 2015 - PtokaX 0.5.2.1 for Windows 10 IoT released...
3 September 2015 - PtokaX 0.5.2.1 released...
16 August 2015 - PtokaX 0.5.2.0 released...
1 August 2015 - Crowdfunding for ADC protocol support in PtokaX ended. Clearly nobody want ADC support...
30 June 2015 - PtokaX 0.5.1.0 released...
30 April 2015 Crowdfunding for ADC protocol support in PtokaX
26 April 2015 New support hub!
20 February 2015 - PtokaX 0.5.0.3 released...
13 April 2014 - PtokaX 0.5.0.2 released...
23 March 2014 - PtokaX testing version 0.5.0.1 build 454 is available.
04 March 2014 - PtokaX.org sites were temporary down because of DDOS attacks and issues with hosting service provider.

Main Menu

UserCleaner2.lua

Started by shufty, 06 March, 2005, 01:58:59

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

shufty

I don't know LUA at all but it seemed pretty simple to convert scripts. This is UserCleaner2.lua plop wrote converted to lua5. i may have missed something so feel free to let me know and i'll update it (keep it in one post for people)--- 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 <user_name> add/remove  - adds/removes users from/to the list which aren'
t cleaned
-- !showusers shows all registered users
-- !seen <user_name> - 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 
"The_Cleaner"
	
	
-- 
Botname
AUTO 
1
	
	
	
-- use 
for automodefor manual
CleanLevels 
= {[2]=1,[3]=1}
	
-- 
levels it needs 2 clean (0=Master1=Operator2=Vip3=Reg4=Moderator5=Netfounder)
 
---------------------------------------------------------------------  
the needed tables
UsersTable 
= {}
Seen = {}
NoClean = {}

--------------------------------------------------------------------- 
julian day function 2 calcute the time users spend in the hub
function jdate(dmy)
	
local ab000
	
if 
<= 2 then
	
	
1
	
	
12
	
end
	
if (
y*10000 m*100 d) >= 15821015 then
	
	
math.floor(y/100)
	
	
math.floor(a/4)
	
end
	
if 
<= 0 then c 0.75 end
	
return 
math.floor(365.25*c) + math.floor(30.6001*(m+1) + 1720994 b)
end

--------------------------------------------------------------------- loading the last seen database
function LoadLastSeen()
   
io.open("userinfo/lastseen.lst")
   while 
do
      
local line io.read()
      if 
line ==  nil then
         
break
      
end
      local s
,e,name,date string.find(line"(.+)$(.+)")
      if 
name ~= nil then
         Seen
[name]=date
      end
   end
   io
.close()
end

--------------------------------------------------------------------- saving last seen date
function SaveSeen()
   
io.output("userinfo/lastseen.lst")
   for 
a,b in Seen do
      
Seen[a]=b
      write
(a.."$"..b.."\n")
   
end
   io
.close()
end

--------------------------------------------------------------------- call the garbage man
function Clear() 
   
collectgarbage() 
   
io.flush() 
end

--------------------------------------------------------------------- opening the registered users file from ptokax and inserting the users into the table
function OpenRegisterdUsersFile()
   
io.open("../RegisteredUsers.dat")
   
UsersTable nil
   Clear
()
   
UsersTable = {}
   while 
do
      
local line io.read()
      
local namelevel 
      
if line == nil then 
         io
.close()
         break 
      
end
      s
,e,name,level string.find(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(userdata)
   
s,e,who string.find(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[whothen
      user
:SendPM(Botwho.." was last seen on: "..Seen[who].."|")
   else
      
user:SendPM(Botwho.." 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
      
table.insert(linesa)
   
end
   table
.sort(lines)
   for 
i=1,getn(lines) do 
      
info info.."  "..lines[i].."\r\n"
   
end
   info 
info.."=====================================\r\n"
   
user:SendPM(Botinfo.." |")
   
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
      
table.insert(linesa)
   
end
   table
.sort(lines)
   for 
i=1,getn(lines) do 
      
info info.."  "..lines[i].."\r\n"
   
end
   info 
info.."=====================================\r\n"
   
user:SendPM(Botinfo.." |")
   
Clear()
end

--------------------------------------------------------------------- cleanup old users
function CleanUsers()
   
SendToAll(Bot"The cleaner has been called. Every registered user who hasn't been in the hub for "..WEEKS.." weeks will be deleted. (contact the OP's if your gone be away for a period longer then that)|")
   
OpenRegisterdUsersFile()
   
local s,e,month,day,year string.find(os.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[athen
         
if NoClean[a]== nil then 
            local s
,e,monthu,dayu,yearu string.find(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] = os.date("%x")
      
end
   end 
   
if Count ~= 0 then
      SendToAll
(BotCount.." users were procest, "..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 = string.find(data, "%b<>%s+%S+%s+(%S+)%s+(%S+)%s*")
   if (who or addrem) == nil then
      user:SendData(Bot, "RTFM ;). it'
!noclean <user_name> <add/remove>|")
   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'
!noclean <user_name> <add/remove>|")
      end
   else
      user:SendData(Bot, who.." 
isn't a registered user.|")
   end
end

--------------------------------------------------------------------- save no clean users 2 file
function SaveNoClean()
   io.output("userinfo/noclean.lst")
   for a,b in NoClean do
      write(a.."\n")
   end
   io.close()
end

--------------------------------------------------------------------- load no clean users from file
function LoadNoClean()
   io.open("userinfo/noclean.lst")
   while 1 do
      local line = io.read()
      if line == nil then 
         io.close()
         break 
      end
      NoClean[line] = 1
   end 
end

--------------------------------------------------------------------- do i need 2 explain this ?????
function ChatArrival(user, data) 
   if AUTO == 1 then
      if CleanDay ~= os.date("%x") then -- user cleaning trigger, works as a timer without a timer
         CleanDay = os.date("%x")
         CleanUsers()
      end
   end
   if( string.sub(data, 1, 1) == "<" ) then 
      if user.bOperator then
         data=string.sub(data,1,string.len(data)-1) 
         s,e,cmd = string.find(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]=os.date("%x")
      SaveSeen()
   end
end

--------------------------------------------------------------------- do the same stuff for op'
if needed
function OpDisconnected(user)
	
if 
UsersTable[user.sNamethen
      Seen
[user.sName]=os.date("%x")
      
SaveSeen()
   
end
end

--------------------------------------------------------------------- stuff done on bot startup
function Main()
   
OpenRegisterdUsersFile()
   
LoadNoClean()
   
LoadLastSeen()
   
CleanDay os.date("%x")
end


shufty

No idea, but i did this for a friend. Only fair i shared it though, oh well :)

SMF spam blocked by CleanTalk