[ Привет Гость] [Группа: Гости ] [ Вход ]

  • Страница 1 из 1
  • 1
Модератор форума: ICE, HellFire, KLA$  
JimBot » JimBot » Настройки JimBot » Установка скриптов на Jimbot 0.4.0 (Побробная статья)
Установка скриптов на Jimbot 0.4.0
ICEДата: Пятница, 26.03.2010, 17:07 | Сообщение # 1
Программист - Разработчик
Группа:Пользователи
Сообщений:129
Награды:0
Репутация:32767
Статус:Онлайн
В данной статье мы рассмотрим общие принципы создания скриптов для JimBot (0.4.0)
[l]
Одно из преимуществ JimBot - в расширяемости функционала. Делается это в настоящий момент (версия 0.4.0) посредством скриптов.

Мы сейчас более подробно рассмотрим механизм расширения команд чата при помощи своих скриптов.

И так, если мы заглянем в исходные тексты бота, а именно класс ChatCommandProc, то увидим следующий механизм определения команд чата:

Code
/**   
* Инициализация списка команд и полномочий   
*/   
private void init(){   
authObj.put("pmsg","Отправка приватных сообщений");   
authObj.put("reg","Смена ника");   
authObj.put("invite","Создание приглашения");   
authObj.put("kickone","Кик одного пользователя");   
authObj.put("kickall","Кик всех пользователей");   
authObj.put("ban","Забанить пользователя");   
authObj.put("settheme","Установить тему в комнате");   
authObj.put("adminsay","Разговаривать с админом");   
authObj.put("adminstat","Получать статистику от админа");   
authObj.put("info","Получать информацию о юзере");   
authObj.put("exthelp","Расширенная помощь");   
authObj.put("authread","Получение инфы о полномочиях");   
authObj.put("authwrite","Изменение полномочий пользователей");   
authObj.put("whouser","Просмотр инфы о смене ников юзером");   
authObj.put("room","Смена комнаты");   
authObj.put("whoinv","Команда !whoinvite");   
authObj.put("kickhist","Команда !kickhist");   
authObj.put("chgkick","Изменение времени кика");   
authObj.put("dblnick","Разрешено дублировать ник");   
authObj.put("anyroom","Переход в любую комнату");   
authObj.put("wroom","Создавать и изменять комнаты");   

commands.put("!help", new Cmd("!help","",2));   
commands.put("!chat", new Cmd("!chat","",3));   
commands.put("!exit", new Cmd("!exit","",4));   
commands.put("!rules", new Cmd("!rules","",5));   
commands.put("!stat", new Cmd("!stat","",6));   
commands.put("!gofree", new Cmd("!gofree","",7));   
commands.put("!go", new Cmd("!go","$n",8));   
commands.put("!invite", new Cmd("!invite","",9));   
commands.put("!banlist", new Cmd("!banlist","",10));   
commands.put("!kicklist", new Cmd("!kicklist","",11));   
commands.put("!info", new Cmd("!info","$c",12));   
commands.put("!kick", new Cmd("!kick","$c $n $s",13));   
commands.put("!kickall", new Cmd("!kickall","",14));   
commands.put("!listauth", new Cmd("!listauth","",15));   
commands.put("!who", new Cmd("!who", "$n",16));   
commands.put("!listgroup", new Cmd("!listgroup","",17));   
commands.put("!checkuser", new Cmd("!checkuser","$n",18));   
commands.put("!setgroup", new Cmd("!setgroup","$n $c",19));   
commands.put("!grant", new Cmd("!grant","$n $c",20));   
commands.put("!revoke", new Cmd("!revoke","$n $c",21));   
commands.put("!ban", new Cmd("!ban","$c $s",22));   
commands.put("!uban", new Cmd("!uban","$c",23));   
commands.put("!reg", new Cmd("!reg","$c $c",24));   
commands.put("+a", new Cmd("+a","",25));   
commands.put("+а", new Cmd("+а","",25));   
commands.put("+f", new Cmd("+f","",25));   
commands.put("+ф", new Cmd("+ф","",25));   
commands.put("+p", new Cmd("+p","$n $s",26));   
commands.put("+р", new Cmd("+р","$n $s",26));   
commands.put("+pp", new Cmd("+pp","$s",27));   
commands.put("+рр", new Cmd("+рр","$s",27));   
commands.put("!settheme", new Cmd("!settheme","$s",28));   
commands.put("!getinfo", new Cmd("!getinfo","$c",29));   
commands.put("!room", new Cmd("!room","$n",33));   
commands.put("!whoinvite", new Cmd("!whoinvite","$n",34));   
commands.put("!kickhist", new Cmd("!kickhist","",35));   
commands.put("!adm", new Cmd("!adm","$s",36));   
commands.put("!banhist", new Cmd("!banhist","",37));   
commands.put("+aa", new Cmd("+aa","",38));   
commands.put("+аа", new Cmd("+аа","",38));   
commands.put("!lroom", new Cmd("!lroom","",40));   
commands.put("!crroom", new Cmd("!crroom","$n $s",41));   
commands.put("!chroom", new Cmd("!chroom","$n $s",42));   
WorkScript.getInstance(srv.getName()).installAllChatCommandScripts(this); // Здесь происходит чтение скриптов и добавление новых команд   
commands.put("!about", new Cmd("!about","",1));   
}

То есть, в переменные типа HashMap authObj и commands записываются соответственно объекты полномочий и команды. Как вы знаете, Map хранит объекты в виде пары <Ключ, Значение>, причем ключ должен быть уникальным, а при вводе нового значения по этому ключу оно заменит старое. Таким образом, открывается большой простор для расширений команд бота.

Механизм добавления новых команд и скриптов работает следующим образом:

1. Читается список файлов "*.bsh" в папке скриптов соответствующего сервиса. Это происходит при инициализации класса ChatCommandProc в момент запуска бота.
2. Каждый из скриптов запускается на выполнение. При запуске в скрипт передается текстовая переменная in="install" и переменная cmd, содержащая ссылку на текущий экземпляр класса ChatCommandProc.
3. В момент запуска, скрипт должен распознать, что его запускают с целью инициализации, и добавить необходимые значения в список команд и объектов полномочий.
4. Процедура выполняется один раз, при запуске. Для добавления новых команд бота нада перезагрузить.

Для определения того с какой целью запускается скрипт служит переменная in. При инициализации она принимает значение "install", при обычном запуске "run". Секция инициализации в скрипте может выглядеть следующим образом:

//Установка скрипта как обработчика команды
if(in.equals("install")){ // Проверка того что запущена инициализация
cmd.addCommand("!chnick", new Cmd("!chnick","$n $c",39,name)); // Добавляем новую команду
cmd.addAuth("chnick","команда изменения ника другого пользователя"); // Добавляем новый объект полномочий
out="Ok"; // Говорим что все хорошо
return; // Уходим, оставшаяся часть скрипта выполняться пока не должна
}

Для переименования существующих команд можно использовать скрипт start.bsh, он запускается в момент старта бота. Например, для переименования команды !help можно добавить в него такую строчку:

((ChatCommandProc)srv.cmd).addCommand("!хелп", new Cmd("!хелп","",2));

Для хранения информации о команде используется класс Cmd. В него передается название, шаблон аргументов и порядковый номер команды.

Агрументы разделяются пробелом и могут принимать следующие значения:

* $n - число
* $c - слово, без пробелов
* $s - произвольная строка символов до конца


By ICE 2008-2010©
Alex^_^Дата: Пятница, 26.03.2010, 17:08 | Сообщение # 2
Administrator
Группа:Администраторы
Сообщений:770
Награды:6
Репутация:1132
Статус:Онлайн
спс smile

с уважением, Alex^_^

=>жми (-1)

VladДата: Четверг, 21.10.2010, 08:25 | Сообщение # 3
Moder
Группа:Модераторы
Сообщений:32
Награды:0
Репутация:81
Статус:Онлайн
Спасибо

JimBot » JimBot » Настройки JimBot » Установка скриптов на Jimbot 0.4.0 (Побробная статья)
  • Страница 1 из 1
  • 1
Поиск:
Новые темы
Раздача ICQ (New)
Установка чата на vds сервер
Обмен кнопками)
Рисуночки))
Раздача Icq
jImBot Mod Desmond (2 декабря 2010 г.)
Флудилка
Раздача @mail.ru ящиков
Горячие темы
Рисуночки))
jImBot v.0.4.0 pre game
Скрипты для Jimbot 0.4.0
Раздача ICQ (New)
Флудилка
mod 0.4.0 by dimax & warik
скрипты для JimBot 0.3.6
Вакансии:)
Активные пользователи

Alex^_^
Сообщений: 770

ICE
Сообщений: 129

♥_ЭйВа_♥
Сообщений: 104

HellFire
Сообщений: 44

Vlad
Сообщений: 32

[ADM]RoMbl4
Сообщений: 31

KLA$
Сообщений: 28

Er[R]or
Сообщений: 16

HParaLoN
Сообщений: 15
Новые пользователи на сайте
swbforever-38
↓ ↓ ↓ ↓ ↓
kla$4731
↓ ↓ ↓ ↓ ↓
muslimalashari
↓ ↓ ↓ ↓ ↓
info_bot_2
↓ ↓ ↓ ↓ ↓
BOPOH
↓ ↓ ↓ ↓ ↓
Valeria
↓ ↓ ↓ ↓ ↓
RakiLLet
↓ ↓ ↓ ↓ ↓
realpepper
↓ ↓ ↓ ↓ ↓
defaultNick3824
↓ ↓ ↓ ↓ ↓