Название скрипта: Defend PM Версия скрипта: 1.01 Платформа: PtokaX Версия API: API2 Автор: Enyby
Описание: Скрипт предназначен для полностью автоматической защиты ЛС пользователей от спама. Выдает бан, при обнаружении спама.
Принципы работы скрипта: Обычные пользователи отличаются от спамеров тем, что у обычных пользователей, если и пройдет ссылка на хаб, IP адрес или что-то подобное, то это будет разово. На этом и основана работа скрипта. При получении ЛС оно проверяется на наличие стоп слов. Если стоп слова найдены, то список спамера пополняется очередным ником. Если ников стало больше предела уведомления операторов, то операторы уведомляются. Если больше предела предупреждений - пользователь предупреждается. Если больше либо равно пределу бана - пользователь уходит в бан. Периодически запускается очистка, которая убирает по одному нику из списка спамера. Таким образом идет учет количества отспамленных в интервале проверки. Чтобы спамить безнаказанно, нужно писать новым пользователям не чаще 1 раза в интервал. По умолчанию интервал 5 минут.
P. S. Если у вас нет регистрации на этом форуме, а значит вы не можете качать вложения, то скачать этот скрипт, равно как и другие, можно по ссылке http://mydc.ru/r/?http://inethub.olvi.net.ua/ftp/pub/Soft/Servers/DC%2B%2B/LUA%20scripts/Enyby/http://mydc.ru/r/?ftp://inethub.olvi.net.ua/pub/Soft/Servers/DC++/LUA%20scripts/Enyby/.
Автор: Alex_lola 21.1.2012, 21:26
ничего нового ты не придумал..антиреклама в личке
Автор: Enyby 22.1.2012, 14:52
Я отвечу цитатой.
Цитата
Цитата
Скажите мне, что все эти комментаторы сделали в своей жизни нового и интересного? Они вообще что-нибудь в ней создали? Пока что Я вижу, что у меня просто насрано в комментариях, больше НИ-ЧЕ-ГО! [...] Или эта позиция: «Ну, это Я уже видел. Это уже было. Дайте мне что-нибудь новенькое, чтобы Я поржал!» Ха-ха-ха!
Здравствуйте Вам. Можно ли сделать чтобы не только на определенные стоп слова скрипт реагировал , а вообще на сильную пм активность пользователя ?
Автор: Enyby 22.1.2012, 22:14
Можно, но такая функциональность уже встроена в хаб. Смотрите в настройках хаба флудообнаружение.
Замените функцию ToArrival на следующую:
Код
function ToArrival(tUser, sData) if tSpamUsers[tUser.sIP] == nil then tSpamUsers[tUser.sIP] = {} end if tSpamUsers[tUser.sIP][sToNick] == nil then tSpamUsers[tUser.sIP][sToNick] = true table.insert(tSpamUsers[tUser.sIP], sToNick) end local iCount = #tSpamUsers[tUser.sIP] local sReport = "" if iCount > iLimit then sReport = sReport.."*** Пользователь "..tUser.sNick.." с IP "..tUser.sIP.." отослал ЛС "..iCount.." разным пользователям за последние "..iClearTime.." минут. Возможно спам по ЛС. " end if iCount > iWarnLimit and iCount < iBanLimit then Core.SendToUser(tUser, "<"..sBot.."> *** Прекратите рассылать спам по личкам, иначе вы получите бан!") sReport = sReport.."Пользователь предупрежден. " end if iCount >= iBanLimit then BanMan.TempBanIP(tUser.sIP, iTimeBan, "Спам по ЛС", sBot, true) local sTimeBan = os.date("%d.%m.%Y %R", os.time() + iTimeBan*60) sReport = sReport.."Пользователь забанен до "..sTimeBan..". " local tUsers = Core.GetUsers(tUser.sIP) if tUsers ~= nil then for _, tSpamUser in pairs(tUsers) do Core.SendToUser(tUser, "<"..sBot.."> *** Вы были забанены до "..sTimeBan.." за спам по ЛС.") Core.Disconnect(tSpamUser) end end tSpamUsers[tUser.sIP] = nil sReport = sReport.."Отключено "..#tUsers.." пользователей." end if sReport ~= "" then Core.SendToOps("<"..sBot.."> "..sReport) end end
Автор: AfLc 22.1.2012, 22:20
Да , но вроде во флудообнаружение , как я помню не пишет сообщение которое использует спамер или флудер.Хотя точно не помню.У меня лички почти всегда были отключены на ynhub, а когда перешел на ptokax в лички можно отправлять было только после реги.
Автор: Enyby 22.1.2012, 22:22
Мой скрипт тоже не пишет текста сообщений. Он либо проверяет текст сообщения на слова, либо просто считает число отосланных ЛС.
Автор: AfLc 22.1.2012, 22:24
Точно не увидел . Извините :( НО все таки полезный скрипт , спасибо !
Автор: Enyby 26.1.2012, 1:29
Новая версия 1.01. Добавлено игнорирование операторов и расширен список паттернов основными доменами.
ADD: Игнор операторов означает что операторы не проверяются этим скриптом, но если с IP оператора не оператором будет отсылаться спам, то оператора тоже забанит. Хотя это зависит от настроек профиля операторов. Но отключит от хаба это точно.
Автор: Marc 26.1.2012, 1:47
Enyby! А можно как-то разделить админа и операторов отдельным меню? Я имею ввиду то, что если админу по идее можно всегда давать возможность посылать любые адреса, то операторам не всегда можно давать такую возможность....
Автор: Enyby 26.1.2012, 1:53
Замените:
Код
if tUser.bOperator == nil then Core.GetUserData(tUser, 11) end if not tUser.bOperator then
На:
Код
if tUser.iProfile ~= 3 then
где 3 - номер профиля, который нужно игнорировать.
Автор: Marc 26.1.2012, 2:00
Enyby!
Спасибо! данное дополнение поможет админу....
Автор: Enyby 26.1.2012, 2:02
Для "спасибо" на этом форуме есть специальная кнопка внизу каждого поста. Если пост помог - нажимаете кнопку.
Автор: Tsd 3.3.2012, 14:54
Непонятна функция function PrettyTime(iTime)
end
Автор: Enyby 3.3.2012, 14:56
Просто осталась от попыток написаний и улучшений. Не проследил, когда делал релиз. Сейчас уже пусть будет так - она никому не мешает.
Автор: Tsd 3.3.2012, 15:00
Понятно. Думал может какая то задержка, но вызова функции в скрипте не обнаружил. А Вы не хотели бы "склеить" вместе все три скрипта (Hub, Chat, PM) с возможностью подключения/отключения их в конфиге ?
Автор: Enyby 3.3.2012, 15:10
В теории можно, но не вижу смысла. Будет комбайн. Труднонастраиваемый и не особо понятный. Единственное что будет лучше - один скрипт, вместо трех.
Например, некоторым админстратором нужно делать исключение для операторов только в PM скрипте, а не во всех. У других уже стоит антиреклама на личку или еще что-то и т. д.
Автор: Tsd 3.3.2012, 15:17
Я один скрипт и имел ввиду. А конфиг, если и большой - не беда, один раз настроить и всё. Для удобства настройки конфиг можно сделать блоками.
Автор: Enyby 3.3.2012, 15:19
Посмотрим. Если уж совсем заняться нечем будет, может и сделаю.
Автор: Tsd 3.3.2012, 15:30
Цитата(Marc @ 26.1.2012, 0:47)
Enyby! А можно как-то разделить админа и операторов отдельным меню? Я имею ввиду то, что если админу по идее можно всегда давать возможность посылать любые адреса, то операторам не всегда можно давать такую возможность....
Хороши операторы, если вы им не доверяете...
Автор: Enyby 5.3.2012, 12:38
Чтобы сделать блокировку сообщений достаточно:
Код
if iCount >= iBanLimit then BanMan.TempBanIP(tUser.sIP, iTimeBan, "Спам по ЛС", sBot, true) local sTimeBan = os.date("%d.%m.%Y %R", os.time() + iTimeBan*60) sReport = sReport.."Пользователь забанен до "..sTimeBan..". " local tUsers = Core.GetUsers(tUser.sIP) if tUsers ~= nil then for _, tSpamUser in pairs(tUsers) do Core.SendToUser(tUser, "<"..sBot.."> *** Вы были забанены до "..sTimeBan.." за спам по ЛС.") Core.Disconnect(tSpamUser) end end tSpamUsers[tUser.sIP] = nil sReport = sReport.."Отключено "..#tUsers.." пользователей." end if sReport ~= "" then Core.SendToOps("<"..sBot.."> "..sReport) end
заменить на:
Код
if iCount >= iBanLimit then sReport = sReport.."Сообщение заблокировано. " end if sReport ~= "" then Core.SendToOps("<"..sBot.."> "..sReport) end if iCount >= iBanLimit then return true end
Синтаксис C:\allservers\PtokaX\scripts\DefendPM.lua:122: bad argument #1 to 'date' (invalid conversion specifier '%R') stack traceback: [C]: in function 'os.date' C:\allservers\PtokaX\scripts\DefendPM.lua:122: in function 'ToArrival'
0.5.0.3 версия
Автор: Ksan 4.11.2018, 14:31
mod, попробуйте вместо %R вставить %H:%M (либо %H:%M:%S, если хотите быть точным до секунд) в строке 122, на которую указывает приведённая вами ошибка. Видимо, %R - это попытка представить время в удобном региональном формате, но Птока (ну или Луа, а то и вовсе ваша система) не поняла добрых намерений автора.