Версия для печати темы
MyDC.ru _ Технические вопросы по PtokaX _ Список пользователей
Автор: fmit 26.1.2012, 10:54
Добрый день.Искал,но увы.Как сделать чтобы избранные пользователи всегда были вверху списка?
Автор: Ksan 26.1.2012, 11:30
Это делает клиент, а не хаб.
И то, если в настройках клиента имеется галочка "Избранных юзеров показывать первыми".
(первыми - в смысле после админов)
Не во всех клиентах есть. Поизучай настройки своего.
Автор: fmit 26.1.2012, 12:18
ну я так понял что к админам это тоже относится ) ясно.
а еще такой вот вопрос. как сделать обязательный префикс в никах пользователей,чтобы ни давал зарегиться или зайти на хаб пока не будет приставка к имени определенная??? очень надо )
Автор: Артём 26.1.2012, 12:39
fmit, http://mydc.ru/topic1947.html?
Автор: Ksan 26.1.2012, 12:41
Ну и какой префикс там у тебя требуется?
Автор: fmit 26.1.2012, 12:51
Цитата(Артём @ 26.1.2012, 13:39)
fmit, http://mydc.ru/topic1947.html?
Да это я видел,настроил для дипазонов,но не то.
Хочу разделить пользователей по типу подключения [ADSL] [FTTB]. На билайне такое реализовано, там указывается районперед началом ника.
Нужно чтобы просто была обязательная приставка перед регистрацией, и ему не давали зарегиться пока он не укажет.
Автор: Ksan 26.1.2012, 13:03
fmit, попробуй этот скриптик:
Код
КОД УДАЛЁН ввиду нерабочести.
Рабочий код ниже в моих сообщениях.
Только тут уже самим юзерам решать, какой префикс себе брать.
А если хочешь автоматом, сюда надо добавить код определения диапазонов ваших ADSL и FTTN.
PS: Код не проверял, проверь сам и напиши тут результат, если надо, исправим.
UPD: Проверил и чуток исправил,
должен работать.
Автор: fmit 26.1.2012, 13:18
извиняюсь что немного не догоняю,код который выше мне надо заюзать в скрипте регистрации?
Автор: Ksan 26.1.2012, 13:24
fmit, сохраняешь как отдельный скрипт, даёшь ему название и запускаешь.
Он сработает раньше регистрации и просто не допустит на хаб никого, у кого нет одного из предложенных префиксов.
Тебе же это требовалось?
Автор: fmit 26.1.2012, 13:31
Цитата(Ksan @ 26.1.2012, 14:24)
fmit, сохраняешь как отдельный скрипт, даёшь ему название и запускаешь.
Он сработает раньше регистрации и просто не допустит на хаб никого, у кого нет одного из предложенных префиксов.
Тебе же это требовалось?
Да...тогда не срабатывает.Я так и сделал в начале,но ничего не случилось поэтому спросил)
В логах нет ошибки скрипта,перезапускается без ошибок. GUI нет , работаю под Ubuntu.
Автор: Ksan 26.1.2012, 14:00
fmit, исправил, попробуй ещё раз.
Автор: fmit 26.1.2012, 14:20
Ksan, Увы нет ... реакции никакой при входе на хаб ... в логах ничего.
Сработал вот этот кусок кода,вырванный из Chekprefix ... думаю может его как то допилить.....
Код
function ValidateNickArrival(tUser)
if not string.find(tUser.sNick,"^(%[MK%-%d+%])") then
Core.SendToUser(tUser,"Ваш ник должен содержать префикс микрорайона [MK-цифра]Ваш ник, например [MK-1]Bomberman (префикс стоит в квадратных скобках и буквы MK на английском языке)")
Core.Disconnect(tUser)
end
end
А можнет прокатить что то наподобие :
Код
if not string.find(tUser.sNick,"^([adsl])") || string.find(tUser.sNick,"^([fttb])") then
В lua не силен но общую структуру понимаю. в синтаксисе не силен
Автор: Ksan 26.1.2012, 14:43
fmit, ну этот вариант (без таблицы, проверка с подстановкой каждого префикса в одной строке) у меня сразу был готов, но я хотел с таблицей, на будущее.
Тогда вот:
Код
local sBotMsg = "<"..SetMan.GetString(21).."> *** Просьба добавить к нику префикс и перезайти. Если у вас ADSL - припишите к нику спереди префикс [ADSL], если FTTB - то [FTTB]. Пример:\n [ADSL]Александр, [FTTB]4uMa и т.д." -- текст можно переделать на свой
function ValidateNickArrival(tUser, sData)
if not tUser.sNick:find"^%[ADSL%]" and not tUser.sNick:find"^%[FTTB%]" then
Core.SendToUser(tUser, sBotMsg)
Core.Disconnect(tUser)
end
end
Автор: fmit 26.1.2012, 14:56
Ksan, Да все сработало )))
Есть только еще одна вещь,я думаю это не сильно трудно ... можно добавить исключения чтобы админу или опам не нужно было добавлять префикс ... нарыл старые записи что-то в этом роде :
Код
ExNicks = {"ник1","ник2",}
function ValidateNickArrival(tUser,data)
for i = 1, #ExNicks do
if (not tUser.sNick == ExNicks[i]) then
Core.SendToUser(tUser, "Хаб на реконструкции")
Core.Disconnect(tUser)
end
end
end
UserConnected, RegConnected = ValidateNickArrival, ValidateNickArrival
Автор: Ksan 26.1.2012, 15:01
Да это нетрудно. Сейчас добавлю.
UPD: Вот с исключениями:
Код
local sBotMsg = "<"..SetMan.GetString(21).."> *** Просьба добавить к нику префикс и перезайти. Если у вас ADSL - припишите к нику спереди префикс [ADSL], если FTTN - то [FTTN]. Пример:\n [ADSL]Александр, [FTTN]4uMa и т.д." -- текст можно переделать на свой
local tExNicks = {
"Админ1",
"Админ2",
}
function ValidateNickArrival(tUser, sData)
local b = false
for i in pairs(tExNicks) do
if tUser.sNick == tExNicks[i] then
b = true
break
end
end
if not b then
if not tUser.sNick:find"^%[ADSL%]" and not tUser.sNick:find"^%[FTTB%]" then
Core.SendToUser(tUser, sBotMsg)
Core.Disconnect(tUser)
end
end
end
Кстати, вот этот код:
Код
local b = false
for i in pairs(tExNicks) do
if tUser.sNick == tExNicks[i] then
b = true
break
end
end
if not b then
практически универсальный, годится для проверки наличия/отсутствия чего угодно, находящегося в таблице.
Автор: fmit 26.1.2012, 15:37
Ksan, Да все круто спасибо!
Ksan, если я хочу чтобы между [fttb] и Nick ничего не было , просто убираю %
почитал про регулярные выражения .... % это просто захват определенного значения...
Автор: Ksan 26.1.2012, 15:49
fmit, в представленном коде он проверяет ники, чтоб они были типа тех, которые бот и предлагает делать.
Там между символом ] и ником юзера и так ничего не ожидается. То есть, всё, что дальше этого символа ] считается принадлежащем нику. Впрочем, твой префикс тоже считается частью ника, скрипт только проверяет, есть такой кусок в нике или нет.
Или я тебя не понял?
А % это да, в данном случае позволяет считать символы [ и ] простыми символами, а не управляющими.
Автор: fmit 26.1.2012, 15:54
думаю правильно...надо тогда значит накопать запрет знаков в нике , чтобы типа не было пробелов,+ и т.д )
Автор: Ksan 26.1.2012, 17:00
fmit, а для этого (запрет отдельных символов) тоже в этом же коде достаточно добавить ещё одну таблицу (с запрещенными знаками) и проверять их наличие отдельным циклом.
Автор: fmit 27.1.2012, 9:36
Может кому понадобиться ) Вроде работает.
Код
local sBotMsg = "<"..SetMan.GetString(21).."> *** Где префикс?"
local sBotMsg2 = "<"..SetMan.GetString(21).."> *** Запрещенные символы!"
local tExNicks = {
"admin1",
"admin2",
}
local tExChar = {
"=",
"+",
"-",
"/",
"@",
}
function ValidateNickArrival(tUser, sData)
local b = false
for i in pairs(tExNicks) do
if tUser.sNick == tExNicks[i] then
b = true
break
end
end
for _,v in pairs(tExChar) do
if tUser.sNick:find(v,1,true) then
Core.SendToUser(tUser, sBotMsg2)
Core.Disconnect(tUser)
end
end
if not b then
if not tUser.sNick:find"^%[ADSL%]" and not tUser.sNick:find"^%[FTTB%]" then
Core.SendToUser(tUser, sBotMsg)
Core.Disconnect(tUser)
end
end
end
Автор: Ksan 27.1.2012, 12:54
fmit, писал бы предупреждения как-то понятнее, что ли.. А то представь, заходит кто-то первый раз и ему в лоб с ходу
Цитата
*** Где префикс?
или
Цитата
*** Запрещенные символы!
Ты думаешь, он поймёт, что к чему? Может, он вообще не знает, что такое префикс и что это за запрещённые символы...кем запрещённые, почему запрещённые...и разве бывают запрещённые..
Пиши понятным для любого текстом, без недоразумений и доп. вопросов.
Автор: fmit 27.1.2012, 14:21
Ksan, я просто так написал...чтобы сразу понятно было будущему админу ) а так у меня все информативно ...