Вы вошли как: Гость Вход      Регистрация
Сегодня

02.09.2015
Среда
Новые сообщения Участники Правила форума Поиск RSS Подписки

Страница 1 из 3123»
Модератор форума: XXXBOY, MAKESERV 
Форум » Все об ICQ » ICQ чаты » Готовые 100% работающие скрипты для Jimbot
Готовые 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
Форум » Все об ICQ » ICQ чаты » Готовые 100% работающие скрипты для Jimbot
Страница 1 из 3123»
Поиск:
-->
Интернет журнал SOFTICQ - Ежедневно новости, статьи, обзоры от лучших блоггеров журнала. Все о техники из мира гаджетов и технологий.
Использование материалов сайта приветствуется с указанием гиперссылки на журнал SOFTICQ.

Сегодня были:
Рейтинг@Mail.ru Rambler's Top100 Яндекс.Метрика Интернет журнал soft-icq.ru
Все права защищены | Copyright by (c) soft-icq.ru 2009-2013