myDC.ru

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

 

> Chase_cmd, API2 | Показывает команды используемые юзерами

Теги
Нет тегов для показа
Otshelnik-Fm
сообщение 23.3.2009, 23:39
Сообщение #1


Я коварный Санта Клаус
******

Группа: Пользователи
Сообщений: 523
Регистрация: 4.11.2008
Из: Саратов
Пользователь №: 985
Спасибо сказали: 54 раза




Chase_Cmd_v.1.0.

Перенес в готовые скрипты т.к. никто не захотел больше.
На авторство никак не претендую.

Скрипт перехватывает команды которые используют юзеры на хабе. Информация приходит к тому чей ник прописан в скрипте.

Перехватывать команды которые посылают юзеры удобно вот по какой причине:
1. Администрация видит если юзер пытается отправить запрещенные ему команды (или неизвестные)
2. Ну и конечно же чтобы в какой-то мере представлять какие скрипты нравятся пользователям.

Api 2
Прикрепленные файлы
Прикрепленный файл  Chase_Cmd_v.1.0.lua ( 866 байт ) Кол-во скачиваний: 250
 


Спасибо сказали:
Go to the top of the page
+Quote Post
2 страниц V   1 2 >  
Начать новую тему
Ответов
DrakonSP
сообщение 25.3.2009, 11:56
Сообщение #2


Продвинутый участник
****

Группа: Пользователи
Сообщений: 107
Регистрация: 23.11.2008
Из: Сергиев Посад
Пользователь №: 1 178
Спасибо сказали: 9 раз




API какой?
Go to the top of the page
+Quote Post
Setuper
сообщение 25.3.2009, 12:11
Сообщение #3


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Автору просьба оформить тему подобающим образом.
Посмотри правила оформления тем!
Go to the top of the page
+Quote Post
DrakonSP
сообщение 24.1.2010, 17:14
Сообщение #4


Продвинутый участник
****

Группа: Пользователи
Сообщений: 107
Регистрация: 23.11.2008
Из: Сергиев Посад
Пользователь №: 1 178
Спасибо сказали: 9 раз




А за что отвечает вот эта часть функции?
Код
        else
            local hFile = io.open ("log.txt" , "a+")
                if hFile then
                    hFile:write("Послана команда хабу: "..sData.."\r\n")
                    hFile:close()
                end

Чё то ни как не врублюсь...
Go to the top of the page
+Quote Post
Wariner
сообщение 24.1.2010, 19:26
Сообщение #5


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

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




этот кусок отвечает за запись найденной команды в лог.
Go to the top of the page
+Quote Post
DrakonSP
сообщение 24.1.2010, 21:06
Сообщение #6


Продвинутый участник
****

Группа: Пользователи
Сообщений: 107
Регистрация: 23.11.2008
Из: Сергиев Посад
Пользователь №: 1 178
Спасибо сказали: 9 раз




Цитата(Wariner @ 24.1.2010, 19:26) *
этот кусок отвечает за запись найденной команды в лог.

Тогда вопрос такой...
Где этот лог?
Я лично ничего не обнаружил =)
Может надо добавить строчку типа...
hFile = path.."log.txt"
Если я туплю пните меня!

P.S. Файл log.txt в директории scripts создавать пробовал, но он оставался пустым.
Скрипт стоит в самом верху, т.к. иначе он не отлавливает команды скриптов, которые стоят выше него.
Идеи?
Go to the top of the page
+Quote Post
Wariner
сообщение 24.1.2010, 21:17
Сообщение #7


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

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




посмотреть этот файл в папке с экзешником птоки))))

а вообще немного подредактировал))) вот:
Раскрывающийся текст

Код
local sBot = SetMan.GetString(21) -- имя бота
local sAdminNick = "Otshelnik-Fм" -- пишем ник хозяина хаба
local sFile = Core.GetPtokaXPath().."scripts/Hub files/CmdLog.txt"        

function ChatArrival(tUser,sData)
    local sData = sData:sub(1,-2)
    local sCmd = sData:match"%b<>%s+([%!%+%-/%*]%S+)"
    if sCmd and tUser.sNick~=sAdminNick then
        if Core.GetUser(sAdminNick) then
            Core.SendPmToNick(sAdminNick,sBot,"Послана команда хабу: "..sData)
        else
            local hFile = io.open (sFile , "a+")
            if hFile then
                hFile:write("Послана команда хабу: "..sData.."\r\n")
                hFile:close()
            end
        end
    end
end
ToArrival=ChatArrival

Go to the top of the page
+Quote Post
DrakonSP
сообщение 24.1.2010, 21:27
Сообщение #8


Продвинутый участник
****

Группа: Пользователи
Сообщений: 107
Регистрация: 23.11.2008
Из: Сергиев Посад
Пользователь №: 1 178
Спасибо сказали: 9 раз




Не не пишет лог
Хоть убей
И ошибок нет ни каких doubt.gif
P.S. Рядом exe-шником тоже ничего
Go to the top of the page
+Quote Post
Wariner
сообщение 24.1.2010, 21:33
Сообщение #9


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

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




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

PS: папочку прописаную в скрипте создать наверно забыл?
Go to the top of the page
+Quote Post
DrakonSP
сообщение 24.1.2010, 21:51
Сообщение #10


Продвинутый участник
****

Группа: Пользователи
Сообщений: 107
Регистрация: 23.11.2008
Из: Сергиев Посад
Пользователь №: 1 178
Спасибо сказали: 9 раз




Цитата
PS: папочку прописаную в скрипте создать наверно забыл?

Нет не забыл даже файл создал =)
Вообщем действительно, если Админ отсутствует то пишет в лог
А правильно я переправил скрипт что бы он и туда и туда вообщем информировал?
Тыкай =))
Код
local sBot = SetMan.GetString(21)                    -- Ник Бота
local sAdminNick = "DrakonSP"                        -- Ник Админа
local sFile = Core.GetPtokaXPath().."scripts/Chase_Cmd/CmdLog.txt"    -- Путь к файлу лога

function ChatArrival(tUser,sData)
    local sData = sData:sub(1,-2)
    local sCmd = sData:match"%b<>%s+([%!%+%-/%*]%S+)"
    if sCmd and tUser.sNick~=sAdminNick then
        if Core.GetUser(sAdminNick) then
            Core.SendToNick(sAdminNick,"<"..sBot.."> Послана команда хабу: "..sData)
        end
    local hFile = io.open (sFile , "a+")
        if hFile then
            hFile:write("Послана команда хабу: "..sData.."\r\n")
            hFile:close()
        end
    end
end
ToArrival=ChatArrival

И какой код времени? Хочу что бы ещё время в лог закидывало...
Go to the top of the page
+Quote Post
Wariner
сообщение 24.1.2010, 22:19
Сообщение #11


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

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




Код
os.date("%Y-%m-%d %H:%M:%S")


Код
%Y - год
%m - месяц
%d  - день
%H - часы
%M - минуты
%S - секунды


Спасибо сказали:
Go to the top of the page
+Quote Post
DrakonSP
сообщение 24.1.2010, 22:40
Сообщение #12


Продвинутый участник
****

Группа: Пользователи
Сообщений: 107
Регистрация: 23.11.2008
Из: Сергиев Посад
Пользователь №: 1 178
Спасибо сказали: 9 раз




Цитата(Wariner @ 24.1.2010, 22:19) *
Код
os.date("%Y-%m-%d %H:%M:%S")


А куда её собственно? вписывать?
Всё разобрался =))
Спасибо!
Go to the top of the page
+Quote Post
TiGRpp
сообщение 16.2.2010, 11:21
Сообщение #13


Продвинутый участник
****

Группа: Пользователи
Сообщений: 162
Регистрация: 19.8.2009
Из: Москва
Пользователь №: 4 201
Спасибо сказали: 24 раза




Цитата(Wariner @ 24.1.2010, 23:19) *
Код
os.date("%Y-%m-%d %H:%M:%S")

Цитата(DrakonSP @ 24.1.2010, 23:40) *
А куда её собственно? вписывать?

Поделись куда, что-то не получается...

Каким образом добавить меню просмотра лога?
Go to the top of the page
+Quote Post
DrakonSP
сообщение 16.2.2010, 20:02
Сообщение #14


Продвинутый участник
****

Группа: Пользователи
Сообщений: 107
Регистрация: 23.11.2008
Из: Сергиев Посад
Пользователь №: 1 178
Спасибо сказали: 9 раз




Раскрывающийся текст
Код
local sBot = SetMan.GetString(21)                    -- Ник Бота
local sAdminNick = "DrakonSP"                        -- Ник Админа
    
local sFile = Core.GetPtokaXPath().."scripts/Chase_Cmd/CmdLog.txt"    -- Путь к файлу лога

function ChatArrival(tUser,sData)
    local sData = sData:sub(1,-2)
    local sCmd = sData:match"%b<>%s+([%+]%S+)"
    if sCmd and tUser.sNick~=sAdminNick then
        if Core.GetUser(sAdminNick) then
            Core.SendToNick(sAdminNick,"<"..sBot.."> *** Послана команда хабу: "..sData)
        end
    local hFile = io.open (sFile , "a+")
        if hFile then
            hFile:write("["..os.date("%d.%m.%Y в %H:%M").."] "..sData.."\n")
            hFile:close()
        end
    end
end
ToArrival=ChatArrival

Так добавить меню и действие по команде
Раскрывающийся текст
Код
local Prefix = "!"        -- Префикс команды

local tProfile = {        -- Профили, которым доступно меню
    [0] = 1,            -- Master
    [1] = 1,            -- Operator
    [2] = 0,            -- Vip
    [3] = 0,            -- Reg
    [-1] = 0,            -- UnReg
}

function UserConnected(tUser)
    if tProfile[tUser.iProfile] == 1 then
        Core.SendToUser(tUser, "$UserCommand 1 3 Команды хабу\\Лог$<%[mynick]> "..Prefix.."cmdlog|")
end

OpConnected = UserConnected
RegConnected = UserConnected

function ChatArrival(tUser, sData)
    local cmd = sData:match"%b<>%s+(%S+).*|"
    if cmd == ""..Prefix.."cmdlog" then
        Core.SendToUser(tUser,"<"..sBot.."> "..содержимое_текстового_файла)
        return true
    end    
end

А вот как вывести содержимое файла я ещё пока незнаю =))
Может знатоки помогут =))
Go to the top of the page
+Quote Post
Nickolya
сообщение 16.2.2010, 22:58
Сообщение #15


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

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




Вот, слепил из того что выше.
Прикрепленные файлы
Прикрепленный файл  CmdsLogger.lua ( 1.73 килобайт ) Кол-во скачиваний: 50
 


Спасибо сказали:
Go to the top of the page
+Quote Post
TiGRpp
сообщение 17.2.2010, 2:20
Сообщение #16


Продвинутый участник
****

Группа: Пользователи
Сообщений: 162
Регистрация: 19.8.2009
Из: Москва
Пользователь №: 4 201
Спасибо сказали: 24 раза




Цитата(Nickolya @ 16.2.2010, 23:58) *
Вот, слепил из того что выше.

Отлично. То, что надо.
Благодарю, Nickolya

Сам добавил имя бота без ключика:
Код
local sBot = "»»»CMD" -- имя бота
.
.
.
function OnStartup()
    Core.RegBot(tbot,"","",false)
end
Go to the top of the page
+Quote Post
DrakonSP
сообщение 17.2.2010, 21:26
Сообщение #17


Продвинутый участник
****

Группа: Пользователи
Сообщений: 107
Регистрация: 23.11.2008
Из: Сергиев Посад
Пользователь №: 1 178
Спасибо сказали: 9 раз




А как настроить так что бы он реагировал только на префикс +
Я не использую другие префиксы и хотелось бы избавиться от всяких не нужных.
Он даже реагирует на =)) (смайл)
Go to the top of the page
+Quote Post
Nickolya
сообщение 17.2.2010, 22:01
Сообщение #18


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

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




Это уже моя вольность, простите, привычка. Чтобы сделать только + замени следующее
Код
local sCmd = sData:match"^%b<>%s+%p(%S+)"
на
Код
local sCmd = sData:match"^%b<>%s+%+(%S+)"


Спасибо сказали:
Go to the top of the page
+Quote Post
TiGRpp
сообщение 18.2.2010, 0:30
Сообщение #19


Продвинутый участник
****

Группа: Пользователи
Сообщений: 162
Регистрация: 19.8.2009
Из: Москва
Пользователь №: 4 201
Спасибо сказали: 24 раза




Цитата(Nickolya @ 16.2.2010, 23:58) *
Вот, слепил из того что выше.

Думал с ограничением объема файла справлюсь сам, открыл скрипт История чата, посмотреть как там реализовано, оказалось все не так просто для меня...big_smile.gif

Таким образом опять пришел за помощью:
- ограничить размер файла, если возможно писать отдельный файл на каждый день
- и из меню выводить определенное количество строк...идеально по дате.
Go to the top of the page
+Quote Post
TiGRpp
сообщение 19.2.2010, 12:17
Сообщение #20


Продвинутый участник
****

Группа: Пользователи
Сообщений: 162
Регистрация: 19.8.2009
Из: Москва
Пользователь №: 4 201
Спасибо сказали: 24 раза




Цитата(Nickolya @ 17.2.2010, 23:01) *
Это уже моя вольность, простите, привычка. Чтобы сделать только + замени следующее
Код
local sCmd = sData:match"^%b<>%s+%p(%S+)"
на
Код
local sCmd = sData:match"^%b<>%s+%+(%S+)"

Nickolya, а где найти таблицу значений переменных типа - %s %p ...?
Ну вообще, если не сложно, систематизированный (или не очень) перечень ссылок по луа.

Спасибо.
Go to the top of the page
+Quote Post

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

Collapse

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

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Topic has attachmentsОт: Chase_cmd
От темы с ID: 1648
0 степашка 3 665 2.5.2009, 12:27 Посл. сообщение: степашка

 



RSS Сейчас: 19.4.2024, 23:34