Модуль MegaHAL для бота eggdrop/windrop Версия от 3 мая 2004 года, v3.1, редакция vd (Vladimir Degtyarenko). I. ЧТО НОВОГО. II. КОМПИЛЯЦИЯ И ИНСТАЛЛЯЦИЯ МОДУЛЯ. III. НАСТРОЙКА И ПОДКЛЮЧЕНИЕ МОДУЛЯ. IV. КОМАНДЫ. ============================================ I. ЧТО НОВОГО 1. Изменен метод поступления сообшений в модуль. В прежней версии сообщения поступали по событиям 'pub', теперь же для этого используется 'pubm' c ключем '*' 2. Введен еще один словарь "megahal.nick". В этом словаре прописаны все ники на которые должен реагировать модуль. (Если в фразе, поступившей в модуль, первое слово совпадает с одним из ников прописанных в этом словаре, то фраза принимается в дальнейшую обработку модулем) 3. Команды модулю теперь можно подавать и по dcc: .brainsave (сохранить информацию, накопленную в памяти, в файл) .brainreload (перезагрузить информацию в памяти из файла) .brainappendload (добавить в память новую порцию сообщений из файла) 4. Устранены некоторые мелкие недоделки. ============================================ II. КОМПИЛЯЦИЯ И ИНСТАЛЛЯЦИЯ МОДУЛЯ 1. Cкопируйте каталог "megahal.mod" в каталог "./src/mod" В файле "megahal.h", определен флажок - "#define CP1251". Это значит что модуль будет пользоваться кодировкой CP1251. Если ваш бот будет работать на каналах с кодировкой koi-8 то удалите или закомментируйте строку - "#define CP1251" 2. Для корректной компиляции и включения модуля в компиляцию необходимо заново подать ряд обычных команд: make clean sh ./configure make config make 3. Скопируйте модуль "megahal.so" (или "megahal.dll") в каталог "modules". Скопируйте рабочие файлы модуля, megahal.aux, megahal.ban, megahal.grt, megahal.swp, megahal.mat, megahal.trn и megahal.nick в корневой каталог бота. Все эти файлы написаны в кодировке CP1251, для работы в кодировке koi8 сконвертируйте их в koi8 (это удобно сделать, например, с помошью "far") ============================================ III. НАСТРОЙКА И ПОДКЛЮЧЕНИЕ МОДУЛЯ. Пропишите в файле megahal.nick все ники бота на которые он будет реагировать. Например так: Clasha Clashka Claha Clashechka Клаша Клашка Клаха Обратите внимание что здесь не требуется (не нужно, нельзя) ипользовать знаки препинания. Загружается модуль так же как и остальные модули, командой "loadmodule megahal". ============================================ IV. КОМАНДЫ В настройках канала есть флаг управления модулем "nopubmega": при значении "-nopubmega" модуль реагирует на обращения при значении "+nopubmega" работа модуля запрещена на соответствующем канале В настройках канала есть флаг управления логами "nologmega": при значении "-nologmega" логи пишутся при значении "+nologmega" нет. --- Следующие команды доступны только овнеру бота. (Глобальный флаг +n) "/msg brainsave" или DCC .brainsave Для сохранения накопленной информации, а бот обучается во время беседы, овнеру бота необходимо подать эту команду. При этом создается три файла "megahal.brn", "megahal.dic", "megahal.msg" В файле "megahal.msg" сохраняется накопленная информация в текстовом виде. В дальнейшем, модуль загружает информацию из файла "megahal.brn" и из словарей. Если потребуется очистить хранилище фраз и загрузить снова из файла "megahal.trn" - удалите файл "megahal.brn" перед тем как запустить бота или модуль, или перед тем как подать команду "brainreload". "/msg brainreload" или DCC .brainreload Перезагрузка словарей и сообщений. По этой команде очищается имеющаяся в памяти информация и загружается заново из словарей и базы "megahal.brn", если этого файла нет, то сообщения загружаются из "megahal.trn" "/msg brainappendload" или DCC .brainappendload Дозагрузка сообщений из текстового файла "megahal.trn" По этой команде, имеющаяся в памати информация, дополняется новой порцией сообщений. vd, 03May2004 ============================================ Версия от 11 апреля 2003 года, редакция vd (Vladimir Degtyarenko). ============================================ 1. Устранена утечка оперативной памяти по команде .restart (по команде рестарт, модуль выгружался но занятая память не освобождалась, и естественно, тут же, при загрузке, модуль использовал новое пространство памяти, что наращивало общий объем памяти занятый ботом) 2. При обработке поступающих фраз удаляются все лишние пробелы и символы возврата кретки '0x0d'. (Теперь не нужно допольнительно обрабатывать magahal.trn что выкинуть '0x0d') 3. Модуль ведет логи бесед на каналах и приватные. Файлы хранятся в подкаталоге "megahallog". Формат имен таких файлов "megahal.#mychan" и "megahal.nick". В настройках канала есть дополнительный флажок "nologmega" при значении "-nologmega" логи пишутся, а при "+nologmega" нет. 4. Сохранение накопленных сообщений в текстовом файле "megahal.msg" (по команде brainsave). Небольшая оговорка: в файле сохраняется не все 100% процентов фраз сказанных боту, есть небольшой процент фраз, которые могут не сохраниться в этом файле, и небольшой процент измененных фраз. 5. При анализе сообщений используется дополнительный словарь "megahal.mat" для подмены слов. Основное его назначение это заменить маты или какие либо нехорошие слова, сказанные боту, на другие. Формат этого файла такой же как и "megahal.swp", (ключевое слово и слово заменяющее его разделены знаком табуляции) При полном совпадении ключевого и анализируемого слова происходит замена анализируемого слова на соответствующее слово из словаря. Это следет учитывать при редактировании "megahal.mat", то есть, ключевые слова желательно просклонять. 6. Символ пробела не запоминется как компонент фразы, что позволило примерно на четверть сократить объем используемой памяти. Но что бы это произошло, нужно полностью обновить базу сообщений, в противном случае будет использоваться страя база, и сокращение использованной памяти не произойдет. Например можно поступить так: сохранить информацию командой "brainsave", затем удалить файл "megahal.brn", переименовать файл "megahal.msg" в файл "megahal.trn", подать команду "brainreload", и снова сохранить командой "brainsave". Использованная память сократится, но бота нужно запустить заново что б сбросились буфера и зарезервированная память. 7. Во время загрузки словарей (megahal.aux, megahal.ban, megahal.grt, megahal.swp и megahal.mat) весь текст переводится в верхний регистр, удаляются символы возврата каретки '0x0d'. Теперь не обязательно в этих словарях писать прописными буквами. 8. Доработана функция "megahal_expmem()" Теперь вместо нуля она возвращает размер используемой оперативной памяти. 9. Доработана функция "megahal_report()" Выдает несколько больше информации о модуле чем прежде, например, по команде DCC ".module megahal" (альтернативные ники, размер памяти, количество слов и фраз в хранилище) 10. Новые команды: "/msg brainreload" перезагрузка словарей и сообщений. "/msg brainappendload" дозагрузка сообщений из текстового файла "megahal.trn" 11. По команде ".restart" автоматически отрабатывается команда "brainsave" ============================================ vd, 11Apr2003