(По просьбе юзера morgan
А также, возможность автоперемещать на свободнейший уин
(По просьбе юзера HParaLoN
Смысл: Возможность заменить сообщения, разгрузка номеров
Установка:
1)Создать файлы *.bsh скриптов в папке ./services/ChatBot/scripts/command
2)ЕСЛИ НАДО АВТОМАТИЧЕСКИ ПЕРЕМЕЩАТЬ ЮЗЕРА, СОЗДАТЬ ФАЙЛ "AutoUin" ЛЮБОГО СОДЕРЖАНИЯ В КОРНЕ БОТА
/** * Альтернатива входу. * ЕСЛИ НАДО АВТОМАТИЧЕСКИ ПЕРЕМЕЩАТЬ ЮЗЕРА, СОЗДАТЬ ФАЙЛ "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()); }
Замена выхода:
/** * Альтернатива выходу. * Редактировать сообщения 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()); }