Для посетителей темы: В данной теме выкладываются только готовые скрипты, которые прошли тест и 100% рабочие. Вопросы типа: "А как его установить?", "А у меня нифига не работает" и т.д. будут незамедлительно удалены!
Для тех кто выкладывает скрипты: Указываем название скрипта Указываем смысл его работы Указываем процесс установки Так же можно указать какие либо дополнительные указания, пожелания, требования по использованию вашего скрипта
Если скрипт принадлежит не вам: Указываем координаты автора скрипта Скрипты разрешается выкладывать только с разрешения автора.
Если вы автор скрипта и он был выложен без вашего согласия: Незамедлительно сообщите администрации Предоставьте доказательство принадлежности скрипта вам.
С уважением Администрация форума JimBot.su С уважением Sma1L
Сообщение отредактировал 1ldar - Воскресенье, 05.02.2012, 19:44
Название: Вывод содержимого файла во все комнаты Смысл: Дописал скрипт сушки для вывода содержимого файла во все комнаты. Работает так: !! <имя файла> файл должен лежать в папке text в корне бота и иметь расширение .txt Удобно для вывода правил чата, напоминаний читать хелпы и мануалы. Установка: 1)Создать нужный файл в папке ./text/ 2)Создать файл скрипта с расширением .bsh в папке ./services/ChatBot/scripts/command
//для работы в тест9 этот участок кода удалите и пропишите в скрипте start.bsh пропишите команду и полномочие if(in.equals("install")){ //!send - название команды, при желании можно изменить на свое cmd.addCommand("!!", new Cmd("!!","$s",39,name)); cmd.addAuth("allroom_filemessage","Содержимое файла во все комнаты '!! file'"); out="Ok"; return; }
Название: Мини-скрипт, для установки других скриптов "на лету", безе перезагрузки. Смысл: Для тех кто еще сам не дотренькал) !скр Установка и использование: Создать файл скрипта в папке ./services/ChatBot/scripts/command, вместо выделенного вставить содержимое секции if(in.equals("install")){ } из скрипта, который вы хотите установить, заменив при этом "name" на имя файла нужного вам скрипта в кавычках БЕЗ расширения .bsh
/** * Скрипт установки других скриптов "на лету", без перезагрузки */
/** * При вызове скрипта определены следующие переменные: * ChatCommandProc cmd - ссылка на обработчик команд * IcqProtocol proc - ссылка на процесс обработки icq * String msg - текст сообщения с командой * String uin - кто отправил сообщение * String name - имя этого файла (при процедуре инсталяции скрипта) */
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!скр", new Cmd("!скр","$n",39,name)); cmd.addAuth("InstNewScr","Установить скрипты"); out="Ok"; return; }
try{ cmd.addCommand("!!", new Cmd("!!","$s",39,"Msg_FILE_All_Rooms")); cmd.addAuth("allroom_filemessage","Содержимое файла во все комнаты '!! file'"); out="Ok";
Название: Работа со списком юзеров 1.0 (Версия на правах) Смысл: НЕ РАБОТАЕТ ДЛЯ TestAdmin, т.е. Админам, чьи уины написаны в настройках бота никак не спрятаться Список юзеров: !кто Спрятаться из списка: !вкусты Установка: 1)Создать *.bsh файлы скриптов в папке ./services/ChatBot/scripts/command
/** * Список юзеров в чате, сделано из сорцов ядра * Imda */
if(in.equals("install")){ cmd.addCommand("!who", new Cmd("!who","",39,name)); cmd.addCommand("!кто", new Cmd("!кто","",39,name)); cmd.addCommand("?", new Cmd("?","",39,name)); cmd.addCommand("+аа", new Cmd("+аа","",39,name)); cmd.addCommand("+aa", new Cmd("+aa","",39,name)); cmd.addAuth("WhoList","Получить список юзеров в списке"); out="Ok"; return; }
Название: Работа со списком юзеров 1.1 (Версия на правах+файл) Смысл: Переделал для TestAdmin, но больше грузит серв.. Непринципиально, если хорошая машина, лично я буду использовать более старую версию) Список юзеров: !кто Спрятаться из списка: !вкусты Спрятать всех ТА из списка: ! Установка: 1)Создать *.bsh файлы скриптов в папке ./services/ChatBot/scripts/command
/** * Список юзеров в чате, сделано из сорцов ядра * Imda */
if(in.equals("install")){ cmd.addCommand("!who", new Cmd("!who","",39,name)); cmd.addCommand("!кто", new Cmd("!кто","",39,name)); cmd.addCommand("?", new Cmd("?","",39,name)); cmd.addCommand("+аа", new Cmd("+аа","",39,name)); cmd.addCommand("+aa", new Cmd("+aa","",39,name)); cmd.addAuth("WhoList","Получить список юзеров в списке"); cmd.addAuth("Show","Видимость в списке"); out="Ok"; return; }
Название: Организация службы жалоб Смысл: Решил сделать возможным ябедничать на супостатов) !жалоба !жалобы !жалобы Установка: 1)Создать папку pet в корне бота 2)Создать файлы *.bsh скриптов в папке ./services/ChatBot/scripts/command
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!жалоба", new Cmd("!жалоба","$n $s",39,name)); cmd.addAuth("Galoba","Жалоба на юзера"); out="Ok"; 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()); }
/** * Просмотр жалоб. * !жалобы - количество жалоб, табличко * !жалобы - жалобы на юзера * Imda */
/** * При вызове скрипта определены следующие переменные: * ChatCommandProc cmd - ссылка на обработчик команд * IcqProtocol proc - ссылка на процесс обработки icq * String msg - текст сообщения с командой * String uin - кто отправил сообщение * String name - имя этого файла (при процедуре инсталяции скрипта) */
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!надо", new Cmd("!надо","$s",39,name)); cmd.addAuth("mktodo","Добавление в ТОДО"); out="Ok"; return; }
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!todo", new Cmd("!todo","",39,name)); cmd.addCommand("!тодо", new Cmd("!тодо","",39,name)); cmd.addAuth("todo","Список TODO"); out="Ok"; return; }
Название: Замена стандартного входа в чат (По просьбе юзера morgan А также, возможность автоперемещать на свободнейший уин (По просьбе юзера HParaLoN Смысл: Возможность заменить сообщения, разгрузка номеров Установка: 1)Создать файлы *.bsh скриптов в папке ./services/ChatBot/scripts/command 2)ЕСЛИ НАДО АВТОМАТИЧЕСКИ ПЕРЕМЕЩАТЬ ЮЗЕРА, СОЗДАТЬ ФАЙЛ "AutoUin" ЛЮБОГО СОДЕРЖАНИЯ В КОРНЕ БОТА
/** * Альтернатива входу. * ЕСЛИ НАДО АВТОМАТИЧЕСКИ ПЕРЕМЕЩАТЬ ЮЗЕРА, СОЗДАТЬ ФАЙЛ "AutoUin" ЛЮБОГО СОДЕРЖАНИЯ В КОРНЕ БОТА * Редактировать сообщения MESSAGE (Для входящего) и MESSAGE2 (Для всех прочих) * Imda */
//Установка скрипта как обработчика команды 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); }
//Установка скрипта как обработчика команды 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()); }
Название: Смена х-статуса По просьбе юзера tuz21 Смысл: Возможность из асю сменить х-статус. Установка: 1)Создать файлы *.bsh скриптов в папке ./services/ChatBot/scripts/command 2)ЕСЛИ НЕ НАДО ПЕРЕЗАПУСКАТЬ АВТОМАТИЧЕКСКИ, ЗАРЕМИРОВАТЬ СООТВЕТСТВУЮЩУЮ СТРОКУ
/** * При вызове скрипта определены следующие переменные: * ChatCommandProc cmd - ссылка на обработчик команд * IcqProtocol proc - ссылка на процесс обработки icq * String msg - текст сообщения с командой * String uin - кто отправил сообщение * String name - имя этого файла (при процедуре инсталяции скрипта) */
Название: Альтернатива стандартному кику, оповещает ВСЕХ юзеров чата v1.1 По просьбе юзера Мультик Смысл: Кик с оповещением всех юзеров во всех комнатах СКРИПТ ИСПРАВЛЕН) Ошибки больше нету) Установка: 1)Создать файлы *.bsh скриптов в папке ./services/ChatBot/scripts/command
/** * Скрипт замена стандартного кика, вывод сапщения во все комнаты * Imda */
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!kick", new Cmd("!kick","$c $n $s",39,name)); out="Ok"; return; }
// Проверим полномочия if(!cmd.isChat(proc,uin) && !psp.testAdmin(uin)) return; if(!cmd.auth(proc,uin, "kickone")) return; try{ Vector v = cmd.getParser().parseArgs(msg); int moder_id = cmd.srv.us.getUser(uin).id; String s = (String)v.get(0); int t = (Integer)v.get(1); // if(t<=0){ // proc.mq.add(uin,"Время кика должно быть больше нуля"); // return; // } String r = (String)v.get(2); int id=0; try{ id = Integer.parseInt(s); } catch (Exception ex){ proc.mq.add(uin,"Ошибка в команде"); return; } String i = cmd.srv.us.getUser(id).sn; if(cmd.testKick(i)>0 && !auth(proc,uin, "chgkick")){ proc.mq.add(uin,"Вы не можете изменить время кика"); return; } // if(!i.equals("")) { if(t==0){ cmd.tkick(proc, i, ChatProps.getInstance(cmd.srv.getName()).getIntProperty("chat.defaultKickTime"), moder_id,""); proc.mq.add(uin,"Юзер выпнут на: " + cmd.srv.testKick(i)); Set rid = new HashSet(); // переменная - набор комнат Enumeration ee = cmd.srv.cq.uq.keys(); // пробегаем while(ee.hasMoreElements()){ // все String il = ee.nextElement(); // комнаты Users us = cmd.srv.us.getUser(il); // и создаем if(us.state==UserWork.STATE_CHAT) // их список rid.add(us.room); // собсно, добавлем в список }
for (int il:rid){ cmd.srv.cq.addMsg("Инфо>>> юзер "+s+" выпнут на: " + cmd.testKick((String)il) , uin, il); //вывод сообщения в каждую комнату из набора rid } } else { if(r.equals("")){ proc.mq.add(uin,"Необходимо добавить причину кика"); return; } if(t>ChatProps.getInstance(cmd.srv.getName()).getIntProperty("chat.maxKickTime")) t=ChatProps.getInstance(cmd.srv.getName()).getIntProperty("chat.maxKickTime"); cmd.tkick(proc, i, t, moder_id, r); proc.mq.add(uin,"Юзер выпнут на: " + t);
Set rid = new HashSet(); // переменная - набор комнат Enumeration ee = cmd.srv.cq.uq.keys(); // пробегаем while(ee.hasMoreElements()){ // все String il = ee.nextElement(); // комнаты Users us = cmd.srv.us.getUser(il); // и создаем if(us.state==UserWork.STATE_CHAT) // их список rid.add(us.room); // собсно, добавлем в список }
for (int il:rid){ cmd.srv.cq.addMsg("Инфо>>> юзер "+s+" выпнут на: " + cmd.testKick((String)il) , uin, il); //вывод сообщения в каждую комнату из набора rid } } } catch (Exception ex) { ex.printStackTrace(); }
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!лучшие", new Cmd("!лучшие","",39,name)); cmd.addAuth("best","Вывод статистики лучших"); out="Ok"; return; }
Название: Скрипт вывода сообщений отправленной командой !adm Смысл: Удобно для тех у кого чат на сервере, ненадо лишний раз на сервер лазить. Команда: !админу Установка: Создать файл *.bsh скрипта в папке ./services/ChatBot/scripts/command
/** * Скрипт для расширения команд чата */
/** * При вызове скрипта определены следующие переменные: * ChatCommandProc cmd - ссылка на обработчик команд * IcqProtocol proc - ссылка на процесс обработки icq * String msg - текст сообщения с командой * String uin - кто отправил сообщение * String name - имя этого файла (при процедуре инсталяции скрипта) */
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!админу", new Cmd("!админу","",39,name)); cmd.addAuth("admsoob","Сообщения админу"); out="Ok"; return; }
try{ //Прочитаем текст из файла String s = cmd.psp.loadText("admin_msg.txt"); //Разбиваем текст на куски, в качестве разделителя будет использовате тег
String[] ss = s.split(" "); //По очереди отсылаем куски текста юзеру, точнее - помещаем их в очередь //исходящих сообщений уина, на котоором этот юзер сидит. for(int i=0;i
Название: Замена стандартного входа в чат с выводом ID А также, возможность автоперемещать на свободнейший уин Смысл: Возможность заменить сообщения, разгрузка номеров Установка: 1)Создать файлы *.bsh скриптов в папке ./services/ChatBot/scripts/command 2)ЕСЛИ НАДО АВТОМАТИЧЕСКИ ПЕРЕМЕЩАТЬ ЮЗЕРА, СОЗДАТЬ ФАЙЛ "AutoUin" ЛЮБОГО СОДЕРЖАНИЯ В КОРНЕ БОТА Авторы скрипта:Imda,модификация by MorGaN
//Установка скрипта как обработчика команды 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; }
Название: Альтернатива списку комнат, отображает кол-во юзеров в комнате Смысл: См. выше Установка: Создать файл *.bsh в папке ./services/ChatBot/scripts/command
/** * Список комнат, с кол-м юзеров в скобульках * Imda */
if(in.equals("install")){ cmd.addCommand("!комнаты", new Cmd("!комнаты","",39,name)); cmd.addCommand("!ск", new Cmd("!ск","",39,name)); cmd.addCommand("!rooms", new Cmd("!rooms","",39,name)); cmd.addCommand("!rl", new Cmd("!rl","",39,name)); cmd.addCommand("+а", new Cmd("+а","",39,name)); cmd.addCommand("+a", new Cmd("+a","",39,name)); out="Ok"; return; }
Название: Вход/Выход по комнатам Назначение: Для Замены текста при входе и выходе из комнат Установка: Для работы скрипта его нужно скопировать в папку \services\Имя_сервиса_чата\scripts\command Дополнительно: Это не мой скрипт, но я решил выложить
/** * Скрипт для расширения команд чата * Замена перехода в комнаты */
/** * При вызове скрипта определены следующие переменные: * ChatCommandProc cmd - ссылка на обработчик команд * IcqProtocol proc - ссылка на процесс обработки icq * String msg - текст сообщения с командой * String uin - кто отправил сообщение * String name - имя этого файла (при процедуре инсталяции скрипта) */
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!room", new Cmd("!room","$n",39,name)); cmd.addAuth("room","Переход по комнатам"); out="Ok"; return; }
Название: Скритп вывода 20 последних разбанов Назначение: позволяте отслеживать когда, кто и кого выпустил из бани Установка: скопируйте скрипт в папку \services\имя_сервиса\scripts\command
//Установка скрипта как обработчика команды if(in.equals("install")){ cmd.addCommand("!ubanlist", new Cmd("!ubanlist","",39,name)); cmd.addAuth("ubanlist","20 последний разбанов"); out="Ok"; return; }
try{ String host = ChatProps.getInstance(cmd.srv.getName()).getStringProperty("db.host"); String namedb = ChatProps.getInstance(cmd.srv.getName()).getStringProperty("db.dbname"); String user = ChatProps.getInstance(cmd.srv.getName()).getStringProperty("db.user"); String pass = ChatProps.getInstance(cmd.srv.getName()).getStringProperty("db.pass"); DBChat db; db = new DBChat(cmd.srv.getName()); db.openConnection(host, namedb, user, pass); String s = "20 последних разбанов:\n"; s+="Время|Пользователь|Кто разбанил\n"; try { PreparedStatement pst = db.getDb().prepareStatement("select time, user_id, user_id2 from events where type='UBAN' order by time desc"); ResultSet rs = pst.executeQuery(); for(int i=0;i<20;i++){ if(rs.next()){ s += "["+rs.getTimestamp(1)+"] "+ (rs.getInt(2)==0 ? "Admin" : cmd.srv.us.getUser(rs.getInt(2)).localnick)+"|" +rs.getInt(2)+"|,"+ (rs.getInt(3)==0 ? "Admin" : cmd.srv.us.getUser(rs.getInt(3)).localnick)+"|" +rs.getInt(3)+"|\n"; } } rs.close(); pst.close(); } catch (Exception ex) { ex.printStackTrace(); } proc.mq.add(uin,s); } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin,"Ошибка "+ex.getMessage()); }