Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Kорзина _ Настройка Антирекламы

Автор: KauH 16.11.2008, 23:04

есть скрипт антирекламы (может кому и пригодится) , не хочет реагировать на сочетание :411

CODE
MainBot = SetMan.GetString(21) -- Имя главного бота
BotReg = 1 -- Регистрировать ли бота на хабе (1-да/0-нет)

tWhomToSend = { -- профили, которые получат сообщение:
[0] = 1, -- админы
}

RekProfAllow = { -- Профили пользователей, которым разрешена реклама
[0]=1, -- Мастер
[1]=1, -- Оператор
[2]=0, -- VIP
[3]=0, -- Зарегистрированный пользователь
[4]=1, -- Server
[-1]=0, -- Незарегистрированный пользователь
}

MatProfAllow = { -- Профили пользователей, которым разрешено использовать нецензурные выражения
[0]=1, -- Мастер
[1]=1, -- Оператор
[2]=0, -- VIP
[3]=0, -- Зарегистрированный пользователь
[4]=1, -- Server
[-1]=0, -- Незарегистрированный пользователь
}

adverTable = { -- Маска запрещенных сочетаний при проверке на рекламу
"%S+%.%S+%.%S+.*[41??]%s*[10??]%s*[14??]%s*[2]?[1]?",
"[dD]%s*[cC]%s*[hH]%s*[uU]%s*[bB]%s*:%s*/%s*/",
"%d%d%?%d?%.%d%d%?%d?%.%d%d%?%d?%.%d%d%?%d?%s*:%s*[14][410][14][2]?[1]?",
"%d*%.%d*%.%d*%.%d*%s*:",
"%s*[411]",
}

safeTable = { -- Маска исключений для рекламы
"[hH]%s*[tT]%s*[tT]%s*[pP]%s*:%s*/%s*/",
"%s*[27015]",
"%.%.%.%.%.",
"%?%?%?%?%?",
"%$%$%$%$%$",
}

matTable = { -- Маска запрещенных сочетаний при проверке на мат (достаточно писать только строчными буквами)
"[бБ]%s*[лЛ]%s*[яЯ]",
"[хХ]%s*[уУ]%s*[йЙ]",
"[хХ]%s*[аА]%s*[бБ]",
"[hH]%s*[uU]%s*[bB]",
"[dD]%s*[cC]",
"[аА]%s*[дД]%s*[рР]%s*[еЕ]%s*[сС]",
"[cC]%s*[tT]%s*[rR]%s*[lL]",
}
excTable = { -- Маска исключений для мата
}

MatSubs = "}:-[ <вырезано цензурой> }:-["

Texts = { -- Стандартные технические сообщения (изменять не рекомендую)
" Внимание! Реклама хабов категорически запрещена.",
" Внимание! Вероятная попытка несанкционированной рекламы! Пользователь",
" сказал в общий чат следующую фразу:",
" сказал в приват следующую фразу:",
" Внимание! Оскорбительный мат на хабе запрещен. Уважайте окружающих.",
" Внимание! Вероятная попытка использования мата или рекламы ! Пользователь",
}

MessageToAll = {
"Народ, кто хочет выпить пива? Угощаю.",
"У меня сегодня праздник! Проставляюсь всем!",
"Постучите мне по голове, чтобы я проснулся.",
"Ау, где я?",
"Народ. Ау. Где я?",
"Что здесь происходит?",
"Больше так пить не буду.",
"Хочу быть взрослым.",
"Хочу быть умным.",
"Почему у меня усы не растут?",
"На какую кнопку нужно нажимать чтобы выключить комп?",
"абыРвалГ",
"Народ. Какое сегодня число?",
"Народ. Какой сегодня месяц?",
"Не понял.",
"Мои мысли, мои скакуны.",
"Раздолбай я, раздолбай.",
"Пора менять клавиатуру.",
"Кому подарить 100$.",
"У меня сегодня просто замечательное настроение",
"У компьютера должны моргать лампочки или это у меня с глазами что-то?",
"Здесь есть доктор?",
"Что так сильно может гудеть в компьютере?",
"Сейчас день или ночь?",
"Кому нужны слоты? Могу отдать бесплатно, мне они больше не нужны.",
"Ой. Что это?",
"Отсосу задёшево;)",
}

sReason = "Нарушение правил хаба. Ищите другое место для рекламы своего хаба !!!"

function OnStartup()
if BotReg==1 then
Core.RegBot(MainBot,"","",true)
end
PhrasLen = table.maxn(MessageToAll)
end

function ChatArrival(user,data)
Core.GetUserAllData(user)
local s,e,msg = string.find(data,"%b<>%s*(.*)%|")
msg = StringLower(msg)
if not (RekProfAllow[user.iProfile]==1) then
if checkForAdvertising(msg) then
if checkForSafe(msg) then
return false
end
Core.SendToAll("<"..user.sNick.."> "..MessageToAll[math.random(PhrasLen)])
SendToOps("<"..MainBot.."> "..Texts[2].." "..user.sNick.." ["..user.sIP.."] "..Texts[3].." "..msg)
Core.SendToNick(user.sNick,"<"..MainBot.."> *** "..Texts[1])
BanMan.TempBan(user,0,sReason,MainBot,true)
Core.Disconnect(user)
return true
end
end
if not (MatProfAllow[user.iProfile]==1) then
if checkForMat(msg) then
if checkForExc(msg) then
return false
end
SendToOps("<"..MainBot.."> "..Texts[6].." "..user.sNick.." ["..user.sIP.."] "..Texts[3].." "..msg)
-- Core.SendToAll("<"..user.sNick.."> "..MatSubs)
-- return true
end
end
collectgarbage("collect")
end


function ToArrival(user,data)
Core.GetUserAllData(user)
local s,e,to,from,msg=string.find(data,"%$To:%s(%S+)%sFrom:%s%S+%s$<(%S+)%>%s(.*)$")
msg = StringLower(msg)
if not (RekProfAllow[user.iProfile]==1) then
if checkForAdvertising(msg) then
if checkForSafe(msg) then
return false
end
Core.SendToAll("<"..user.sNick.."> "..MessageToAll[math.random(PhrasLen)])
SendToOps("<"..MainBot.."> "..Texts[2].." "..user.sNick.." ["..user.sIP.."] "..Texts[4].." "..msg)
Core.SendToNick(user.sNick,"<"..MainBot.."> *** "..Texts[1])
BanMan.TempBan(user,0,sReason,MainBot,true)
return true
end
end
if not (MatProfAllow[user.iProfile]==1) then
if checkForMat(msg) then
if checkForExc(msg) then
return false
end
SendToOps("<"..MainBot.."> "..Texts[6].." "..user.sNick.." ["..user.sIP.."] "..Texts[4].." "..msg)
-- return true
end
end
collectgarbage("collect")
end

function checkForAdvertising(msg)
for _,v in ipairs(adverTable) do
if string.find(msg, v) then
return true
end
end
return false
end

function checkForSafe(msg)
for _,v in ipairs(safeTable) do
if string.find(msg, v) then
return true
end
end
return false
end

function checkForMat(msg)
for _,v in ipairs(matTable) do
if string.find(msg, v) then
return true
end
end
return false
end

function checkForExc(msg)
for _,v in ipairs(excTable) 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

SendToOps = function( sMsg )
for iProf, bAccess in pairs(tWhomToSend) do
if bAccess == 1 then
Core.SendToProfile(iProf, sMsg)
end
end
end


уже час бьюсь , не реагирует и всё тут , помоги настроить а то я уж не совсем знаток в регулярных выражениях

Автор: Setuper 16.11.2008, 23:20

Код
"%s*:411%s*"
данное выражение отлавливает в чате :411

Автор: KauH 16.11.2008, 23:30

Цитата(Setuper @ 16.11.2008, 23:20) *
Код
"%s*:411%s*"
данное выражение отлавливает в чате :411

спасибо всё работает still_dreaming.gif

Автор: Herurg 17.11.2008, 2:18

вылажи целеком файлом плз :P

Автор: KauH 17.11.2008, 2:35

Цитата(Herurg @ 17.11.2008, 2:18) *
вылажи целеком файлом плз :P

ну собственно код уже есть в первом сообщении ...
Из подробностей этой антирекламы

скрипт был создан путём скрещивания большинства антирекламных скриптов
все настройки и предпочтения легко изменяются и дополняются под вас

 antireklama.lua ( 7.02 килобайт ) : 34
 

Автор: Артём 20.11.2008, 9:12

shocked.gif а зачем на порты уже антиреку ставить?.... для меня не понятно :(

Автор: Mol 20.11.2008, 17:09

Артём, этого и много другого ты уже то4но не поймёш.. смирись..

Автор: Артём 20.11.2008, 22:53

Цитата(Mol @ 20.11.2008, 18:09) *
Артём, этого и много другого ты уже то4но не поймёш.. смирись..



victory.gif Спасибо за совет...О Всемогущий МОЗГ victory.gif