невыполненные команды в чате, как избежать вывода в чат невыполняемых скриптом команд |
Здравствуйте, гость ( Вход | Регистрация )
невыполненные команды в чате, как избежать вывода в чат невыполняемых скриптом команд |
13.3.2010, 11:53
Сообщение
#1
|
|
Продвинутый участник Группа: Пользователи Сообщений: 133 Регистрация: 18.9.2008 Из: Москва Пользователь №: 555 Спасибо сказали: 5 раз |
здравствуйте. есть скрипт (какой говорить не буду и не знаю как его тут прикрепить, ибо он запрещён правилами, могу только отправить в мыло или скайп, пусть администраторы сами решат судьбу его размещения на данном сайте, мною уважаемом). используется часто для вылова рекламы из ЛС, ибо множество других скриптов всё же не в состоянии справиться с изобретательностью спамеров, нужно человеческое участие в массе случаев, все фильтры предусмотреть нереально. скрипт работает замечательно, однако при запросе несуществующего лога (то есть при выполнении инвалидной команды) пропускает её в чат на всеобщее обозрение. как этого избежать и что там нужно дописать? пытался сделать по аналогии с другими скриптами, в лучшем случае сыпет кучу ошибок или же просто перестаёт работать. сам не справлюсь. спасибо за ответ и за помощь
|
|
|
13.3.2010, 12:33
Сообщение
#2
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
ну тут естественно надо сказать ай-ай-ай типа нехорошо это xDDD
скрипт в самый конец списка Код local tExCmd = { -- команды исключения ["help"] = 1, } function ChatArrival(tUser, sData) local sData = sData:sub(1,-2) local sCmd = sData:match"%b<>%s+[%!%+%-%/%*](%S+)" if sCmd and not tExCmd[sCmd] then Core.SendToOps("в чат поступила неизвестная (невыполненая) команда!") -- оповещение убирается этой строчкой return true end end PS: всё таки пользовать такие скрипты не хорошо PPS: не забудь команды исключения прописать, все системные имеется в виду! |
|
|
13.3.2010, 13:55
Сообщение
#3
|
|
Продвинутый участник Группа: Пользователи Сообщений: 133 Регистрация: 18.9.2008 Из: Москва Пользователь №: 555 Спасибо сказали: 5 раз |
спасибо за ответ, но я немного не об этом. сейчас я приведу команду, которая проходит в чат, не выполняясь по причине отсутствия самого вызываемого ею лога, и всё станет понятно что это за скрипт )))
пример: [12:44:17] <Cmenawka> !pmlog 2009_10_10 птока пишет такую ошибку: [12:44] Синтакс C:\Program Files\-=ХАБ=-\scripts\Pm-viewer.lua:35: attempt to concatenate a nil value я так понимаю скрипт не может выполнить операцию ввиду отсутствия запрашиваемого лога. однако в самом скрипте есть функция сброса невыполненной и прошедешей в чат команды всвязи с неправильным указанием формата времени: Код function getFullPMLog(sUser,arg) local fdate = GetArg(arg); if fdate == nil then sUser:SendPM(BotName, "*** Ошибка! Неправильный формат даты! Правильно: гггг_мм_дд") return 1 end local msg ="\r\n"..string.rep("«»",25).."\r\n" msg = msg .. "\tЛог приватов за число: "..fdate msg = msg .."\r\n"..string.rep("«»",25).."\r\n\r\n" msg = msg .. loadtext(PM_FOLDER..fdate..".log") msg = msg .. "\r\n"..string.rep("«»",25).."\r\n\tКонец лога\r\n"..string.rep("«»",25) sUser:SendPM(BotName,msg) CollectTrash(); return 1 end function SendCmdErr(sUser) sUser:SendPM(BotName, "*** Ошибка: У Вас нет доступа к данной команде!"); end вот эту-то функцию я и пытался довольно долго, но безуспешно прикрутить применительно к тому случаю, что я описывал вначале, хотел сделать чтобы вместо прохождения в чат невыполненой команды поиска лога, запрашивающему (в данном случае это Cmenawka) этот лог высвечивалось бы типа "Лог не найден", а не "<Cmenawka> !pmlog 2009_10_10" в чат PS апи1 /// PPS насчёт ай-я-яй я понимаю, но к сожалению нереально никакими фильтрами убрать спамеров из привата. они всё более изощрёныеуыееуыееуые |
|
|
13.3.2010, 18:20
Сообщение
#4
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
Надо было указать строку в которой вылетает ошибка, а то так не очень ясно. А 35 строка тут явно не при чем. Если это строка
Код msg = msg .. loadtext(PM_FOLDER..fdate..".log") то попробуй заменить ее наКод msg = msg .. (loadtext(PM_FOLDER..fdate..".log") or "*** Лог отсутствует ***")
|
|
|
13.3.2010, 23:20
Сообщение
#5
|
|
Продвинутый участник Группа: Пользователи Сообщений: 133 Регистрация: 18.9.2008 Из: Москва Пользователь №: 555 Спасибо сказали: 5 раз |
о май гат! неужели всё так просто? просто надо было дописать что лог отсутствует в скобках! я в полном а__е. а я несколько часов пытался присунуть функции аргументов и прочие захваты всякой хрени... огромное спасибо, теперь всё работате исправно. вот что значит когда профи берутся за дело
|
|
|
Похожие темы
|
Сейчас: 27.11.2024, 1:52 |