1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Интерактивная справка

Тема в разделе "Дополнения для Jimbot", создана пользователем cerber, 20 фев 2015.

  1. TopicStarter Overlay
    cerber

    cerber Местный инквизитор Команда форума

    Регистрация:
    25.02.11
    Сообщения:
    7.927
    Симпатии:
    2.779
    Баллы:
    575
    Пол:
    Мужской
    Адрес:
    АДА
    Код:
    /**
    * JimBot - Java IM Bot
    * Copyright (C) 2010 JimBot project
    * This program is free software; you can redistribute it and/or
    * modify it under the terms of the GNU General Public License
    * as published by the Free Software Foundation; either version 2
    * of the License, or (at your option) any later version.
    *
    * This program is distributed in the hope that it will be useful,
    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    * GNU General Public License for more details.
    *
    * You should have received a copy of the GNU General Public License
    * along with this program; if not, write to the Free Software
    * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
    */
    
    package ru.jimbot.modules.chat;
    
    import java.util.Vector;
    import java.util.HashMap;
    import ru.jimbot.modules.Cmd;
    import ru.jimbot.protocol.IcqProtocol;
    import ru.jimbot.modules.CommandParser;
    import ru.jimbot.modules.CommandExtend;
    
    /**
    * Обработка команд
    * в ChatCommandProc
    *
    * public Help help;
    *
    * help = new Help(this);
    *
    * в пасер
    * if(help.commandHelp(proc, uin, mmsg)) return;
    *
    * @author Warik777
    * @author dimax
    * @author Static
    */
    
    public class Help {
    private HashMap<String, Cmd> commands = new HashMap<String, Cmd>();
    private CommandParser parser;
    private ChatCommandProc cmd;
    private HashMap<String, CommandExtend> helpMap;
    /**Creates a new instance of Help*/
    public Help(ChatCommandProc c) {
    parser = new CommandParser(commands);
    cmd = c;
    helpMap = new HashMap<String, CommandExtend>();
    init();
    }
    
    private void init() {
    commands.put("!help", new Cmd("!help","",1));
    commands.put("!справка", new Cmd("!справка", "", 1));
    commands.put("!помощь", new Cmd("!помощь", "", 1));
    }
    public boolean addCommand(String name, Cmd c) {
    boolean f = commands.containsKey(name);
    commands.put(name, c);
    return f;
    }
    public boolean commandHelp(IcqProtocol proc, String uin, String mmsg) {
    String tmsg = mmsg.trim();
    int tp = 0;
    if(helpMap.containsKey(uin))
    if(!helpMap.get(uin).isExpire())
    tp = parser.parseCommand(helpMap.get(uin).getCmd());
    else {
    tp = parser.parseCommand(tmsg);
    helpMap.remove(uin);
    }else
    tp = parser.parseCommand(tmsg);
    
    int tst=0;
    if(tp<0)
    tst = 0;
    else
    tst = tp;
    boolean f = true;
    switch (tst) {
    case 1:
    cHelp(proc, uin, mmsg);
    break;
    
    default:
    f = false;
    break;
    }
    return f;
    }
    
    
    //команды
    /**
    * Интерактивная справка
    * Специально для dim@xa
    * @param proc
    * @param uin
    * @param mmsg
    * @author StaTi©™
    * @rewrite dim@X
    */
    public void cHelp(IcqProtocol proc, String uin, String mmsg){
    try{
        String[] s ;
    int step = 0; //шаг
    String cm = ""; //команда
    Vector v1 = new Vector(); //полученые данные
    if (helpMap.containsKey(uin)){
    step = Integer.parseInt(helpMap.get(uin).getMsg()); //Узнаем на какой шаг нам надо попасть
    cm = helpMap.get(uin).getCmd(); // команда, нужна для второго и т.д. заходов
    v1 = helpMap.get(uin).getData();
    }
    switch (step){
    case 0: //Первый раз попали
    
    proc.mq.add(uin, "Справка:\n1 ~ Основные\n"+
    "2 ~ Развлечения\n"+
    "3 ~ Информационные\n"+
    "4 ~ Анкеты и мнения\n"+
    "5 ~ Рейтинговые\n"+
    "6 ~ Aдминские\n"+
    "Для выхода введите [0]");
    helpMap.put(uin, new CommandExtend(uin,mmsg,"1",v1,60000));
    break;
    case 1: //Второй раз попали
    //Обрабатываем полученные данные
    
    if(!mmsg.equals("1")
    ||!mmsg.equals("2")
    ||!mmsg.equals("3")
    ||!mmsg.equals("4")
    ||!mmsg.equals("5")
    ||!mmsg.equals("6")
    ||!mmsg.equals("0")){
    
    if(mmsg.trim().equals("1")){
    s = cmd.psp.loadText("./text/" + cmd.srv.getName() + "/help/osnovnie.txt").split("<br>");
    for (int i = 0; i < s.length; i++) {
    proc.mq.add(uin, s[i]);
    }
    helpMap.put(uin, new CommandExtend(uin,cm,"1",v1,10));
    return;
    }
    if(mmsg.trim().equals("2")){
    s =cmd.psp.loadText("./text/" + cmd.srv.getName() +"/help/razvle4enia.txt").split("<br>");
    for (int i = 0; i < s.length; i++) {
    proc.mq.add(uin, s[i]);
    }
    helpMap.put(uin, new CommandExtend(uin,cm,"1",v1,10));
    return;
    }
    if(mmsg.trim().equals("3")){
    s =cmd.psp.loadText("./text/" + cmd.srv.getName() + "/help/inform.txt").split("<br>");
    for (int i = 0; i < s.length; i++) {
    proc.mq.add(uin, s[i]);
    }
    helpMap.put(uin, new CommandExtend(uin,cm,"1",v1,10));
    return;
    }
    if(mmsg.trim().equals("4")){
    s =cmd.psp.loadText("./text/" + cmd.srv.getName() + "/help/anketi.txt").split("<br>");
    for (int i = 0; i < s.length; i++) {
    proc.mq.add(uin, s[i]);
    }
    helpMap.put(uin, new CommandExtend(uin,cm,"1",v1,10));
    return;
    }
    if(mmsg.trim().equals("5")){
    s =cmd.psp.loadText("./text/" + cmd.srv.getName() + "/help/reyting.txt").split("<br>");
    for (int i = 0; i < s.length; i++) {
    proc.mq.add(uin, s[i]);
    }
    helpMap.put(uin, new CommandExtend(uin,cm,"1",v1,10));
    return;
    }
    if(mmsg.trim().equals("6")){
    if (cmd.srv.us.authorityCheck(uin, "exthelp")) {
    s = cmd.psp.loadText("./text/" + cmd.srv.getName() + "/help/adminsky.txt").split("<br>");
    for (int i = 0; i < s.length; i++) {
    proc.mq.add(uin, s[i]);
    }
    helpMap.put(uin, new CommandExtend(uin,cm,"1",v1,10));
    return;
    }
    }
    
    if(mmsg.trim().equals("0")){
    proc.mq.add(uin, "Вы вышли из справочного меню!");
    helpMap.put(uin, new CommandExtend(uin,cm,"1",v1,10));
            return;
    }
    }
    
    
    proc.mq.add(uin, "Вы не правильно ввели цифру.Вы вышли. Наберите еще раз !справка");
    helpMap.put(uin, new CommandExtend(uin,cm,"1",v1,10));
    break;
    
    }
    }catch(Exception ex){
    ex.printStackTrace();
    proc.mq.add(uin,"Error: "+ex.getMessage());
    }
    }
    
    }
    Xpert™ и forZone нравится это.

Поделиться этой страницей