Regcleaner by plop, :: PtokaX[16.09] - Page 2
 

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

Regcleaner by plop, :: PtokaX[16.09]

Started by Herodes, 30 March, 2005, 17:51:29

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Cid

Awww:)
Very cool and appreciated!
Thanx a lot.

TiMeTrAVelleR

Seems to work just fine  ;)

Greetzz TT

UwV

yup works fine indeed :0)

damn.. ;0)
i wanted that customscript ..  hehe
well i'll just request a feature for future releases .. (did i spell that right ?)..
if not too much trouble can we have different cleaning times for different userlevels ? would be very neat ..
\NL   The knowledge and skills you have achieved are meant to be forgotten so you can float comfortably in emptiness, without obstruction.
" Holly loves me,...  . "      ;o)

& don't forget, the motto is :
  -- SUPPORT YOUR LOCAL DJ'S --

Herodes

QuoteOriginally posted by Pothead
Probably makes no difference, but wouldn't it be better to have :
io.flush() before collectgarbage() instead of after it ?
read the docs. :) It is the same thing. The collectgarbage() is forcing the garbage-collection ( that means all dead objects in memory are gone ) and the second is flushing-throwing_n_deleting from mem away any data in the standard ouput,

UwV

found one .. but .. not worth claiming the prize over really .. ;0)

scenario is like this ..

new user regs him/herself...
or gets regged ..
user logs off ..  user does not log in again ..
user will not be cleaned.

in my situation just a litle annoying .. i have a selfreg script running.. and users "forget" to read the rules before registering themselves .. i.e. the are not allowed back in afte regging a lot of the time ..
\NL   The knowledge and skills you have achieved are meant to be forgotten so you can float comfortably in emptiness, without obstruction.
" Holly loves me,...  . "      ;o)

& don't forget, the motto is :
  -- SUPPORT YOUR LOCAL DJ'S --

??????Hawk??????

QuoteOriginally posted by UwV
found one .. but .. not worth claiming the prize over really .. ;0)

scenario is like this ..

new user regs him/herself...
or gets regged ..
user logs off ..  user does not log in again ..
user will not be cleaned.

in my situation just a litle annoying .. i have a selfreg script running.. and users "forget" to read the rules before registering themselves .. i.e. the are not allowed back in afte regging a lot of the time ..


The list is updated directly from the HUB's  Registered users list   so it should still get them ..  

??????Hawk??????

Herodes

QuoteOriginally posted by UwV
new user regs him/herself...
or gets regged ..
user logs off ..  user does not log in again ..
user will not be cleaned.
as you said,.. It is not a bug,.. the objective of the scirpt is very precise... it says in the initial comments. ;)

UwV

#32
QuoteOriginally posted by ??????Hawk??????

The list is updated directly from the HUB's  Registered users list   so it should still get them ..  

??????Hawk??????

sure but only after a full reboot (when does ptokax updatethe regusers i am not sure actually..?)..
in the "ideal" situation ...  a hub is up longer then the time set as max. awaytime and so would this script be (so it would not reload them anyway)....

and as i said .. its not a bug ..

but my testuser has not been seen .. has not been logged and threfore would not been cleaned unless i restart he script.. that's all there was to it.
\NL   The knowledge and skills you have achieved are meant to be forgotten so you can float comfortably in emptiness, without obstruction.
" Holly loves me,...  . "      ;o)

& don't forget, the motto is :
  -- SUPPORT YOUR LOCAL DJ'S --

Cid

all newly regged users will get on the list the next time the users are cleaned manually or automatically. at least in the versions before it was like that.

Yorkie

Hi all
Can someone tell me why i get this?

Syntax [string "code:
..."]:38: function arguments expected near `='


Cheers

Herodes

QuoteOriginally posted by Yorkie
Hi all
Can someone tell me why i get this?

Syntax [string "code:
..."]:38: function arguments expected near `='
I think you grabbed the code in a bad way. try copy pasting again ..

Yorkie

Yep that sorted it.lol
copied too much and didn't notice.

Cheers

Herodes

QuoteOriginally posted by Yorkie
Yep that sorted it.lol
copied too much and didn't notice.

Cheers
you are welcome,...
Tip2All: The best way to copy a script from a thread is by hitting the 'quote' button on the specific post and then select just after the [ code] until just before the [/code ]
That way, you will have the script as the author has posted it. This helps when reporting errors,... I have noticed many error reports like: (example for a script with 50 lines)
Syntax Error line 80: ...

This is due to the way the board is display code. ( it inserts an empty line after each code line. )

bastya_elvtars

Or paste to editplus, hit CTRL+A then CTRL+SHIFT+J. :)
Everything could have been anything else and it would have just as much meaning.

Optimus

GetRegisterdUsers = function()
	if CleanerTable.tBigTable.Enable == 1 then
		for id,who in frmHub:GetRegisteredUsers() do
			if tCleanProfiles[who.iProfile] then
				if tBigTable[who.sNick] == nil then
					tBigTable[who.sNick] = { ["Leave"] = os.date("%c") }
				end
			end
		end
	end saveTableToFile(bigtablefile, tBigTable, "tBigTable")
end
Nice trick that can be used for usercleaner only works for PtokaX 16.09a and above

- Optimus

Honey

Hello guys,

 I use this super script! :)

But I have problem, PtokaX write this in Script Editor:
[11:26] Syntax scripts\Regcleaner.lua:127: attempt to index local `f' (a nil value)


in this line in the script:
for a,b in tbl do f:write(a.."$"..b.."\n"); end; f:close()

What is wrong?

 Thank you in advance for help!

James

#41
[11:56] No syntax errors in script file topic.lua
[11:56] No syntax errors in script file regcleaner.lua


use PtokaX 0.3.3.1  :))

PS. Maybe is your PtokaX to old.

Honey

#42
I use PtokaX 0.3.3.1 too :))

So if I start PtokaX:
[12:02] No syntax errors in script file regcleaner.lua

But for some time running hub, will be occurs this problem:
[12:08] Syntax scripts\Regcleaner.lua:127: attempt to index local `f ' (a nil value)
[12:09] Syntax scripts\Regcleaner.lua:127: attempt to index local `f ' (a nil value)
[12:11] Syntax scripts\Regcleaner.lua:127: attempt to index local `f ' (a nil value)
[12:14] Syntax scripts\Regcleaner.lua:127: attempt to index local `f ' (a nil value)
:(

Edit:
Please, can anybody help me?
I want use this script! But I don't know, what is wrong in line 127 :(

TiMeTrAVelleR

Same prob here happens  when usercleaner is called

greetzz TT

TiMeTrAVelleR


Dessamator

ill have a look at it tomorrow
Ignorance is Bliss.

TiMeTrAVelleR

I am so stupid  sorry to bother you all  working on a differnt script what has nog  folder called logs

you guess it  that was the prob  dident think of that  thought it went to loggs   from root ptokax

thanks aniway mutor and Dessamator



greetzzz  TT







stupid stupid me  ;(

Dessamator

Ignorance is Bliss.

Pothead

#48
QuoteOriginally posted by T?M??r?V?ll?R
you guess it  that was the prob  dident think of that  thought it went to loggs   from root ptokax
hehe, when i originally updated it to LUA 5 i did move the the files to the PtokaX\logs directory.  Someone else changed it back.  :(
Anyway, little update for the script.  You can now have a different cleaning schedule for different profiles.
-- 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
-- updated to LUA 5 by Pothead
-- updated to PtokaX 16.09 by [_XStaTiC_]  Removed the seen part sorry :) i don't use it :)
-- touched by Herodes (optimisation tsunami, and added !seen again)
-- thx to god for giving TimeTraveler the ability to discover those bugs.. notice the plural? :)
-- Pothead changed to allow different profiles to have a different cleaning time

-- !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

--------------------------------------------------------------------- the needed tables // pls dont edit anything here..
cl = {}
cl.sets = {}
cl.levels = {}
cl.user = {}
cl.no = {}
cl.funcs = {}
--------------------------------------------------------------------- config
cl.sets.bot = frmHub:GetHubBotName() -- the bot Name...
cl.sets.auto = 1 -- 0:disables / 1:enables , automatic mode ( if disabled use !cleanusers to clean )
cl.files = { no = "logs/NoClean.lst", user = "logs/CleanUser.lst" } -- these are the files..
cl.levels = { [3]=2, [2]=24} -- levels it needs to clean 3=reg 2=vip , then = the amount of weeks to clean them in

--------------------------------------------------------------------- julian day function 2 calcute the time users spend in the hub
function cl.funcs.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 = math.floor(y/100); b = 2 - a + math.floor(a/4)
	end
	if y <= 0 then c = 0.75 end
	return math.floor(365.25*y - c) + math.floor(30.6001*(m+1) + d + 1720994 + b)
end
--------------------------------------------------------------------- Load a file
function cl.funcs.load(file)
	local f = io.open(file, "r")
	if f then
		for line in f:lines() do
			local s,e,name,date = string.find(line, "(.+)$(.+)")
			if name then cl.user[name] = date; end
		end
		f:close()
	end
end
--------------------------------------------------------------------- Save to file
function cl.funcs.save(file, tbl)
	local f = io.open(file, "w+")
	for a,b in tbl do
		f:write(a.."$"..b.."\n")
	end
	f:close()
end
--------------------------------------------------------------------- call the garbage man
function cl.funcs.cls()
	collectgarbage()
	io.flush()
end
--------------------------------------------------------------------- Display some table
function cl.funcs.showusers( user, data )
	local tbl, txt;
	if (type(data) == "string") then
		local s,e,Profile = string.find(data, "%b<>%s+%S+%s+(%S+)")
		if not Profile then user:SendData(cl.sets.bot , "RTFM ;). It's !showusers "); return 1; end
		tbl = GetUsersByProfile(Profile);
		txt = "registered users with Profile ("..Profile..")"
	else
		local function to_array(t) local r={}; for i , v in t do table.insert(r, i); end; return r; end
		tbl = to_array(data)
		txt = "users who aren't cleaned"
	end
	local info = "\n Here are the "..txt.."\n"
	info = info.."=====================================\n"
	for i,nick in tbl do info = info.."  "..nick.."\n"; end
	info = info.."=====================================\n"
	user:SendData( "$To: "..user.sName.." From: "..user.sName.." $<"..cl.sets.bot.."> "..info)
	cl.funcs.cls()
end
--------------------------------------------------------------------- cleanup old users
function cl.funcs.clean()
	local juliannow = cl.funcs.jdate(tonumber(os.date("%d")), tonumber(os.date("%m")), tonumber(os.date("%Y")))
	local chkd, clnd = 0,0
	local msg = "The_Cleaner has just ran."
	for prof, v in cl.levels do
		msg = msg.."\r\nEvery "..GetProfileName(prof).." user who hasn't been in the hub for "..cl.levels[prof].." weeks was deleted."
		local oldest = cl.levels[prof] * 7
		for a, b in GetUsersByProfile(GetProfileName(prof)) do
			chkd = chkd + 1
			if cl.user[b] then
				if not cl.no[b] then
					local s, e, month, day, year = string.find(cl.user[b], "(%d+)%/(%d+)%/(%d+)");
					year = "20"..year
					local julian = cl.funcs.jdate( tonumber(day), tonumber(month), tonumber(year) )
					if ((juliannow - julian) > oldest) then
						cl.user[b] = nil;
						DelRegUser(b);
						clnd = clnd + 1;
					end
				end
			else
				cl.user[b] = os.date("%x")
			end
		end
	end
	msg = msg.. "\r\n(contact the OP's if your gone be away for a period longer then that)"
	SendToAll(cl.sets.bot , msg)
	if chkd ~= 0 then
		SendToAll(cl.sets.bot , chkd.." users were procest, "..clnd.." of them were deleted.")
	else
		SendToAll(cl.sets.bot ,"Nobody to clean :(")
	end
	cl.funcs.save(cl.files.user, cl.user);
end
--------------------------------------------------------------------- don't clean this users adding/removing
function cl.funcs.addnocl( user, data )
	local s,e,who, addrem = string.find(data, "%b<>%s+%S+%s+(%S+)%s+(%S+)%s*")
	if who and addrem then
		if frmHub:isNickRegged(who) then
			if (addrem == "add") then
				if cl.no[who] then
					user:SendData(cl.sets.bot , who.." is allready on the imune list.")
				else
					cl.no[who] = 1
					user:SendData(cl.sets.bot , who.." is added to the imune list and won't be cleaned.")
					cl.funcs.save(cl.files.no, cl.no)
				end
			elseif addrem == "remove" then
				if cl.no[who] then
					cl.no[who] = nil
					user:SendData(cl.sets.bot , who.." is removed from the imune list.")
					cl.funcs.save(cl.file.no, cl.no)
				else
					user:SendData(cl.sets.bot , who.." was not on the imune list.")
				end
			else
				user:SendData(cl.sets.bot , "RTFM ;). it's !noclean  ")
			end
		else
			user:SendData(cl.sets.bot , who.." isn't a registered user.")
		end
	else
		user:SendData(cl.sets.bot , "Syntax Error, Use: !noclean  ")
	end
end
--------------------------------------------------------------------- Respond to a !seen
function cl.funcs.seen( user, data )
	local s,e,who = string.find( data, "%b<>%s+%S+%s+(%S+)" )
	if who then
		if who ~= user.sName then
			if not GetItemByName(who) then
				if cl.user[who] then
					user:SendData( cl.sets.bot, who.." was last seen on the "..cl.user[who])
				else
					user:SendData( cl.sets.bot, "How should I know when "..who.." was last seen ?")
				end
			else
				user:SendData( cl.sets.bot, who.." is online ... open those eyes of yours..")
			end
		else
			user:SendData( cl.sets.bot, "aren't you that guy ?")
		end
	else
		user:SendData( cl.sets.bot, "Syntax Error, Use: !seen ")
	end
end
--------------------------------------------------------------------- do i need 2 explain this ?????
function ChatArrival(user, data)
	if (cl.sets.auto == 1) then
		if cl.day ~= os.date("%x") then -- user cleaning trigger, works as a timer without a timer
			cl.day = os.date("%x")
			cl.funcs.clean()
		end
	end
	if (user.bOperator) then
		data = string.sub(data,1,-2)
		local s,e,cmd = string.find(data,"%b<>%s+(%S+)")
		if cmd then
			if (cmd == "!noclean") then cl.funcs.addnocl(user, data); return 1;
			elseif (cmd == "!seen") then cl.funcs.seen(user, data); return 1;
			elseif (cmd == "!showusers") then cl.funcs.showusers( user, data ); return 1;
			elseif (cmd == "!shownoclean") then cl.funcs.showusers( user, cl.no ); return 1;
			elseif (cmd =="!cleanusers") then cl.funcs.clean(); return 1;
			end
		end
	end
end
--------------------------------------------------------------------- stuff done when a user/vip leaves or come
function NewUserConnected(user)
	if cl.user[user.sName] then
		cl.user[user.sName] = nil;
		cl.funcs.save(cl.files.user, cl.user);
	end
end

OpConnected = NewUserConnected

function UserDisconnected(user)
	if (cl.levels[user.iProfile] ~= nil) then
		cl.user[user.sName] = os.date("%x");
		cl.funcs.save(cl.files.user, cl.user);
	end
end

OpDisconnected = UserDisconnected
--------------------------------------------------------------------- stuff done on bot startup
function Main()
	cl.funcs.load(cl.files.no)
	cl.funcs.load(cl.files.user)
	cl.day = os.date("%x")
end

*** Edited script, to include bastya_elvtars fix, a few posts down ***

exlepra

I still have this error with !shownoclean

scripts\usercleaner.lua:73: bad argument #1 to `insert' (table expected, got nil)

the NoClean.lst isnt empty, I can see the names with a text editor.

SMF spam blocked by CleanTalk