Автор: Cjay 6.4.2009, 16:02
в общем пользуюсь этим скриптом регистрации, менять на другой что-то не охото, привык уже да и сделан под хаб он уже...но вот есть один недочет у него я так понимаю находится он именно тут:
Код
ChatArrival = function(user,data)
local _,_,cmd = data:find("%b<> %p(%w+)")
if cmd then
cmd = cmd:lower()
if cmd and RegCmds[cmd] then
return Core.SendPmToUser(user,Bot,RegCmds[cmd](user,data,cmd)), true
end
в общем проблема такова: незарегистрированный юзер при запрете ему привата и чата, может в них писать если будет в начале сообщения писать например +r или :S или !хз и т.д.
как я понимаю проблема с захватом регулярных выражений, но что-то у меня с этими самыми выражениями проблемно. Помогите кому не трудно поправить скрипт, чтоб он и сообщения начинающиеся со знаков пунктуации запрещал...
Автор: Setuper 6.4.2009, 16:35
Код
ChatArrival = function(user,data)
local _,_,cmd = data:find("%b<> %p(%w+)")
if cmd then
cmd = cmd:lower()
if cmd and RegCmds[cmd] then
return Core.SendPmToUser(user,Bot,RegCmds[cmd](user,data,cmd)), true
end
if RegChat and user.iProfile == -1 then
return true
end
else
Автор: Cjay 6.4.2009, 16:47
о всё сам затупил немного) спасибо работает всё
Автор: Cjay 19.4.2009, 11:17
ребят, возникла еще одна проблемка, у меня на хабе стоит скрипт который показывает из какой сети юзер в описании, поэтому решил запретить у себя регать ники типа [inet]NICK или (сеть)Ник и т.д. зачем искажать ники префиксами...
но вот один запрет скобок и тому подобного не помогает, убирают скобки, делают ник типа inetNick и регаются, поэтому решил вписать в запрещенные символы наиболее встречающиеся аббревиатуры еще, у нас это: ws, oks, inet, mks и т.д.
добавлял и %[wW%]%[sS%] и WS в общем по разному, результат один...заходит человек под ником бесёнок и не может зарегаться, я так понимаю потому что у него в нике есть буквы: о, к, с
как сделать так чтобы скрипт реагировал не на отдельные символы, а на слова?
так вопрос снят, я зачем то писал проценты надо было [wW][sS]
но теперь возникла другая проблема когда
Код
nick:find("[%c\$\|\<\>\:\?\*\"\/\\\+\!\%[\%]\{\}\=\;\(\)\%\^\&\`\~\№\'\[оО][кК][сС]]") then
всё работает захожу я с ником NickОкС и мне не дает регаться, а когда
Код
nick:find("[%c\$\|\<\>\:\?\*\"\/\\\+\!\%[\%]\{\}\=\;\(\)\%\^\&\`\~\№\'\[оО][кК][сС]\[мМ][кК][сС]\[oO][kK][cC]\[mM][kK][sS]\[mM][kK][cC]\[wW][sS]\[dD][oO][mM]\[дД][оО][мМ]\[oO][mM][kK][cC]\[oO][kK][sS]\[iI][nN][eE][tT]\[iI][nN][tT][eE][rR][nN][eE][tT]\[sS][iI][bB]\[wW][eE][bB][sS][tT][rR][eE][aA][mM]\[mM][nN][xX]]") then
не хочет работать, регает такой ник всёравно...в чем причина?
часть скрипта:
Код
RegCmds = {
regme = function(user,data,cmd)
if user then
local nick = user.sNick
if user.iProfile ~= -1 then
return "Не глупите, "..nick..", вы уже зарегистрированы!"
elseif Core.GetUserAllData(user) then
local _,_,pwd = data:find("%b<> %p%w+ (%S+)|$")
if pwd then
if nick:find("[%c\$\|\<\>\:\?\*\"\/\\\+\!\%[\%]\{\}\=\;\(\)\%\^\&\`\~\№\'\[оО][кК][сС]\[мМ][кК][сС]\[oO][kK][cC]\[mM][kK][sS]\[mM][kK][cC]\[wW][sS]]") then
return "Ваш ник содержит недопустимые символы. На хабе запрещены ники, содержащие знаки пунктуации, в том числе (,),[,] и аббревиатуры: окс, мкс, okc, mks, mkc, ws, dom.ru, omkc, oks, inet, internet, sib, webstream, так как название сети автоматически отображается в описании юзера. "..
"Пожалуйста, переименуйтесь. Чтобы переименовать ник только на этом хабе добавьте хаб в избранные и затем, нажмите ctrl+f и впишите в свойства хаба свой ник, после чего перезайдите на хаб. Или же обратитесь к операторам хаба за помощью"
end
if pwd:find("[%c\$\|\<\>\:\?\*\"\/\\\+\!\%[\%]\{\}\=\;\(\)\%\^\&\`\~\№\,]") then
return "Ваш пароль содержит недопустимые символы. Разрешены русские и английские буквы, и цифры. Запрещены пунктуационные знаки. "..
"Пожалуйста выберите новый пароль."
end
прошу помощи)