myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
 
Ответить в данную темуНачать новую тему

> Предупреждения, API2

Теги
Нет тегов для показа
Accelerator
сообщение 28.6.2009, 17:01
Сообщение #1


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




Кто-нибудь может написать скрипт предупреждений? Этот не предлагать! Не особо нравится он... ops.gif

Идея такова:
Администратор и/или оператор хаба выписывает пользователю предупреждение. В ЛС ему приходит что то типо такого:
Цитата
<Security> Вам было выписано предупреждение администратором: STRELOK по причине: тест [ Предупреждений: 1/5 ]

Т.е. пользователь получает новое предупреждение, рядом в квадратных скобках ему пишет сколько у него всего предупреждений(без причины) и сколько возможно иметь.

Когда отметка предупреждений 5, пользователя бы банило на N часов/недель/месяцев/лет/пожизненно(Можно было бы выбрать, какой бан, пожизненный или временный), если временный бан, то скажем в BanTime устанавливаем время в часах, а в BanType можно было бы выбрать, какой бан, временный или постоянный (0 - Временный; 1 - постоянный). Ну и в параметре sReason указать, какая будет причина бана

Также у пользователя будет в меню пукт Предупреждения, где он бы мог смотреть сколько у него предупреждений, их причины и того, кто их выписал big_smile.gif

Важно!!! Чтобы предупреждения не снимались автоматически! Чтобы их мог снять только администратор или оператор, если юзер обратится к нему big_smile.gif

Реализуйте big_smile.gif
Go to the top of the page
+Quote Post
Accelerator
сообщение 29.6.2009, 6:59
Сообщение #2


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




Попытался сам, но не получилось :(
CODE
sBot = SetMan.GetString(21)
BanType = 0 -- Тип Бана (0 - Временный; 1 - постоянный )
BanTime = 30 -- На сколько банить пользователя(в днях)
sReason = "Ваш уровень предупреждений достиг максимальной отметки!" -- Причина бана
sPercent = 5 --максимально допустимое число предупреждений

tProfile = {
[0] = 1,
[1] = 1,
}
tWarn = {}


function OnStartup()
sWarn = Core.GetPtokaXPath().."scripts/Warn/WarnTable.dat"
if loadfile(sWarn) then
dofile(sWarn)
end
TmrMan.AddTimer(nTime*60000, "OnExit")
end

function OnExit()
WriteTable(tWarn, "tWarn", sWarn)
end

function UserConnected(tUser)
Core.SendToUser(tUser,"$UserCommand 1 3 Пользователь\\Предупреждения$<%[mynick]> !mywarn|")
if tProfile[tUser.iProfile] == 1 then
Core.SendToUser(tUser,"$UserCommand 1 3 Меню админа\\Дать предупреждение$<%[mynick]> !warn %[line:Введите ник] %[line:Введите причину]|")
Core.SendToUser(tUser,"$UserCommand 1 3 Меню админа\\Снять предупреждение$<%[mynick]> !delwarn %[line:Введите ник]|")
Core.SendToUser(tUser,"$UserCommand 1 3 Меню админа\\Список предупреждённых$<%[mynick]> !warntable|")
end
end
OpConnected = UserConnected
RegConnected = UserConnected

function ChatArrival(tUser,sData)
local sData = string.sub(sData,1,-2)
local _,_,cmd = string.find(sData, "%b<>%s+(%S*)")
if cmd == "!warn" then
if tProfile[tUser.iProfile] == 1 then
if not tWarn[sNick] then
local _,_,msg = string.find(sData, "%b<>%s+%S+%s+(.+)")
twarn[sNick] = msg
WriteTable(tWarn, "tWarn", sWarn)
local _,_,sNick = string.find(sData, "%b<>%s+%S+%s+(%S+)")
local _,_,sReason = string.find(sData, "%b<>%s+%S+%s+(.*)")
if not sReason then
Core.SendToUser(tUser, "<"..sBot.."> Пожалуйста, введите причину!")
end
if not sNick then
Core.SendToUser(tUser, "<"..sBot.."> Введите ник!")
else
tWarn[tUser.sNick] = {}
tWarn[tUser.sNick].Nick = sNick
tWarn[tUser.sNick].Reason = sReason
tWarn[tUser.sNick].Time = os.time()
NumberWarn = " / "..sPercent
WarnMsg = "Вы были предупреждены пользователем "..tUser.sNick.." по причине "..sReason.." [ Предупреждений: "..NumberWarn.." ]"
Core.SendPmToNick(sNick, sBot, WarnMsg)
end
end
else
Core.SendToUser(tUser, "<"..sBot.."> На хабе нет пользователя с таким ником!")
end
else
Core.SendToUser(tUser, "<"..sBot.."> У вас недостаточно прав для использования этой команды!")
end
return true
end
elseif cmd == "!delwarn" then
if tProfile[tUser.iProfile] == 1 then
if tWarn[sNick] then
tWarn[sNick] = nil
WriteTable(tWarn, "tWarn", sWarn)
local _,_,sNick = string.find(sData, "%b<>%s+%S+%s+(%S+)")
local _,_,sReason = string.find(sData, "%b<>%s+%S+%s+(.*)")
if not sNick then
Core.SendToUser(tUser, "<"..sBot.."> Вы не ввели ник!")
end
if not sReason then
Core.SendToUser(tUser, "<"..sBot.."> Введите причину поощрения!")
end
if not tWarn[sNick] then
Core.SendToUser(tUser, "<"..sBot.."> Ошибка, Предупреждение не было снято!")
else
warn = ""
DelWarnMsg = "Предупреждение "..warn.." было снято пользователем "..tUser.sNick.." по причине "..sReason
Core.SendPmToNick(sNick, sBot, DelWarnMsg)
end
tAway[sNick] = nil
else
Core.SendToUser(tUser, "<"..sBot.."> На хабе нет пользователя с данным ником!")
end
else
Core.SendToUser(tUser, "<"..sBot.."> У вас недостаточно прав для использования этой команды!")
end
return true
end
elseif cmd == "!warntable" then
if tProfile[tUser.iProfile] == 1 then
sMsg = "Список предупреждённых пользователей:\r\n\r\n"
iCount = 0
for sNick,sData in pairs(tWarn) do
sMsg = sMsg.."\t\tНик: "..sNick.."\t\tПричина: "..sReason.."\t\t"
iCount = iCount + 1
end
if not iCount then
Core.SendToUser(tUser,"<"..sBot.."> В списке нет предупреждённых пользователей.")
else
Core.SendToUser(tUser,"<"..sBot.."> "..sMsg)
end
else
Core.SendToUser(tUser, "<"..sBot.."> У вас недостаточно прав для использования этой команды!")
end
return true
end
elseif cmd == "!mywarn" then
sMsg = "Вы были предупреждены "..NumberWarn..". За снятием предупреждений обращайтесь к оператору или администратору хаба."
Core.SendPmToUser(tUser, sBot, sMsg)
else
Core.SendToUser(tUser, "<"..sBot.."> У вас нет предупреждений!")
end
return true
end
end

function GetFile(file)
local f = io.open(file, "r")
local message = f:read("*all")
f:close()
return message
end

function SaveToFile(sFileWay, tTable, sTableName)
local sHandle = io.open(sFileWay,"w+")
Serialize(tTable, sTableName, sHandle)
sHandle:flush()
sHandle:close()
end

function Serialize(tTable, sTableName, sHandle, sTab)
local sTab = sTab or ""
sHandle:write(sTab..sTableName.." = {\n")
for key, value in pairs(tTable) do
local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key)
if type(value) == "table" then
Serialize(value, sKey, sHandle, sTab.."\t")
else
local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value)
sHandle:write(sTab.."\t"..sKey.." = "..sValue)
end
sHandle:write(",\n")
end
sHandle:write(sTab.."}")
end

Помогите довести до ума :(
Go to the top of the page
+Quote Post
Wariner
сообщение 29.6.2009, 9:07
Сообщение #3


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




а к автору обращаться не пробовал?


Спасибо сказали:
Go to the top of the page
+Quote Post
Артём
сообщение 6.7.2009, 17:18
Сообщение #4


Наруто на аваторке
***********

Группа: Пользователи
Сообщений: 2 606
Регистрация: 11.10.2008
Из: Харькова
Пользователь №: 771
Спасибо сказали: 774 раза




2STRELOK
В экзекуторе тип такого есть предупреждения,но вот как его извлеч не знаю,точнее не пробовал даже,спроси у автора скрипта (Phazeus),можеть подскажет как его выдрать (код) big_smile.gif

Цитата(Wariner @ 29.6.2009, 9:07) *
а к автору обращаться не пробовал?

я пробовал к автору обращатся)))Но он не отвечает big_smile.gif
Go to the top of the page
+Quote Post
Drakula
сообщение 18.7.2009, 17:15
Сообщение #5


PtokaX DC Hub 0.4.1.2
*****

Группа: Пользователи
Сообщений: 203
Регистрация: 20.1.2009
Из: Republic of Belarus, Minsk, Uruchie, Avalon.
Пользователь №: 1 890
Спасибо сказали: 4 раза




Скрипт стал??? Есть надежда на его осуществление или нет? cry.gif
Go to the top of the page
+Quote Post
Akaick
сообщение 22.7.2009, 17:16
Сообщение #6


Участник
**

Группа: Пользователи
Сообщений: 35
Регистрация: 7.7.2009
Из: Тула
Пользователь №: 3 818
Спасибо сказали: 3 раза




Когда сделаете этот скрипт? очень жду! exciting.gif
Go to the top of the page
+Quote Post
Артём
сообщение 25.7.2009, 8:40
Сообщение #7


Наруто на аваторке
***********

Группа: Пользователи
Сообщений: 2 606
Регистрация: 11.10.2008
Из: Харькова
Пользователь №: 771
Спасибо сказали: 774 раза




В экзекуторе смог найти код,но не смог додуматся как ожевить его в отделном скрипте....
Ожевите кто сможет плиз big_smile.gif Прикрепленный файл  Zhaloby.rar ( 4.48 килобайт ) Кол-во скачиваний: 12
Go to the top of the page
+Quote Post
Akaick
сообщение 20.8.2009, 14:43
Сообщение #8


Участник
**

Группа: Пользователи
Сообщений: 35
Регистрация: 7.7.2009
Из: Тула
Пользователь №: 3 818
Спасибо сказали: 3 раза




Ну когда замутите эдакий скрипт?
Go to the top of the page
+Quote Post
Артём
сообщение 20.8.2009, 17:07
Сообщение #9


Наруто на аваторке
***********

Группа: Пользователи
Сообщений: 2 606
Регистрация: 11.10.2008
Из: Харькова
Пользователь №: 771
Спасибо сказали: 774 раза




VeNick bad_smile.gif когда ты будешь нам помогать тогда и замутим sexy_girl.gif
Go to the top of the page
+Quote Post
Drakula
сообщение 5.9.2009, 15:03
Сообщение #10


PtokaX DC Hub 0.4.1.2
*****

Группа: Пользователи
Сообщений: 203
Регистрация: 20.1.2009
Из: Republic of Belarus, Minsk, Uruchie, Avalon.
Пользователь №: 1 890
Спасибо сказали: 4 раза




В общем фиг кто нам поможет я так понял=(
Go to the top of the page
+Quote Post
truth
сообщение 16.9.2009, 14:49
Сообщение #11


Активный участник
***

Группа: Пользователи
Сообщений: 76
Регистрация: 6.12.2008
Из: Украина
Пользователь №: 1 340
Спасибо сказали: 1 раз




Ищу нечто подобное, был бы безумно благодарен, если кто-нибудь написал/стащил/оптимизировал бы такой скрипт big_smile.gif
Go to the top of the page
+Quote Post
district
сообщение 17.9.2009, 12:15
Сообщение #12


Постоялец
******

Группа: Пользователи
Сообщений: 454
Регистрация: 17.10.2008
Из: Новосибирск
Пользователь №: 825
Спасибо сказали: 90 раз




Выскажу пару мыслей по сабжу.
В настоящее время занимаюсь решением этой задачки, из любви к искусству, т.к на нашем хабе бот указанной направленности не нужен.
Взяты социалистические обязательства : к празднику Нового Года сдать в эксплуатацию комплексный бот, где сабж фигурировал бы как опциональный подключаемый модуль.
В чем отличие устного предупреждения от кика или темпбана? В том, что устное предупреждение - это не есть встроенная команда Птоки, и учет/обработка ее возможны только средствами самого скрипта.
В чем тонкость учета таких предупреждений? В том, что должна быть как минимум заложенная возможность их учета,просмотра, статистики в общем ряду с обычными киками/темпбанами. Иначе получится нелогично : учет по устным предупреждениям есть, а учет по более серьезным проступкам, за которые были назначены кики или баны - если и есть, то в каком-то другом месте (скрипте). В отлаживаемом боте условно и те, и другие я называю баскетбольным термином "falls".
Другая тонкость - проблема идентификации. В идеале каждый юзер должен идентифицироваться со стопроцентной точностью, вне зависимости от его текущего ника или IP, но достижение такого идеала пока под большим вопросом, поэтому пока что - сделаны два отдельных параллельных учета, для ников и IP, а в качестве дополнительного идентификатора есть привязка ника к имени провайдера, например,
<Хулиган_Вася>-аль-Корбина(Москва)
В чем преимущество интегрированного решения, как альтернативы наличию кучи разношерстных банных, разбанных, предупредительных и уведомительных ботов? Преимущество в централизации, унификации многих прикладных функций, концентрации инфы по всем нарушениям (кикам, темпбанам, пермбанам, и вот этим самым "устным предупреждениям") в одном месте, а значит, более точной и внятной картине для ОПа, который с ними работает, в плане того, "кто есть ху" на хабе.

Также, должна быть, и в принципе уже реализована, возможность создания "правил" для каждого конкретного нарушения - будь то нарушение, за которое следует кик/темпбан от ОПа или бота, либо нарушение, за которое следует "устное предупреждение/выговор", выписанный лично ОПом. Таким образом, получаем два направления работы : учет "абсолютного" количества "фолов",и отдельные учеты для каждого созданного и установленного "правила". Допустим, "абсолютный порог терения" до автозабана - 5 любых нарушений, и несколько правил с различными причинно-связанными порогами - например, правило номер 1 имеет "кор причины" ( Reason Core ) "предупреждение за мат в чате" и порог, равный 3, и чтобы попасть под уже серьезные карательные меры, нужно набрать именно 3 "фола" с указанной формулировкой, и т.д. Правила отрабатываются, понятное дело, автоматически, с внесением соответствующей записи в лог и отсылкой соответствующих уведомлений как ОПам, так и преступнику.

Есть и модуль банов/киков/устных предупреждений со стандартными формулировками, есть и средства автоматического создания правил с умолчательными параметрами, как на основе имеющихся шаблонных наказаний/предупреждений, так и на основе анализа формулировки причины проходящего через ЧатАрривал кика/бана/предупреждения.

Есть возможность "обнуления" оперативного счета нарушений для ника или IP, полный лог нарушений при этом сохраняется в неизменном виде, и при желании можно даже "припомнить старые грехи" нику или IP - т.е. извлечь все причинно-связанные количества нарушений и абсолютное количество нарушений в оперативную таблицу наблюдения ("актуальный табличный лог") и, таким образом, поставить юзера-рецидивиста опять под дамоклов меч правосудия и угрозу уже серьезного забана.

Есть и "неприкасаемый список" ников, IP, профилей, в отношении которых все наказания блокируются.

А вот насчет меню просмотра собственных проступков для юзеров-хулиганов - мысль интересная и фича наверное нужная, попробую и ее реализовать, в качестве опции.
Вот такие соображения. Если есть какие-то еще предложения, пожелания - давайте обсуждать.
Go to the top of the page
+Quote Post
Артём
сообщение 17.9.2009, 12:25
Сообщение #13


Наруто на аваторке
***********

Группа: Пользователи
Сообщений: 2 606
Регистрация: 11.10.2008
Из: Харькова
Пользователь №: 771
Спасибо сказали: 774 раза




Цитата(district @ 17.9.2009, 12:15) *
Выскажу пару мыслей по сабжу.

amazing.gif это пара? shocked.gif
А как именно работает "устных предупреждений " ?
Go to the top of the page
+Quote Post
random name
сообщение 24.1.2010, 22:07
Сообщение #14


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 226
Регистрация: 11.11.2009
Пользователь №: 4 990
Спасибо сказали: 18 раз




1
Go to the top of the page
+Quote Post
Nickolya
сообщение 24.1.2010, 22:30
Сообщение #15


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 727
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 776 раз




Хорошо, когда будем делать баны окончательно под русхаб попробуем довести до таких функций. Жалко district не пожелал остаться на форуме, он обещал скрипт big_smile.gif Спросите, может сделал уже.
P.S.: а мы все его тут с нетерпением ждем...
Go to the top of the page
+Quote Post

Ответить в данную темуНачать новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Скрипт предупреждения ботом хаба
3 Milena 7 236 7.7.2010, 11:53 Посл. сообщение: Ksan
No New Posts Предупреждения
API2
2 Алекс 6 008 7.1.2009, 11:25 Посл. сообщение: Setuper

 



RSS Сейчас: 23.11.2024, 11:28