All pastes #620110 Raw Edit

Anonymous

public lua v1 · immutable
·published 2007-07-15 07:20 UTC
rendered paste body
--IRCBot Class _IRCBot = {}bots = {}function IRCBot(handler,start)	local o = {}	setmetatable(o,_IRCBot)    --these two lines are the basis for OO in Lua	_IRCBot.__index = _IRCBot  -- <-- 	o.hand = handler	o.start = start	o.name=o.hand.nick..tostring(math.random(1,10000)) --very unlikely we get two of the same.	bots[o.name]=o                                     --the debug is always jlulian38_bot8402 wtf...	o.hand.bot = o	o:Init()	return oendfunction _IRCBot:Init()	self.state = rings.new()	self:RunString(tableToLua("startup",self.start))	self:RunString("data = {} data.name = \""..self.name.."\"")	self:RunString("package.cpath=package.cpath..';./modules/?.so' package.path=package.path..';./modules/?.lua'")	self:OpenScript("init.lua")endfunction _IRCBot:OpenScript(scr)	scr = "./lua/bot/"..scr 	if not file.Exists(scr) then return end	local r = file.Read(scr)	if r then		test,err = self.state:dostring(r)		if not test then			print("Slave",err)		end	endendfunction _IRCBot:RunString(str)	--Msg("Running",str)	test,err = self.state:dostring(str)	if not test then		print("Slave",err)	endendfunction _IRCBot:RunHook(name,...)	str = "doHook("	args = {}	args[1]=name	for i,v in ipairs(arg) do args[i+1]=v end		for _,v in ipairs(args) do		if type(v) == "number" then			str=str..tostring(v)..","		elseif type(v) == "string" then			str=str.."[["..v.."]],"		end	end	str = str:sub(1,-2)..")"	self.state:dostring(str)endfunction _sendln(name,ln)	--Msg(name,ln)	bots[name].hand:sendln(ln)endfunction filewrap(snd_back,name,...)	--bah this needs work	arg.n = nil	local args = { file[name](unpack(arg)) }	print(snd_back,name)	if args[1] then 	   local tab = tableToLua("__file_args__",args)	   print(tab)	   bots[snd_back]:RunString(tab)	endend