--------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------- -- Данный скрипт взят с сайта http://board.univ-angers.fr/main.php -- Оптимизировал и протестировал для русско-язычных хабов: -- NRJ ( nrj@labo.ru ) -- -- -- Любые боты и скрипты - поддержка/обновления/новинки: -- 1) http://dc.hovel.ru/ -- 2) http://forum.proc.ru/index.php?showforum=24 -- -- Ф-ции: -- антиреклама - обнаружение запрещенных адресов в чате и привате -- безопасная реклама - вы можете размещать безопасные адреса хабов -- Counter - он же adverKill, по умолчанию, постоянный бан после трех временных -- Many Signs - поддержка замены "." на другие символы -- Tempban left - сколько временных банов получит пользователь перед постоянным ------------------------------------------------------------------------ --++++++++++++++++++++++ START OF CONFIGURATION ++++++++++++++++++++++-- ------------------------------------------------------------------------ Bot = "anti_advertise_bot" -- название бота -- Сколько пользователей получит временных банов, прежде чем получит постоянный adverKill = 3 -- If the "kill" messages should be shown to everyone in main chat ShowAllinMain = 1 --Безопасные адреса расположите здесь (Пример, для www.proc.ru - это proc) theSafeAdver={ "safe1","safe2","safe3","safe4", } -- Впишите сюда название самих сайтов без www и ru(Пример из www.proc.ru - "proc") DNS01={ "no-ip","mine","sytes","dynip","dyndns","gotdns","kicks-ass","d2g","serveftp", "servehttp","servehalflife","servequake","servecounterstrike","xs4all","myftp", "servebeer","zapto","tropico","lysekil","udgnet","dnsalias","dynalias","ath","homeip", "servemp3","hopto","servegame","staticip","orgdns","myftpsite","ipactive","idlegames", "homeunix","homelinux","flamenap","dns2go","clanpimp","bounceme","ip","uni","is-a-geek","217.117.121.10" } -- Здесь указаны символы, которые еще будут определяться помимо точек (Пример - www&proc&ru) MSigns={".","/",":"} NSigns={".","/",":"} -- Окончание (Пример, из того же процентнера - это "ru") DNS02={"com","net","org","nu","se","cx","us","it","co.uk","info","biz","cc","de","tv","nl","8000"} ------------------------------------------------------------------------ --+++++++++++++++++++++++ END OF CONFIGURATION +++++++++++++++++++++++-- ------------------------------------------------------------------------ adverCounter = 0 function adverSmashing(user) if not user.bOperator then adverCounter = adverCounter + 1 tmpBanLeft = adverKill - adverCounter if adverCounter < adverKill then user:SendData(Bot, "Вы временно лишены доступа к хабу из-за запрещенной рекламы") user:SendData(Bot, "Число временных банов до постоянного = "..tmpBanLeft) user:TempBan() SendPmToOps(Bot, "User <"..user.sName.."> был временно лишены доступа к хабу из-за запрещенной рекламы, wrote = "..advDetect) if ShowAllinMain == 1 then SendToAll(Bot, "User <"..user.sName.."> был временно лишены доступа к хабу из-за запрещенной рекламы") end elseif adverCounter == adverKill then user:SendData(Bot, "Вы получили постоянный бан из-за запрещенной рекламы!") user:Ban() SendPmToOps(Bot, "User <"..user.sName.."> получил постоянный бан из-за запрещенной рекламы, wrote = "..advDetect) if ShowAllinMain == 1 then SendToAll(Bot, "User <"..user.sName.."> был забанен навсегда из-за запрещенной рекламы") end adverCounter = 0 end end end -- Детект приватов чата function ToArrival(user,data) for d=1,table.getn(MSigns) do tSigns = (string.lower(MSigns[d])) for e=1,table.getn(DNS01) do tPart01 = (string.lower(DNS01[e])) for f=1,table.getn(DNS02) do tPart02 = (string.lower(DNS02[f])) for g=1,table.getn(NSigns) do hSigns = (string.lower(MSigns[g])) for h=1,table.getn(theSafeAdver) do safe01 = (string.lower(theSafeAdver[h])) -- advDetect =tSigns..tPart01..hSigns..tPart02 advDetect1 =tPart01..hSigns..tPart02 safeAdv = safe01..advDetect -- if(string.find(data, advDetect,1,1)) then if(string.find(data, safeAdv,1,1)) then return nil end return adverSmashing(user) end if(string.find(data, advDetect1,1,1)) then if(string.find(data, safeAdv,1,1)) then return nil end return adverSmashing(user) end if(string.sub(data, 1, 4) == "$To:") then if(string.find(data, advDetect,1,1) ) then if(string.find(data, safeAdv,1,1)) then return nil end return adverSmashing(user) end end end end end end end end -- Детект главного чата (чтобы включить уберите вначале следующей строчки "--") -- ChatArrival = ToArrival