Версия для печати темы
MyDC.ru _ Помощь по скриптам для PtokaX _ Помогите с одним вопросиком по скрипту (Отправка каждой строки от бота)
Автор: DrakonSP 15.1.2010, 20:04
Вообщем имееться код
Код
elseif cmd == tCmd.SearchNick then
local nick = string.match(data, "%b<>%s*%p%S+%s(%S+)$")
if nick then
local msg = ""
local results = 0
for i in pairs(tUserNicks) do
for i2 in pairs(tUserNicks[i]) do
if string.find(i2:lower(),nick:lower()) then
msg = msg..BuildStats(i,true)
results = results+1
break
end
end
end
if results == 0 then
Core.SendToUser(user,"<"..sBot.."> Информация по нику "..nick.." не найдена в базе.")
else
msg = "Результат поиска по нику '"..nick.."'.".." Всего найдено записей: "..results..
msg
Core.SendPmToNick(user.sNick,sBot,msg)
end
else
Core.SendToUser(user,"<"..sBot.."> Ошибка: Нужно ввести ник или часть ника. Введите "..sPrefix..tCmd.SearchNick.." <Ник>")
end
return true
Этот код являеться частью функции ChatArrival(user,data)
А эта фунция являеться частью скрипта StatPX 1.04
Это так для доп. информации.
Вообщем теперь сам вопрос...
Как сделать так что бы определёная строчка сообщения выводимой скриптом отправлялась от бота?
В этом коде есть участок, который отвечает за отправку сообщения (в данном случае о поиске пользователя) в приват.
Код
if results == 0 then
Core.SendToUser(user,"<"..sBot.."> Информация по нику "..nick.." не найдена в базе.")
else
msg = "Результат поиска по нику '"..nick.."'.".." Всего найдено записей: "..results..
msg
Core.SendPmToNick(user.sNick,sBot,msg)
end
при этом бот выводит сообщение ввиде:
Цитата
[время] <бот_хаба> Результат поиска по нику "Ник_юзера". Всего найдено записей: "число_записей"
Информация о нике
И это выглядит так
Цитата
[20:51:03] <Hub-Bot> Результат поиска по нику 'toopizza'. Всего найдено записей: 1
===================================================
Статистика пользователя 'toopizza'
===================================================
- Ник: toopizza
- IP: 89.222.214.82
- Ранг: Рядовой
Общее время проведения на хабе 29 мин.
Среднее время проведения на хабе 7 мин. в сутки
Первый визит на хаб 12 янв в 01:10
Пришёл на хаб 15 янв в 16:49
Покинул хаб 15 янв в 16:50
С данного IP-адреса заходили под никами:
- toopizza - 5 раз(а)
- DrakonSP - 2 раз(а)
===================================================
я же хочу что бы было как то так:
Цитата
[время] <бот_хаба> Результат поиска по нику "Ник_юзера".
[время] <бот_хаба> Всего найдено записей "число_записей"
[время] <бот_хаба> Информация о нике.
Для этого я попытался переделать код следующим образом:
Код
if results == 0 then
Core.SendToUser(user,"<"..sBot.."> Информация по нику "..nick.." не найдена в базе.")
else
msg = "Результат поиска по нику '"..nick.."'."
Core.SendPmToNick(user.sNick,sBot,msg)
msg = "Всего найдено записей: "..results..
msg
Core.SendPmToNick(user.sNick,sBot,msg)
end
И получил следующий результат:
Цитата
[время] <бот_хаба> Результат поиска по нику "ник_юзера".
[время] <бот_хаба> Всего найдено записей: "число_записей"Результат поиска по нику "ник_юзера".
Почему то вообще перестала отображаться Информация о нике
И 2 раза выводится сообщение "Результат поиска по нику "ник_юзера"."
Вообщем я прошу помогите как сделать так что бы всё норм выводилось.
Спасибо.
Автор: Wariner 15.1.2010, 20:21
я не понял а в чём вопрос то?
Автор: Хабыч 15.1.2010, 20:34
в начало скрипта sBot = "имя бота"
к сообщниям так же приделывай <"..sBot..">
Автор: DrakonSP 15.1.2010, 20:46
Цитата(Хабыч @ 15.1.2010, 21:34)
в начало скрипта sBot = "имя бота"
к сообщниям так же приделывай <"..sBot..">
Так от тупо пишет имя бота вначале строки
А мне надо что бы бот отправлял это сообщение
Автор: Хабыч 15.1.2010, 20:49
говори конкретней что тебе нужно?
можеш и так поставить если я так понял sBot = SetMan.GetString(21)
таким обрабом имя бота будет братся из настроек птоки
Автор: DrakonSP 15.1.2010, 20:53
Цитата(Хабыч @ 15.1.2010, 21:49)
говори конкретней что тебе нужно?
можеш и так поставить если я так понял sBot = SetMan.GetString(21)
Что бы отображалось не вот так
Цитата
[20:51:03] <Hub-Bot> Результат поиска по нику 'toopizza'. Всего найдено записей: 1
===================================================
Статистика пользователя 'toopizza'
===================================================
- Ник: toopizza
- IP: 89.222.214.82
- Ранг: Рядовой
Общее время проведения на хабе 29 мин.
Среднее время проведения на хабе 7 мин. в сутки
Первый визит на хаб 12 янв в 01:10
Пришёл на хаб 15 янв в 16:49
Покинул хаб 15 янв в 16:50
С данного IP-адреса заходили под никами:
- toopizza - 5 раз(а)
- DrakonSP - 2 раз(а)
===================================================
А вот так
Цитата
[20:51:03] <Hub-Bot> Результат поиска по нику 'toopizza'.
[20:51:03] <Hub-Bot> Всего найдено записей: 1
[20:51:03] <Hub-Bot>
===================================================
Статистика пользователя 'toopizza'
===================================================
- Ник: toopizza
- IP: 89.222.214.82
- Ранг: Рядовой
Общее время проведения на хабе 29 мин.
Среднее время проведения на хабе 7 мин. в сутки
Первый визит на хаб 12 янв в 01:10
Пришёл на хаб 15 янв в 16:49
Покинул хаб 15 янв в 16:50
С данного IP-адреса заходили под никами:
- toopizza - 5 раз(а)
- DrakonSP - 2 раз(а)
===================================================
Автор: Хабыч 15.1.2010, 20:56
ну я не телепат, даже не знаю что за скрипт ты делаешь. я тебе показал как, ищи где нужно в скрипте добавить
Автор: DrakonSP 15.1.2010, 20:57
Цитата(Хабыч @ 15.1.2010, 21:56)
ну я не телепат, даже не знаю что за скрипт ты делаешь. я тебе показал как, ищи где нужно в скрипте добавить
Т.е. sBot = SetMan.GetString(21) обеспечит мне то что я хочу если я провильно его расположу в скрипте?
Блин я же в первом посте всё написал!
Автор: Хабыч 15.1.2010, 20:59
да. не надо капсить!!! блин ищи где инфа вся и добавляй <"..sBot.."> только зачем всё это не пойму...
Код
msg = "<"..sBot.."> Результат поиска по нику '"..nick.."'."
Core.SendPmToNick(user.sNick,sBot,msg)
msg = "<"..sBot.."> Всего найдено записей: "..results..
думаю так должно работать
Автор: DrakonSP 15.1.2010, 21:20
Цитата(Хабыч @ 15.1.2010, 21:59)
да. не надо капсить!!! блин ищи где инфа вся и добавляй <"..sBot.."> только зачем всё это не пойму...
Код
msg = "<"..sBot.."> Результат поиска по нику '"..nick.."'."
Core.SendPmToNick(user.sNick,sBot,msg)
msg = "<"..sBot.."> Всего найдено записей: "..results..
думаю так должно работать
неа =))
Фишка в том что <"..sBot.."> просто пишет имя бота перед сообщением
А мне надо что бы бот отпралял это сообщение
Делаю вот так
Код
else
msg = "<Результат поиска по нику '"..nick.."'."
Core.SendPmToNick(user.sNick,sBot,msg)
msg = "<Всего найдено записей: "..results..
msg
Core.SendPmToNick(user.sNick,sBot,msg)
end
и получаю в DC++ фиг с маслом =))
Цитата
[21:14:52] <Hub-Bot> <Hub-Bot> Результат поиска по нику 'toopizza'.
[21:14:52] <Hub-Bot> <Hub-Bot> Всего найдено записей: 1Результат поиска по нику 'toopizza'.
т.е. впринципе бот отправил сообщение "Всего найдено записей: 1"
но почему то к самой концовке этого сообщения добавил первой, а инфу о юзере скушал на обед
Автор: Хабыч 15.1.2010, 21:23
Не надо цитироватиь так посты! дай выложи всю свою работу попробую глянуть
Автор: DrakonSP 15.1.2010, 21:38
Да я выложу если не разберусь сейчас
А то просто идея пришла одна...
Сделал...
Код
else
Core.SendPmToNick(user.sNick,sBot,"Результат поиска по нику '"..nick.."'")
Core.SendPmToNick(user.sNick,sBot,"Всего найдено записей: "..results.."")
Core.SendPmToNick(user.sNick,sBot,msg)
end
Вместо прежнего...
Код
else
msg = "Результат поиска по нику '"..nick.."'.".." Всего найдено записей: "..results..
msg
Core.SendPmToNick(user.sNick,sBot,msg)
end
Не думал что будет настолько простой код =))
Но опять же разочарован в том что это будет не очень практично например для большого текста
Если кто то знает способ по практичней чем этот отпишитесь =))
Или киньте сюда чисто функцию которая бы заменяла на "msg" текст "Результат поиска по нику '"..nick.."'"
Как это сделанно выше.
А сам текст был написан внутри этой функции или выведен в отдельный текстовый файл, что очень удобно.
Автор: Wariner 15.1.2010, 22:29
Извиняюсь бред какой то написан... выражайтесь точно что вам надо. разбиение на строчки уже сделаны так что ещё?!
Автор: DrakonSP 15.1.2010, 22:53
Цитата(Wariner @ 15.1.2010, 22:29)
Извиняюсь бред какой то написан... выражайтесь точно что вам надо. разбиение на строчки уже сделаны так что ещё?!
Вот код вывода поиска по нику в скрипте StatPX 1.04
Код
elseif cmd == tCmd.SearchNick then
local nick = string.match(data, "%b<>%s*%p%S+%s(%S+)$")
if nick then
local msg = ""
local results = 0
for i in pairs(tUserNicks) do
for i2 in pairs(tUserNicks[i]) do
if string.find(i2:lower(),nick:lower()) then
msg = msg..BuildStats(i,true)
results = results+1
break
end
end
end
if results == 0 then
Core.SendToUser(user,"<"..sBot.."> Информация по нику "..nick.." не найдена в базе.")
else
Core.SendPmToNick(user.sNick,sBot,"Результат поиска по нику '"..nick.."'")
Core.SendPmToNick(user.sNick,sBot,"Всего найдено записей: "..results.."")
Core.SendPmToNick(user.sNick,sBot,msg)
end
строчка
Код
Core.SendPmToNick(user.sNick,sBot,msg)
выводит в PM информацию о юзере
В свою очередь информация находиться в функции BuildStats(IP,Ext)
Код
function BuildStats(IP,Ext)
if tUserStat[IP] then
local iAverage = os.difftime(os.time(os.date("*t")), tUserStat[IP].FirstVisit)/(60*60*24)
if iAverage < 1 then iAverage = 1 end
local sMsg =
"\n"..string.rep("=", 51).."\n"..
" Статистика пользователя '"..tUserStat[IP].Name.."'"..
"\n"..string.rep("=", 51).."\n"..
" - Ник: "..tUserStat[IP].Name.."\n"..
" - IP: "..IP.."\n"..
" - Ранг: "..GetRank(IP).."\n\n"..
" Общее время проведения на хабе "..
MinutesToTime(tUserStat[IP].TotalTime, true).."\n"..
" Среднее время проведения на хабе "..
MinutesToTime((tUserStat[IP].TotalTime/iAverage), true).." в сутки".."\n"
if Ext then
sMsg = sMsg..
"\n"..
" Первый визит на хаб "..GetDate(tUserStat[IP].FirstVisit).."\n"..
" Пришёл на хаб "..GetDate(tUserStat[IP].Enter).."\n"
if tUserStat[IP].Online < 1 then
sMsg = sMsg..
" Покинул хаб "..GetDate(tUserStat[IP].Leave).."\n"
end
sMsg = sMsg..
"\n"..
" С данного IP-адреса заходили под никами:".."\n"
if tUserNicks[IP] then
for nick in pairs(tUserNicks[IP]) do
sMsg = sMsg..
" - "..nick.." - "..tUserNicks[IP][nick].." раз(а)".."\n"
end
end
end
sMsg = sMsg..
""..string.rep("=", 51).."\n"
return sMsg
else
return nil
end
end
Вопрос в том что бы вывести всю информацию (Текст, возможно даже большого обьёма) в текстовый файл.
Это даст практичность в редактировании данных (Текста)
Т.к. текст будет находиться не в самом скрипте, а вотдельном файле.
Если переделать к примеру весь скрипт, то есть такой плюс что скрипт будет меньше кушать памяти и будет более быстро работать.
Как то так.
Автор: Wariner 15.1.2010, 23:08
От этого скрипт меньше кушать не станет, если не начнёт ещё больше...
Автор: Хабыч 15.1.2010, 23:11
извеняюсь если что но я старался обьяснить так как я понял изначально.
сорри за оффтоп
Автор: DrakonSP 15.1.2010, 23:13
Цитата(Wariner @ 15.1.2010, 23:08)
От этого скрипт меньше кушать не станет, если не начнёт ещё больше...
Может Вы и правы.
Но врятле будет кушать больше.
И в конце концов это удобно.
Автор: Nickolya 16.1.2010, 16:26
Вместо
Код
msg = "Результат поиска по нику '"..nick.."'.".." Всего найдено записей: "..results..
msg
Core.SendPmToNick(user.sNick,sBot,msg)
сделать
Код
Core.SendPmToNick(user.sNick,sBot,"Результат поиска по нику '"..nick.."'.")
Core.SendPmToNick(user.sNick,sBot,"Всего найдено записей: "..results)
Core.SendPmToNick(user.sNick,sBot,msg)
в чем проблема у вас и зачем заводить тему не в ту степь я не понимаю. Если не разбираетесь в вопросе лучше не помогать, а то еще больше запутываете человека, не переоценивайте себя.
Автор: DrakonSP 16.1.2010, 21:02
Цитата(Nickolya @ 16.1.2010, 16:26)
Вместо
Код
msg = "Результат поиска по нику '"..nick.."'.".." Всего найдено записей: "..results..
msg
Core.SendPmToNick(user.sNick,sBot,msg)
сделать
Код
Core.SendPmToNick(user.sNick,sBot,"Результат поиска по нику '"..nick.."'.")
Core.SendPmToNick(user.sNick,sBot,"Всего найдено записей: "..results)
Core.SendPmToNick(user.sNick,sBot,msg)
в чем проблема у вас и зачем заводить тему не в ту степь я не понимаю. Если не разбираетесь в вопросе лучше не помогать, а то еще больше запутываете человека, не переоценивайте себя.
Спс я уже разобрался несколькими постами выше =))