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

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

MyDC.ru _ Kорзина _ История чата и только

Автор: AlphaOmega 18.5.2009, 22:08

Порыскал по форуму. Нашёл несколько скриптов, ведущих историю чата, да вот только они все немного мудрёные - то только последние N сообщений, то там есть антиреклама, то просто записывает N сообщений в чат... а нужен простой:
нужен скрипт, записывающий историю чата в реальном времени (или через N минут) в один файл с именем типа chat.18.05.09.log (chat.ЧИСЛО.МЕСЯЦ.ГОД.log) и всё.
Безо всяких излишеств.
API2 под птаху 0.4.1.1

если опубликуете его здесь или дадите ссылку - буду благодарен

зарнее спасибо.

Автор: Wariner 18.5.2009, 22:19

смотреть лог из dc клиента тоже относится к излишествам?

Автор: AlphaOmega 18.5.2009, 22:31

нет, но просто в теме столько указаний об ошибках, что и не знаешь - где же именно полностью рабочий скрипт.

Автор: Setuper 18.5.2009, 22:38

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

По поводу запроса вот код записи в файл:

Код
function Save(sFile, sText)
  h = io.open(sFile, "a+")
  if h then
    h:write(sText.."\n")
    h:flush()
    h:close()
  end
end


Код
local sPath = "путь_к_папке_с_логами"

function ChatArrival(tUser, sData)
  Save(sPath..os.date"chat.%d.%m.%y.log", sData:sub(1,-2))
end

Автор: AlphaOmega 18.5.2009, 23:08

вопрос: ChatArrival - это когда сообщение появляется в чате или кто-то входит в чат?

Автор: Wariner 18.5.2009, 23:09

да срабтывает на отсылку сообщения

Автор: Setuper 18.5.2009, 23:09

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

Автор: AlphaOmega 18.5.2009, 23:11

и всё же, если не сложно, можете дать целиком скрипт чтобы он был полностью рабочий (всё объявлено и готово к финальным правкам путей и имён) включающий в себя то, что выше Setuper написал. плииииз
или достаточно просто сохранить то, что приведено выше и всё?

Автор: Setuper 18.5.2009, 23:21

Естественно надо сохранить и прописать путь.

Автор: AlphaOmega 19.5.2009, 10:31

Setuper, спасибо, всё заработало.

Автор: vicious 20.5.2009, 20:34

А может лучше все таки handle глобальным делать...а закрывать при Exit или OnError...меньше нагружать будет...
И кстати если ты хочешь просматривать логи через меню...то учти что там ограничение по -колву символов....возможно лучше писать каждый час в отдельный файл...

Автор: Setuper 20.5.2009, 20:51

Насчёт handle согласен.
Насчёт ограничения, то они на админов не распространяются.

Автор: vicious 20.5.2009, 22:57

Цитата(Setuper @ 20.5.2009, 21:51) *
Насчёт handle согласен.
Насчёт ограничения, то они на админов не распространяются.

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

Автор: Wariner 21.5.2009, 6:57

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

Автор: Setuper 21.5.2009, 20:28

предел конечно существует и в переменных и в клиенте big_smile.gif

Автор: vicious 21.5.2009, 21:11

Ну переменные то ладно, логи можно кусками отправлять....но вот в клиенте ограничение не обойти!...поэтому если на хабе много общаются - то лучше писать логи по часам..и делать возможность просмотра логов по часам...потому что если открывать целый день, то скорее всего не поместится ввесь дневной лог в окне ЦД клиента

Автор: Setuper 21.5.2009, 21:14

Лучше писать логи и выводить какое-то количество строк, допустим последние 100 строк лога.

Автор: vicious 21.5.2009, 21:17

и где смысл? а если мне нужен старый лог?
Мне вот нравится реализация Хубовская...я вот в своем боте такую же сделал...по мне - так удобно.

Автор: Setuper 21.5.2009, 21:20

В общем по разному можно сделать. Оптимальнее конечно же хранить в бд и делать всевозможные запросы хоть по числу, хоть по часу, хоть по количеству строк.