--[[ Скрипт анти-рекламы. Сканирует чат и личку. Возможность перманентного бана, кика, временного бана, фильтрации с оповещением и тихой фильтрации. Список исключений. Автор: Damaks ™ Хаб: Gold-HUB: dchub://10.170.161.189 dchub://89.222.185.103 Сайт: http://rsload.net Совместимость: ptokax 0.4, lua 5.1 ]]-- MainBot = "Антиреклама" -- имя бота BotReg = 0 --показывать бота в списке пользователей RekProfAllow={ -- Профили пользователей, которым разрешена реклама [0]=1, -- Мастер [1]=1, -- Оператор [2]=1, -- VIP [3]=0, -- Зарегистрированный пользователь [-1]=0, -- Незарегистрированный пользователь } MatProfAllow={ -- Профили пользователей, которым разрешено использовать нецензурные выражения [0]=1, -- Мастер [1]=1, -- Оператор [2]=1, -- VIP [3]=0, -- Зарегистрированный пользователь [-1]=0, -- Незарегистрированный пользователь } RekAllMode=4 -- Режим наказания за рекламу в общем чате (0 = постоянный бан / 1 = временный бан на время, установленное в настройках хаба / 2 = временный бан на время, указанное в переменной RekBanTime / 3 = разъединение / 4 = фильтрование и сообщение RekSubs в личку / 5 = тихое фильтрование) RekPmMode=5 -- Режим наказания за рекламу в привате (0 = постоянный бан / 1 = временный бан на время, установленное в настройках хаба / 2 = временный бан на время, указанное в переменной RekBanTime / 3 = разъединение / 4 = фильтрование и сообщение RekSubs в личку / 5 = тихое фильтрование) RekBanTime=5 -- Время бана за рекламу RekSubs = " Не надоело ещё хуйнёй страдать?" -- Что запрещено Rek = { "[d]%s*[c]%s*[h]%s*[u]%s*[b]%s*:%s*/%s*/", "[h]%s*[t]%s*[t]%s*[p]%s*:%s*/%s*/", "[w]%s*[w]%s*[w]%s*:%s*/%s*/", "[f]%s*[t]%s*[p]%s*:%s*/%s*/", "[w]%s*[w]%s*[w]%s*.", ".%s*[r]%s*[u]%s* ", ".%s*[u]%s*[a]%s* ", ".%s*[c]%s*[o]%s*[m]%s* ", ".%s*[n]%s*[e]%s*[t]%s*", ".%s*[o]%s*[r]%s*[g]%s* ", "(%d*%.%d*%.%d*%.%d*)", } -- Что разрешено RekExcept = { "http://mydc.ru", } Texts={ -- Стандартные технические сообщения (изменять не рекомендую) "Внимание! Реклама посторонних ресурсов на хабе категорически запрещена. Вы были забанены навсегда.", "Внимание! Реклама посторонних ресурсов на хабе категорически запрещена. Вы были забанены на ", } ------------------------------[ Code Section ]------------------------------ function OnStartup() if BotReg==1 then Core.RegBot(Bot,"","",true) end end function ChatArrival(user,data) Core.GetUserAllData(user) local s,e,msg = string.find(data,"%b<>%s*(.*)%|") if not (RekProfAllow[user.iProfile]==1) then msg = StringLower(msg) if RekCheck(msg) then if RekExceptCheck(msg) then return nil end if RekAllMode==0 then Core.SendToNick(user.sNick,"<"..MainBot.."> *** "..Texts[1]) BanMan.Ban(user,"","",false) return true end if RekAllMode==1 then Core.SendToNick(user.sNick,"<"..MainBot.."> *** "..Texts[2]) BanMan.TempBan(user,0,"","",false) return true end if RekAllMode==2 then Core.SendToNick(user.sNick,"<"..MainBot.."> *** "..Texts[2]..RekBanTime.." мин.") BanMan.TempBan(user,RekBanTime,"","",false) return true end if RekAllMode==3 then Core.Disconnect(user.sNick) return true end if RekAllMode==4 then Core.SendPmToNick(user.sNick,MainBot,RekSubs) return true end if RekAllMode==5 then return true end end end end function ToArrival(user,data) Core.GetUserAllData(user) s,e,to,from,msg=string.find(data,"%$To:%s(%S+)%sFrom:%s%S+%s$<(%S+)%>%s(.*)$") if not (RekProfAllow[user.iProfile]==1) then msg = StringLower(msg) if RekCheck(msg) then if RekExceptCheck(msg) then return nil end if RekPmMode==0 then Core.SendToNick(user.sNick,"<"..MainBot.."> *** "..Texts[1]) BanMan.Ban(user,"","",false) return true end if RekPmMode==1 then Core.SendToNick(user.sNick,"<"..MainBot.."> *** "..Texts[2]) BanMan.TempBan(user,0,"","",false) return true end if RekPmMode==2 then Core.SendToNick(user.sNick,"<"..MainBot.."> *** "..Texts[2]..RekBanTime.." мин.") BanMan.TempBan(user,RekBanTime,"","",false) return true end if RekPmMode==3 then Core.Disconnect(user.sNick) return true end if RekPmMode==4 then Core.SendPmToNick(user.sNick,MainBot,RekSubs) return true end if RekPmMode==5 then return true end end end end function RekCheck(msg) for _,v in ipairs(Rek) do if string.find(msg, v) then return true end end return false end function RekExceptCheck(msg) for _,v in ipairs(RekExcept) do if string.find(msg, v) then return true end end return false end function StringLower(msg) local res = "" local Byte, Len = nil, string.len(msg) msg = string.lower(msg) for i = 1, Len do Byte = string.byte(msg, i) if (Byte >= 192) and (Byte < 224) then Byte = Byte + 32 end if (Byte == 168) or (Byte == 184) then Byte = 229 end res = res..string.char(Byte) end return res end