Суть: Скрипт позволяет оставить мнения о пользователях/прочитать мнения о пользователях
Авторы: Imda(взят за основу скрипт его сервиса жалоб), DeadInside(редактирование скрипта + проверка на наличие текста мнения), REDOSS & olegteror (Помощь при реализации проверки)
Инструкция по установке:
1) Создаем в корне бота папку mneniya
2) В \services\ChatBot\scripts\command создадим файл Mnen_add.bsh
3) Зальем в Mnen_add.bsh вот это:
/** * Скрипт для добавления мнений * !мнение <id> <text> */ 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("Mneniya","Сервис мнений"); out="Ok"; return; } //Создать папку mneniya в корне бота // Проверим полномочия if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return; if(!cmd.auth(proc,uin, "Mneniya")) 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); if (pt.equals("") || pt.equals(" ")) { proc.mq.add(uin, "Введите текст мнения! (!мнение <id> <text>)"); return; } OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream("./mneniya/"+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()); }4) Создадим в той же директории файл Mnen_read.bsh
5) Зальем в Mnen_read.bsh следующий скрипт:
/** * Просмотр мнений. * !мнения - количество мнений, таблица * !мнения <id> - мнения юзера */ 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("mneniya","Сервис мнений (просмотр)"); out="Ok"; return; } if(!cmd.isChat(proc,uin) && !cmd.psp.testAdmin(uin)) return; if(!cmd.auth(proc,uin, "Mneniya")) 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 ("./mneniya/"); String[] fl = pets.list(); //Список файлов fl l = "Мнения о пользователе:\n"; //Начало отчета l l += "ID - Количество:"+"\n"; //Добавили в строку ИД, петиции (Заглавие таблицы) for(int i=0;i<fl.length;i++) //Пробегаем все файлы fl[i] { // String ffl = cmd.psp.loadText("./mneniya/"+fl[i]); //Читаем файл String[] sffl = ffl.split("\n"); //Бьем на строки l+=fl[i]+" - "+sffl.length+"\n"; //Вписываем в отчет данные } } else { String pl = "./mneniya/"+smsg; File g = new File (pl); if (g.exists()){ String s = cmd.psp.loadText("./mneniya/"+smsg); l="Мнения о пользователе ["+smsg+"]\n"; Users u = cmd.srv.us.getUser(smsg); l+=s; } else { l="Мнений нет"; } } proc.mq.add(uin,l); } catch (Exception ex) { ex.printStackTrace(); proc.mq.add(uin,"Ошибка "+ex.getMessage()); }6) Выполним запрос в таблицу help следующего вида:
INSERT INTO `help` ( `id` , `auth` , `command` , `info` ) VALUES ('100', 'Mneniya', '!мнение <id> <text>', 'Оставить мнение о пользователе'); INSERT INTO `help` ( `id` , `auth` , `command` , `info` ) VALUES ('101', 'Mneniya', '!мнение 0 <text>', 'Оставить мнение о чате'); INSERT INTO `help` ( `id` , `auth` , `command` , `info` ) VALUES ('102', 'mneniya', '!мнения', 'Листинг мнений (ид - количество)'); INSERT INTO `help` ( `id` , `auth` , `command` , `info` ) VALUES ('103', 'mneniya', '!мнения <id>', 'Прочесть мнения о пользователе');7) Перезапускаем бот
Вот вообщем выложил... Может кому пригодится...
P.S.: Кто может помочь с проверкой на пустое сообщение в первом скрипте, помогите плз..
Сообщение отредактировал DeadInside: 29 Август 2010 - 17:11