Новые сообщения
Участники
Правила форума
Поиск
RSS
Подписки
Готовые 100% работающие скрипты для Jimbot |
CooperOFF
Сообщений: 588
Репутация: 786
Offline
|
Сообщение # 1 | 17.05.2010 03:36 |
Для посетителей темы: *В данной теме выкладываются только готовые скрипты, которые прошли тест и 100% рабочие. *Вопросы типа: "А как его установить?", "А у меня нифига не работает" и т.д. будут незамедлительно удалены! Для тех кто выкладывает скрипты: *Указываем название скрипта *Указываем смысл его работы *Указываем процесс установки *Так же можно указать какие либо дополнительные указания, пожелания, требования по использованию вашего скрипта Если скрипт принадлежит не вам: *Указываем координаты автора скрипта *Скрипты разрешается выкладывать только с разрешения автора. Если вы автор скрипта и он был выложен без вашего согласия: *Незамедлительно сообщите администрации *Предоставьте доказательство принадлежности скрипта вам.
Copyright by © CooperOFF
|
|
|
| |
CooperOFF
Сообщений: 588
Репутация: 786
Offline
|
Сообщение # 2 | 17.05.2010 03:37 |
Название: Руссификатор команд Смысл работы: Данный скрипт добавляет в ваш чат команды на русском языке Установка: Необходимо заменить содержимое файла start.bsh на ниже приведённый код. Файл start.bsh находится в: "Папка_вашего_бота\services\ChatBot\scripts Дополнительно: Руссифицированные команды в скрипте вы можете изменять на свой вкус, только будьте при этом придельно внимательны, один неправильный символ и ваш скрипт работать не будет. Code /** * Данный скрипт запускается при старте бота. Здесь можно указать команды подключения или * инициализации внешних программных средств - баз данных, програмных оболочек и т.п. **/ /** * При вызове скрипта определены следующие переменные: * AbstractServer srv */ import ru.jimbot.modules.AbstractServer; import ru.jimbot.util.*; import ru.jimbot.modules.chat.*; import ru.jimbot.modules.*; Log.info("Запуск бота..."); out="Ok"; // Добавляем псевдонимы к существующим командам бота // Новые команды и полномочия добавятся автоматически при установке скриптов //Руссификация команд чата - 7.02.09 (с) pankrat ((ChatCommandProc)srv.cmd).addCommand("!справка", new Cmd("!справка","",2)); //Команда спраки по боту ((ChatCommandProc)srv.cmd).addCommand("!чат", new Cmd("!чат","",3)); //Команда входа в чат ((ChatCommandProc)srv.cmd).addCommand("!выход", new Cmd("!выход","",4)); //Команда выхода из чата ((ChatCommandProc)srv.cmd).addCommand("!правила", new Cmd("!правила","",5)); //Вывод правил чата ((ChatCommandProc)srv.cmd).addCommand("!стат", new Cmd("!стат","",6)); // Статистика ЮИН'ов ((ChatCommandProc)srv.cmd).addCommand("!свюин", new Cmd("!свюин","",7)); // Переход на свободный ЮИН ((ChatCommandProc)srv.cmd).addCommand("!юин", new Cmd("!юин","$n",8)); // Переход на ЮИН №1,2,3 и т.д. ((ChatCommandProc)srv.cmd).addCommand("!приглашение", new Cmd("!приглашение","",9)); //Создание приглашения в чат ((ChatCommandProc)srv.cmd).addCommand("!банлист", new Cmd("!банлист","",10)); //Просмотр Бан листа ((ChatCommandProc)srv.cmd).addCommand("!киклист", new Cmd("!киклист","",11)); //Просмотр кик листа ((ChatCommandProc)srv.cmd).addCommand("!инфо", new Cmd("!инфо","$c",12)); //Просмотр инфы о юзере ((ChatCommandProc)srv.cmd).addCommand("!кик", new Cmd("!кик","$c $n $s",13)); //Команда КИКа ((ChatCommandProc)srv.cmd).addCommand("!киквсех", new Cmd("!киквсех","",14)); //Общий КИК ((ChatCommandProc)srv.cmd).addCommand("!кто", new Cmd("!кто", "$n",16)); //Список последних ников юзера ((ChatCommandProc)srv.cmd).addCommand("!листгрупп", new Cmd("!листгрупп","",17)); //Список групп юзеров ((ChatCommandProc)srv.cmd).addCommand("!группа", new Cmd("!группа","$n $c",19)); //Присвоить группу юзеру ((ChatCommandProc)srv.cmd).addCommand("!бан", new Cmd("!бан","$c $s",22)); //Команда БАНа ((ChatCommandProc)srv.cmd).addCommand("!убан", new Cmd("!убан","$c",23)); //Снять БАН ((ChatCommandProc)srv.cmd).addCommand("!ник", new Cmd("!ник","$c $c",24)); //Регистрация, смена ника ((ChatCommandProc)srv.cmd).addCommand("+тут", new Cmd("+тут","",25)); // Список юзеров в комнате ((ChatCommandProc)srv.cmd).addCommand("+лс", new Cmd("+лс","$n $s",26)); //Отправить в приват ((ChatCommandProc)srv.cmd).addCommand("+ответ", new Cmd("+ответ","$s",27)); //Ответ на последний приват ((ChatCommandProc)srv.cmd).addCommand("!тема", new Cmd("!тема","$s",28)); //Установить тему комнаты ((ChatCommandProc)srv.cmd).addCommand("!комната", new Cmd("!комната","$n",33)); //Переход в комнату ((ChatCommandProc)srv.cmd).addCommand("!ктопригл", new Cmd("!ктопригл","$n",34)); //вывод цепочки приглашений ((ChatCommandProc)srv.cmd).addCommand("!кикист", new Cmd("!кикист","",35)); //История КИКов ((ChatCommandProc)srv.cmd).addCommand("!adm", new Cmd("!adm","$s",36)); //Написать сообщение админу ((ChatCommandProc)srv.cmd).addCommand("!банист", new Cmd("!банист","",37)); //История БАНов ((ChatCommandProc)srv.cmd).addCommand("+все", new Cmd("+все","",38)); //Списов юзеров в чате ((ChatCommandProc)srv.cmd).addCommand("!комнаты", new Cmd("!комнаты","",40)); //Список доступных комнат ((ChatCommandProc)srv.cmd).addCommand("!создкомн", new Cmd("!создкомн","$n $s",41)); //Создать комнату ((ChatCommandProc)srv.cmd).addCommand("!измкомн", new Cmd("!измкомн","$n $s",42)) //Переименовать комнату
Copyright by © CooperOFF
|
|
|
| |
CooperOFF
Сообщений: 588
Репутация: 786
Offline
|
Сообщение # 3 | 17.05.2010 03:42 |
Название: Отправка сообщения во все комнаты Назначение: Скрипт предназначен для отправки сообщения во все комнаты Установка: Для работы скрипта его нужно скопировать в папку \services\Имя_сервиса_чата\scripts\command Code /* * Скрипт предназначен для отправки сообщения во все комнаты * Сообщение добавляется в общую очередь чата в виде "SYSTEM MESSAGE: текст вашего сообщения" * * Пример использование команды: "!send Уважаемые пользователи, кто хочет стать модератором, наберите !выход" * (c) Sushka 2009 */ import ru.jimbot.modules.AbstractServer; import ru.jimbot.util.*; import ru.jimbot.modules.chat.*; import ru.jimbot.modules.*;
if(in.equals("install")){ //!send - название команды, при желании можно изменить на свое cmd.addCommand("!send", new Cmd("!send","$s",39,name)); cmd.addAuth("allroom_message","Сообщение во все комнаты"); out="Ok"; return; } if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return; if(!cmd.auth(proc,uin, "allroom_message")) return; try{ Vector v = cmd.getParser().parseArgs(msg); String smsg = (String)v.get(0); if(smsg.equals("")||smsg.equals(" "))return; Set rid = new HashSet(); Enumeration e = cmd.srv.cq.uq.keys(); while(e.hasMoreElements()){ String i = e.nextElement(); Users us = cmd.srv.us.getUser(i); if(us.state==UserWork.STATE_CHAT) rid.add(us.room); } for (int i:rid){ //если SYSTEM MESSAGE не устраивает- меняем на свое. cmd.srv.cq.addMsg("nSYSTEM MESSAGE: "+ smsg+"n", uin, i); } proc.mq.add(uin,"Сообщение отправленно"); } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin,"Ошибка "+ex.getMessage()); }
Copyright by © CooperOFF
|
|
|
| |
CooperOFF
Сообщений: 588
Репутация: 786
Offline
|
Сообщение # 4 | 17.05.2010 03:43 |
Название: OpChat Смысл: Общение только между всеми операторами в чате, виден во всех комнатах, отображаться будет как OpChat: > Установка: Создать файл в папке ./services/ChatBot/scripts/command Code /** * Отправка всем опам, на базе скриптов "запереть в комнате" и "отослать во все комнаты" * * Imda */ import ru.jimbot.modules.AbstractServer; import ru.jimbot.util.*; import ru.jimbot.modules.chat.*; import ru.jimbot.modules.*; if(in.equals("install")){ cmd.addCommand("%", new Cmd("%","$s",39,name)); cmd.addAuth("OpChat","доступ к опчату"); out="Ok"; return; } if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return; if(!cmd.auth(proc,uin, "OpChat")) return; try{ Vector v = cmd.getParser().parseArgs(msg); String smsg = (String)v.get(0); if(smsg.equals("")||smsg.equals(" "))return; Enumeration e = cmd.srv.cq.uq.keys(); while(e.hasMoreElements()){ String i = e.nextElement(); Users us = cmd.srv.us.getUser(i); if (cmd.srv.us.authorityCheck(i, "OpChat")) { cmd.srv.getIcqProcess(us.basesn).mq.add(us.sn,"OpChat: "+cmd.srv.us.getUser(uin).localnick+"> " + smsg); }
} } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin,"Ошибка "+ex.getMessage()); }
Copyright by © CooperOFF
|
|
|
| |
CooperOFF
Сообщений: 588
Репутация: 786
Offline
|
Сообщение # 5 | 17.05.2010 03:48 |
Название: Админчат \ Комната-отстойник Смысл: 2 комнаты с ограниченым допуском, для Опов, и для провинившихся. Вторую лучше юзать с переписанным скриптом бана в комнате Установка: 1)Создать 2 комнаты с номерами 7 и 9 (при желании - переделайте) 2)Создать файлы в папке ./services/ChatBot/scripts/command Замена перехода по комнатам: Code /** * Скрипт для расширения команд чата */
/** * При вызове скрипта определены следующие переменные: * ChatCommandProc cmd - ссылка на обработчик команд * IcqProtocol proc - ссылка на процесс обработки icq * String msg - текст сообщения с командой * String uin - кто отправил сообщение * String name - имя этого файла (при процедуре инсталяции скрипта) */
import ru.jimbot.modules.AbstractServer; import ru.jimbot.util.*; import ru.jimbot.modules.chat.*; import ru.jimbot.modules.*;
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!ком", new Cmd("!ком","$n",39,name)); cmd.addCommand("!r", new Cmd("!r","$n",39,name)); cmd.addCommand("!к", new Cmd("!к","$n",39,name)); cmd.addCommand("!room", new Cmd("!room","$n",39,name)); cmd.addAuth("room","Переход по комнатам"); out="Ok"; return; }
// Проверим полномочия if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return; if(!cmd.auth(proc,uin, "roomgo")) return; try{ Vector v = cmd.getParser().parseArgs(msg); int i = (Integer)v.get(0); Users uss = cmd.srv.us.getUser(uin); if(uss.room==i){ proc.mq.add(uin,"Ты уже сидишь в этой комнате!"); } else if (((cmd.qauth(proc,uin, "roomgo")) && (! (i==7) && !(i==9) ) && ((i==0) || (i==1) || (i==2) )) || (cmd.qauth(proc,uin, "anyroom") ) ){ cmd.srv.cq.addMsg(uss.localnick + " ушел из комнаты " + uss.room, uin, uss.room); uss.room=i; cmd.srv.us.updateUser(uss); cmd.srv.cq.changeUserRoom(uin, i); cmd.srv.cq.addMsg(uss.localnick + " вошел в комнату " + uss.room, uin, uss.room); String sss = cmd.psp.loadText("./news.txt"); proc.mq.add(uin,cmd.srv.us.getUser(uin).localnick+", ты перешел в комнатуn" + i + " - " + cmd.srv.us.getRoom(i).getName() +"nНовости: " + sss +"nТема: " + cmd.srv.us.getRoom(i).getTopic() );
} else if ( (i==7) || (i==9) || ((i!=0) && (i!=1) && (i!=2) && (i!=7) && (i!=9))) { proc.mq.add(uin,"Тебе сюда нельзя."); } else if ((i!=0) && (i!=1) && (i!=2) && (i!=7) && (i!=9)){ proc.mq.add(uin,"Такой комнаты не существует! Некуда переходить."); } } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin,ex.getMessage()); }
Copyright by © CooperOFF
|
|
|
| |
CooperOFF
Сообщений: 588
Репутация: 786
Offline
|
Сообщение # 6 | 17.05.2010 03:48 |
Переписаный для использования "Отстойника" скрипт бана в комнате: Code /** * Скрипт для расширения команд чата */
/** * При вызове скрипта определены следующие переменные: * ChatCommandProc cmd - ссылка на обработчик команд * IcqProtocol proc - ссылка на процесс обработки icq * String msg - текст сообщения с командой * String uin - кто отправил сообщение * String name - имя этого файла (при процедуре инсталяции скрипта) */
import ru.jimbot.modules.AbstractServer; import ru.jimbot.util.*; import ru.jimbot.modules.chat.*; import ru.jimbot.modules.*;
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!банком", new Cmd("!банком","$n",39,name)); cmd.addAuth("banroom","Запереть юзера в комнате"); out="Ok"; return; }
// Проверим полномочия if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return; if(!cmd.auth(proc,uin, "banroom")) return;
try{ Vector v = cmd.getParser().parseArgs(msg); int i1 = (Integer)v.get(0); Users u = cmd.srv.us.getUser(i1); if(u.id==0){ proc.mq.add(uin,"Пользователь не найден"); return; } if(u.state!=UserWork.STATE_CHAT){ proc.mq.add(uin,"Этого пользователя нет в чате."); return; } // Переводим в комнату if(u.room==7){ proc.mq.add(uin,"Пользователь уже сидит в этой комнате"); return; } else { u.room=7; cmd.srv.us.updateUser(u); cmd.srv.cq.changeUserRoom(u.sn, 7); // Оповещаем целевую комнату cmd.srv.cq.addMsg("У вас пополнение: "+u.localnick, u.sn, u.room); // Оповещаем юзера cmd.srv.getIcqProcess(u.basesn).mq.add(u.sn,"Поздравляем, Вы были признаны мусором и перемещены в мусоропровод."); // Лишаем юзера прав на комнаты cmd.srv.us.revokeUser(i1, "achat"); cmd.srv.us.revokeUser(i1, "roomgo"); cmd.srv.us.revokeUser(i1, "anyroom"); } // Сообщаем об успешном выполнении команды proc.mq.add(uin,u.localnick + " выброшен в мусоропровод"); } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin,"Ошибка "+ex.getMessage()); }
Copyright by © CooperOFF
|
|
|
| |
CooperOFF
Сообщений: 588
Репутация: 786
Offline
|
Сообщение # 7 | 17.05.2010 03:49 |
Переписанный разбан комнаты: Code /** * Скрипт для расширения команд чата */
/** * При вызове скрипта определены следующие переменные: * ChatCommandProc cmd - ссылка на обработчик команд * IcqProtocol proc - ссылка на процесс обработки icq * String msg - текст сообщения с командой * String uin - кто отправил сообщение * String name - имя этого файла (при процедуре инсталяции скрипта) */
import ru.jimbot.modules.AbstractServer; import ru.jimbot.util.*; import ru.jimbot.modules.chat.*; import ru.jimbot.modules.*;
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!убанком", new Cmd("!убанком","$n",39,name)); cmd.addAuth("banroom","Запереть юзера в комнате"); out="Ok"; return; }
// Проверим полномочия if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return; if(!cmd.auth(proc,uin, "banroom")) return;
try{ //Парсим строку аргументов Vector v = cmd.getParser().parseArgs(msg); //Согласно шаблону, аргумент должн быть числом int i1 = (Integer)v.get(0); // Находим юзера Users u = cmd.srv.us.getUser(i1); // Проверяем есть ли такой юзер ваще? if(u.id==0){ proc.mq.add(uin,"Пользователь не найден"); return; } // Возвращаем права if (cmd.qauth(proc,u.sn, "OpChat")) { cmd.srv.us.grantUser(i1, "achat");} cmd.srv.us.grantUser(i1, "roomgo"); if(u.state==UserWork.STATE_CHAT){ cmd.srv.getIcqProcess(u.basesn).mq.add(u.sn,"Тебе разрешено выходить за пределы этой комнаты"); } // Сообщаем об успешном выполнении команды proc.mq.add(uin,"Пользователю " + u.localnick + " возвращены права на переход по комнатам"); } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin,"Ошибка "+ex.getMessage()); }
Copyright by © CooperOFF
|
|
|
| |
CooperOFF
Сообщений: 588
Репутация: 786
Offline
|
Сообщение # 8 | 17.05.2010 03:50 |
Название: Работа с новостями Смысл: Создаем файл с новостями чата, доступный для просмотра обычным юзерам Установка: 1)Создать файл в папке бота: news.txt 2)Создать файлы в папке ./services/ChatBot/scripts/command Code /** * Скрипт для Чтения новостей */
/** * При вызове скрипта определены следующие переменные: * ChatCommandProc cmd - ссылка на обработчик команд * IcqProtocol proc - ссылка на процесс обработки icq * String msg - текст сообщения с командой * String uin - кто отправил сообщение * String name - имя этого файла (при процедуре инсталяции скрипта) */
import ru.jimbot.modules.AbstractServer; import ru.jimbot.util.*; import ru.jimbot.modules.chat.*; import ru.jimbot.modules.*;
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!н", new Cmd("!н","",39,name)); cmd.addCommand("!нов", new Cmd("!нов","",39,name)); cmd.addCommand("!новости", new Cmd("!новости","",39,name)); cmd.addCommand("!news", new Cmd("!news","",39,name)); cmd.addAuth("News","Вывод новостей"); out="Ok"; return; }
// Проверим полномочия if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return; if(!cmd.auth(proc,uin, "News")) return;
try{ String s = cmd.psp.loadText("./news.txt"); String[] ss = s.split(" "); for(int i=0;i<ss.length;i++){ proc.mq.add(uin,ss[i]); } } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin,"Ошибка "+ex.getMessage()); } Создание новостей: Code /** * Скрипт для расширения команд чата */
/** * При вызове скрипта определены следующие переменные: * ChatCommandProc cmd - ссылка на обработчик команд * IcqProtocol proc - ссылка на процесс обработки icq * String msg - текст сообщения с командой * String uin - кто отправил сообщение * String name - имя этого файла (при процедуре инсталяции скрипта) */
import ru.jimbot.modules.AbstractServer; import ru.jimbot.util.*; import ru.jimbot.modules.chat.*; import ru.jimbot.modules.*;
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!снов", new Cmd("!снов","$s",39,name)); cmd.addAuth("MakeNews","Создание новости"); out="Ok"; return; }
// Проверим полномочия if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return; if(!cmd.auth(proc,uin, "MakeNews")) return;
try { Vector v = cmd.getParser().parseArgs(msg); String sn = (String)v.get(0); java.sql.Time T = new java.sql.Time(new java.util.Date().getTime()); java.sql.Date D = new java.sql.Date(new java.util.Date().getTime()); OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream("./news.txt",true),"windows-1251"); String s = "[" + D +" "+ T + "] " + "n" + sn + "nn"; ow.write(s); ow.close(); Set rid = new HashSet(); Enumeration e = cmd.srv.cq.uq.keys(); while(e.hasMoreElements()){ String i = e.nextElement(); Users us = cmd.srv.us.getUser(i); if(us.state==UserWork.STATE_CHAT) rid.add(us.room); } for (int i:rid){ cmd.srv.cq.addMsg("Новость> "+ sn , uin, i); } Log.talk("Новость создана: " + sn); proc.mq.add(uin,"Новость успешно создана и разослана: n"+sn); } catch (Exception ex) { ex.printStackTrace(); Log.talk("Error save msg: " + ex.getMessage()); proc.mq.add(uin,"Ошибка добавления"); }
Copyright by © CooperOFF
|
|
|
| |
CooperOFF
Сообщений: 588
Репутация: 786
Offline
|
Сообщение # 9 | 17.05.2010 03:51 |
Название: Список админов в комнате Смысл: Вывод списка модераторов по форме Администрация:\n id - nick, [roomid]roomname Установка: 1)Установить скрипт OpChat или создать соответствующие полномочия 2)Создать файлы в папке ./services/ChatBot/scripts/command Code /** * Отправка всем опам, на базе "запереть в комнате" и "отослать во все комнаты" * */ import ru.jimbot.modules.AbstractServer; import ru.jimbot.util.*; import ru.jimbot.modules.chat.*; import ru.jimbot.modules.*; //для работы в тест9 этот участок кода удалите и пропишите в скрипте start.bsh пропишите команду и полномочие if(in.equals("install")){ //!send - название команды, при желании можно изменить на свое cmd.addCommand("!админы", new Cmd("!админы","",39,name)); cmd.addAuth("AdminList","Получить список админов"); out="Ok"; return; } if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return; if(!cmd.auth(proc,uin, "AdminList")) return; try{ String lst = ""; Enumeration e = cmd.srv.cq.uq.keys(); while(e.hasMoreElements()){ String i = e.nextElement(); Users us = cmd.srv.us.getUser(i); if (cmd.srv.us.authorityCheck(i, "OpChat")) { lst = lst + us.id+" - "+us.localnick+" , ["+us.room+"]"+cmd.srv.us.getRoom(us.room).getName()+"; n"; }
} proc.mq.add(uin,"Администрация: n "+lst); } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin,"Ошибка "+ex.getMessage()); }
Copyright by © CooperOFF
|
|
|
| |
CooperOFF
Сообщений: 588
Репутация: 786
Offline
|
Сообщение # 10 | 17.05.2010 03:51 |
Название: Перемещение новостей в архив Смысл: Перемещение всех новостей в архив, очистка файла новостей Установка: 1)Создать в корне бота папку archive 2)Создать файлы в папке ./services/ChatBot/scripts/command Code /** * Скрипт для перемещения файлов с новостями в архив * Imda */
/** * При вызове скрипта определены следующие переменные: * ChatCommandProc cmd - ссылка на обработчик команд * IcqProtocol proc - ссылка на процесс обработки icq * String msg - текст сообщения с командой * String uin - кто отправил сообщение * String name - имя этого файла (при процедуре инсталяции скрипта) */
import ru.jimbot.modules.AbstractServer; import ru.jimbot.util.*; import ru.jimbot.modules.chat.*; import ru.jimbot.modules.*;
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!уднов", new Cmd("!уднов","",39,name)); cmd.addAuth("DelNews","Удаление новостей"); out="Ok"; return; }
// Проверим полномочия if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return; if(!cmd.auth(proc,uin, "DelNews")) return;
try { //Создади OutputStreamWriter которым будем писать в бак-копию=) OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream("./archive/newsbak",true),"windows-1251"); //Объявим файл с новостями File news = new File ("./news.txt"); if (news.exists()) //Проверка на наличие файла с новостями { //Подгрузим все новости которых еще нет в архиве, т.е. !ВЕСЬ! файл новостей //Пишем новости в файл и закрываем OutputStreamWriter String s = cmd.psp.loadText("./news.txt"); ow.write(s); ow.close(); //ЕСЛИ НЕ НУЖНО- ЗАКАММЕНТИРУЙТЕ! (очищение файла новостей) //Если закамментировано, то быть осторожным с коммандой очистки, чтобы не было дупликатов новостей) news.delete(); OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("./news.txt",true),"windows-1251"); osw.write(""); osw.close(); proc.mq.add(uin,"Новости отправлены в архив"); Log.talk("Новости отправлены в архив"); } else proc.mq.add(uin,"Нет новостей"); } catch (Exception ex) { ex.printStackTrace(); Log.talk("Error save msg: " + ex.getMessage()); proc.mq.add(uin,"Ошибка удаления"); }
Copyright by © CooperOFF
|
|
|
| |
CooperOFF
Сообщений: 588
Репутация: 786
Offline
|
Сообщение # 11 | 17.05.2010 03:52 |
Название: Вывод случайного анекдота из файла Смысл: (См.выше) Важно: скорей всего, этот скрипт сильно нагрузит сервер. Установка: 1)Создать файл ./text/anekdots.txt , в конце анекдота - 2)Создать файлы в папке ./services/ChatBot/scripts/command Code /** * Скрипт для вывода случайного анекдота из файла * Imda */
/** * При вызове скрипта определены следующие переменные: * ChatCommandProc cmd - ссылка на обработчик команд * IcqProtocol proc - ссылка на процесс обработки icq * String msg - текст сообщения с командой * String uin - кто отправил сообщение * String name - имя этого файла (при процедуре инсталяции скрипта) */
import ru.jimbot.modules.AbstractServer; import ru.jimbot.util.*; import ru.jimbot.modules.chat.*; import ru.jimbot.modules.*; import java.util.Random;
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!анек", new Cmd("!анек","$s",39,name)); cmd.addCommand("!ха", new Cmd("!ха","$s",39,name)); cmd.addAuth("Anek","Сервис анекдотов"); out="Ok"; return; }
// Проверим полномочия if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return; if(!cmd.auth(proc,uin, "Anek")) return;
try { //Считываем анекдоты String s = cmd.psp.loadText("./text/anekdots.txt"); //Разбиваем текст на куски, в качестве разделителя будем использовать String[] ss = s.split(""); int R = (int) ((Math.random()*ss.length));
proc.mq.add(uin,"Anekdot>> n"+ss[R]); } catch (Exception ex) { ex.printStackTrace(); Log.talk("Error save msg: " + ex.getMessage()); proc.mq.add(uin,"Обшибка " + ex.getMessage()); }
Copyright by © CooperOFF
|
|
|
| |
CooperOFF
Сообщений: 588
Репутация: 786
Offline
|
Сообщение # 12 | 17.05.2010 03:54 |
Название: Работа с личной инфой Смысл: Создаем и просматриваем инфу о юзерах. Право InfoView дает право просматривать инфу о всех, кроме тех, для кого применен флаг IsModer. Для просмотра инфы таких юзеров, надо иметь право InfoViewMod Для задания инфы о себе пишем комманду: !осебе для просмотра: !инфо Установка: 1)Создать папку UI в корне бота 2)Создать файлы скриптов в папке ./services/ChatBot/scripts/command Code /** * Скрипт для задания личной инфы. * !осебе * Imda */
/** * При вызове скрипта определены следующие переменные: * ChatCommandProc cmd - ссылка на обработчик команд * IcqProtocol proc - ссылка на процесс обработки icq * String msg - текст сообщения с командой * String uin - кто отправил сообщение * String name - имя этого файла (при процедуре инсталяции скрипта) */
import ru.jimbot.modules.AbstractServer; import ru.jimbot.util.*; import ru.jimbot.modules.chat.*; import ru.jimbot.modules.*;
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!осебе", new Cmd("!осебе","$s",39,name)); cmd.addAuth("SetInfo","Установка личной инфы"); out="Ok"; return; }
// Проверим полномочия if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return; if(!cmd.auth(proc,uin, "SetInfo")) return;
try { Vector v = cmd.getParser().parseArgs(msg); String sn = (String)v.get(0); int len = sn.length(); if (!(len>1000)){ java.sql.Time T = new java.sql.Time(new java.util.Date().getTime()); java.sql.Date D = new java.sql.Date(new java.util.Date().getTime()); sn = sn + "n" + "Обновлено:" + D +" "+ T; Users us = cmd.srv.us.getUser(uin); File Persona = new File ("./UI/"+us.id+".txt"); if (Persona.exists()) Persona.delete(); OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream("./UI/"+us.id+".txt",true),"windows-1251"); ow.write(sn); ow.close(); Log.talk("Инфа обновлена: "+us.id+": " + sn); proc.mq.add(uin,"Информация успешно обновлена: n"+sn); } else proc.mq.add(uin,"Сликом длинная инфа (>1000). Инфа не изменена"); } catch (Exception ex) { ex.printStackTrace(); Log.talk("Error save msg: " + ex.getMessage()); proc.mq.add(uin,"Ошибка изменения инфы "+ ex.getMessage()); } Code /** * Скрипт для просмотра инфы * !инфо * !i * !info * !и * Imda */
/** * При вызове скрипта определены следующие переменные: * ChatCommandProc cmd - ссылка на обработчик команд * IcqProtocol proc - ссылка на процесс обработки icq * String msg - текст сообщения с командой * String uin - кто отправил сообщение * String name - имя этого файла (при процедуре инсталяции скрипта) */
import ru.jimbot.modules.AbstractServer; import ru.jimbot.util.*; import ru.jimbot.modules.chat.*; import ru.jimbot.modules.*;
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!и", new Cmd("!и","$n",39,name)); cmd.addCommand("!i", new Cmd("!i","$n",39,name)); cmd.addAuth("InfoView","Просмотр инфы"); cmd.addAuth("InfoViewMod","Просмотр инфы о модерах"); cmd.addAuth("IsModer","Инфа модера"); out="Ok"; return; }
// Проверим полномочия if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return; if(!cmd.auth(proc,uin, "InfoView")) return;
try{ Vector v = cmd.getParser().parseArgs(msg); int id = (Integer)v.get(0); Users u = cmd.srv.us.getUser(id); String s = cmd.psp.loadText("./UI/"+id+".txt"); File Persona = new File ("./UI/"+id+".txt"); if(u.id==0){ proc.mq.add(uin,"Пользователь не найден"); return; } else if (cmd.auth(proc,u.sn, "IsModer")){ if (cmd.auth(proc,uin, "InfoViewMod")){ if (Persona.exists()) proc.mq.add(uin,"Инфа о "+u.localnick+":n"+s); else proc.mq.add(uin,u.localnick+" не задал личную информацию"); } else proc.mq.add(uin,"Инфа о "+u.localnick+" Вам недоступна"); } else if (!cmd.auth(proc,u.sn, "IsModer")){ if (Persona.exists()) proc.mq.add(uin,"Инфа о "+u.localnick+":n"+s); else proc.mq.add(uin,u.localnick+" не задал личную информацию"); } } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin,"Ошибка "+ex.getMessage()); }
Copyright by © CooperOFF
|
|
|
| |
CooperOFF
Сообщений: 588
Репутация: 786
Offline
|
Сообщение # 13 | 17.05.2010 03:55 |
Название: Вывод содержимого файла во все комнаты Смысл: Дописал скрипт сушки для вывода содержимого файла во все комнаты. Работает так: !! <имя файла> файл должен лежать в папке text в корне бота и иметь расширение .txt Удобно для вывода правил чата, напоминаний читать хелпы и мануалы. Установка: 1)Создать нужный файл в папке ./text/ 2)Создать файл скрипта с расширением .bsh в папке ./services/ChatBot/scripts/command Code /** * Скрипт предназначен для отправки сообщения из файла во все комнаты * * Для работы скрипта его нужно скопировать в папку servicesChatBotscriptscommand * * Пример использование команды: "!! файлБезРаширения" * (c) Sushka 2 * Редакция Imda */ import ru.jimbot.modules.AbstractServer; import ru.jimbot.util.*; import ru.jimbot.modules.chat.*; import ru.jimbot.modules.*; //для работы в тест9 этот участок кода удалите и пропишите в скрипте start.bsh пропишите команду и полномочие if(in.equals("install")){ //!send - название команды, при желании можно изменить на свое cmd.addCommand("!!", new Cmd("!!","$s",39,name)); cmd.addAuth("allroom_filemessage","Содержимое файла во все комнаты '!! file'"); out="Ok"; return; } if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return; if(!cmd.auth(proc,uin, "allroom_filemessage")) return; try{ Vector v = cmd.getParser().parseArgs(msg); String ff = (String)v.get(0); File mes = new File ("./text/"+ff+".txt"); if(ff.equals("")||ff.equals(" "))return; if (mes.exists()){ Enumeration e = cmd.srv.cq.uq.keys(); Set rid = new HashSet(); while(e.hasMoreElements()){ String i = e.nextElement(); Users us = cmd.srv.us.getUser(i); if(us.state==UserWork.STATE_CHAT) rid.add(us.room); } String s = cmd.psp.loadText("./text/"+ff+".txt"); String[] ss = s.split(" "); for (int i:rid){ for(int ii=0;ii<ss.length;ii++){ cmd.srv.cq.addMsg(ss[ii],"0",i); } } proc.mq.add(uin,"Содержимое файла "+ff+".txt отправлено"); } else proc.mq.add(uin,"Такого файла не существует"); } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin,"Ошибка "+ex.getMessage()); }
Copyright by © CooperOFF
|
|
|
| |
CooperOFF
Сообщений: 588
Репутация: 786
Offline
|
Сообщение # 14 | 17.05.2010 03:58 |
Название: Организация службы жалоб Смысл: Решил сделать возможным ябедничать на супостатов) !жалоба !жалобы !жалобы Установка: 1)Создать папку pet в корне бота 2)Создать файлы *.bsh скриптов в папке ./services/ChatBot/scripts/command Code /** * Скрипт для добавления жалоб * !жалоба */
import ru.jimbot.modules.AbstractServer; import ru.jimbot.util.*; import ru.jimbot.modules.chat.*; import ru.jimbot.modules.*;
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!жалоба", new Cmd("!жалоба","$n $s",39,name)); cmd.addAuth("Galoba","Жалоба на юзера"); out="Ok"; return; }
// Проверим полномочия if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return; if(!cmd.auth(proc,uin, "Galoba")) return;
try{ Vector v = cmd.getParser().parseArgs(msg); int i = (Integer)v.get(0); String pt = (String)v.get(1); Users u = cmd.srv.us.getUser(i); Users us = cmd.srv.us.getUser(uin); OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream("./pet/"+u.id,true),"windows-1251"); java.sql.Date D = new java.sql.Date(new java.util.Date().getTime()); ow.write(D+" ["+us.id+"]"+us.localnick+":"+pt+"n"); ow.close(); proc.mq.add(uin,"Жалоба сохранена и будет рассмотрена"); } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin,"Ошибка "+ex.getMessage()); } Code /** * Просмотр жалоб. * !жалобы - количество жалоб, табличко * !жалобы - жалобы на юзера * Imda */
import ru.jimbot.modules.AbstractServer; import ru.jimbot.util.*; import ru.jimbot.modules.chat.*; import ru.jimbot.modules.*;
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!жалобы", new Cmd("!жалобы","$s",39,name)); cmd.addAuth("Galobs","Список жалоб"); out="Ok"; return; } if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return; if(!cmd.auth(proc,uin, "Galobs")) return; try{ Vector v = cmd.getParser().parseArgs(msg); String smsg = (String)v.get(0); String l; if(smsg.equals("")||smsg.equals(" ")) { File pets = new File ("./pet/"); String[] fl = pets.list(); //Список файлов fl l = "Жалобы:n"; //Начало отчета l l += "U.id - Pet.Amnt:"+"n"; //Добавили в строку ИД, петиции (Заглавие таблицы) for(int i=0;i
Copyright by © CooperOFF
|
|
|
| |
CooperOFF
Сообщений: 588
Репутация: 786
Offline
|
Сообщение # 15 | 17.05.2010 03:59 |
Название: Замена стандартного входа в чат (По просьбе юзера morgan А также, возможность автоперемещать на свободнейший уин (По просьбе юзера HParaLoN Смысл: Возможность заменить сообщения, разгрузка номеров Установка: 1)Создать файлы *.bsh скриптов в папке ./services/ChatBot/scripts/command 2)ЕСЛИ НАДО АВТОМАТИЧЕСКИ ПЕРЕМЕЩАТЬ ЮЗЕРА, СОЗДАТЬ ФАЙЛ "AutoUin" ЛЮБОГО СОДЕРЖАНИЯ В КОРНЕ БОТА Code /** * Альтернатива входу. * ЕСЛИ НАДО АВТОМАТИЧЕСКИ ПЕРЕМЕЩАТЬ ЮЗЕРА, СОЗДАТЬ ФАЙЛ "AutoUin" ЛЮБОГО СОДЕРЖАНИЯ В КОРНЕ БОТА * Редактировать сообщения MESSAGE (Для входящего) и MESSAGE2 (Для всех прочих) * Imda */
import ru.jimbot.modules.AbstractServer; import ru.jimbot.util.*; import ru.jimbot.modules.chat.*; import ru.jimbot.modules.*;
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!чат", new Cmd("!чат","",39,name)); cmd.addCommand("!chat", new Cmd("!chat","",39,name)); cmd.addCommand("!ч", new Cmd("!чат","",39,name)); cmd.addCommand("!вход", new Cmd("!вход","",39,name)); cmd.addCommand("!enter", new Cmd("!enter","",39,name)); // cmd.addAuth("room","Переход по комнатам"); out="Ok"; return; }
// Проверим полномочия //if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return; //if(!cmd.auth(proc,uin, "roomgo")) return; try{ String MESSAGE = "Вы вошли в чат"; String MESSAGE2 = " вошел в чат"; Users uss = cmd.srv.us.getUser(uin); boolean f = false; if(uss.localnick==null || uss.localnick.equals("") || uss.state==UserWork.STATE_NO_REG) { proc.mq.add(uin, "Прежде чем войти в чат, необходимо зарегистрироваться."); return; } if (uss.state==UserWork.STATE_CHAT) return; //Юзер уже в чате if (uss.state==UserWork.STATE_NO_CHAT) { Log.info("Add contact " + uin); if(proc.isNoAuthUin(uin)) proc.mq.add(uin, "Чтобы бот видел ваш статус - авторизуйте его", 2); proc.addContactList(uin); uss.state = UserWork.STATE_CHAT; uss.basesn = proc.baseUin; cmd.srv.us.updateUser(uss); cmd.srv.cq.addMsg(uss.localnick + MESSAGE2, uss.sn, uss.room); proc.mq.add(uin,MESSAGE); f = true; } if (uss.state==UserWork.STATE_OFFLINE) { uss.state = UserWork.STATE_CHAT; uss.basesn = proc.baseUin; cmd.srv.us.updateUser(uss); proc.mq.add(uin,MESSAGE); if(cmd.psp.getBooleanProperty("chat.showChangeUserStatus")) cmd.srv.cq.addMsg(uss.localnick + MESSAGE2, uss.sn, uss.room); } Log.talk(uss.localnick + MESSAGE2); cmd.srv.us.db.log(uss.id,uin,"STATE_IN",uss.localnick + MESSAGE2,uss.room); cmd.srv.us.db.event(uss.id, uin, "STATE_IN", 0, "", uss.localnick + MESSAGE2); cmd.srv.cq.addUser(uin,proc.baseUin, uss.room); if(f){ File acu = new File ("./AutoUin"); if (!acu.exists()) { if(cmd.srv.us.getCurrUinUsers(uss.basesn)>cmd.psp.getIntProperty("chat.maxUserOnUin")){ proc.mq.add(uin,"Данный номер слишком загружен, вы будете автоматически переведены на ближайший свободный номер."); String s = cmd.srv.us.getFreeUin(); uss.basesn = s; cmd.srv.us.updateUser(uss); cmd.srv.cq.changeUser(uin, s); proc.mq.add(uin,"Сообщения теперь будут приходить с номера " + s); } } else { proc.mq.add(uin,"Вы будете автоматически переведены на ближайший свободный номер."); String s = cmd.srv.us.getFreeUin(); uss.basesn = s; cmd.srv.us.updateUser(uss); cmd.srv.cq.changeUser(uin, s); proc.mq.add(uin,"Сообщения теперь будут приходить с номера " + s); } } } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin,ex.getMessage()); } Замена выхода: Code /** * Альтернатива выходу. * Редактировать сообщения MESSAGE (Для выходящего) и MESSAGE2 (Для всех прочих) * Imda */
import ru.jimbot.modules.AbstractServer; import ru.jimbot.util.*; import ru.jimbot.modules.chat.*; import ru.jimbot.modules.*;
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!вых", new Cmd("!вых","",39,name)); cmd.addCommand("!выход", new Cmd("!выход","",39,name)); cmd.addCommand("!exit", new Cmd("!exit","",39,name)); out="Ok"; return; }
try{ String MESSAGE = "Вы вышли"; String MESSAGE2 = " вышел из чата"; Users uss = cmd.srv.us.getUser(uin); if (uss.state==UserWork.STATE_CHAT || uss.state==UserWork.STATE_OFFLINE) { if(!ChatProps.getInstance(cmd.srv.getName()).getBooleanProperty("chat.NoDelContactList")){ Log.info("Delete contact " + uin); proc.RemoveContactList(uin); } } else return; // Юзера нет в чате - игнорируем команду uss.state = UserWork.STATE_NO_CHAT; cmd.srv.us.updateUser(uss); Log.talk(uss.localnick + MESSAGE2); cmd.srv.us.db.log(uss.id,uin,"STATE_OUT",uss.localnick + " Ушел из чата",uss.room); cmd.srv.us.db.event(uss.id, uin, "STATE_OUT", 0, "", uss.localnick + " Ушел из чата"); cmd.srv.cq.addMsg(uss.localnick + MESSAGE2, uss.sn, uss.room); proc.mq.add(uin,MESSAGE); cmd.srv.cq.delUser(uin); } catch (Exception ex){ ex.printStackTrace(); proc.mq.add(uin,ex.getMessage()); }
Copyright by © CooperOFF
|
|
|
|
|