Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Служебные скрипты [PtokaX] _ CmdToAdmin

Автор: Tsd 10.10.2010, 11:06

Название скрипта: CmdToAdmin_1.3
Версия API: API2
Автор: Tsd
Описание: Скрипт посылает в приват владельцу хаба команды, посланные пользователями.
Иногда полезно знать кто какие команды использует. Не реагирует на команды, посланные ником в конфигураторе,
на "любимые" команды типа "+5" и т.п. Скрипт ставим выше всех скриптов, использующих команды/меню.
Tsd © 10.2010

 CmdToAdmin_1.3.lua ( 1.42 килобайт ) : 77
 

Автор: alex82 10.10.2010, 11:38

Можно несколько упростить код отлова команды в чате:

Код
function ChatArrival(user,data)
    if Core.GetUser(sNick) and user.sNick ~= sNick then
        local pre,cmd = data:match("%b<>%s+(["..SetMan.GetString(29):gsub("[%^%$%(%)%%%.%[%]%*%+%-%?]","%%%1").."])(%S+)")
        if pre then
            if not (pre == "+" and cmd:find("^%d+")) then -- Не реагируем на "+5", к примеру.
                cmd = cmd:lower()
                for i = 1,#tIgnoreCmd do
                    if cmd == tIgnoreCmd[i] then return end
                end        
                Core.SendPmToNick(sNick, sBot, "\tПослана команда хабу:  "..data:sub(1,-2))
            end    
        end
    end
end
Префиксы команд берутся из настроек хаба. Соответственно отпадает необходимость в таблице команд и цикле, проверяющем наличие команды в таблице. И чистка памяти, я думаю, здесь лишняя.

Код
ToArrival = ChatArrival
А это лучше удалить, поскольку во-первых, подавляющее большинство юзеров вообще не знают о возможности отправки команд главному боту хаба, во-вторых, будут проверяться все лички, а не только те, что были отправлены боту, а в третьих, при текущей реализации функции отлова команд, в лог будет попадать вся команда $To. Будет что-то вроде этого:
Цитата
<bot> Послана команда хабу: $To: bot From: user $<user> !command

Автор: Tsd 10.10.2010, 11:54

Префиксы в разных скриптах свои! По крайней мере у меня. А префиксы из настроек хаба вытянуть - согласен. Некоторые регистрируются отсылом боту в приват команду регистрации.

Не судите строго, я только учусь. 2 alex82 - спасибо за науку, много подчерпнул для себя важного.