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

Модератор за смс на время

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

  1. TopicStarter Overlay
    cerber

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

    Регистрация:
    25.02.11
    Сообщения:
    8.184
    Симпатии:
    2.779
    Баллы:
    575
    Пол:
    Мужской
    Адрес:
    АДА
    автор - REDOSS
    ChatCommandProc

    Код:
    authObj.put("group_moder_sms", "Активировать пароль модератора за SMS");
    Код:
    commands.put("!модсмс", new Cmd("!модсмс", "$s",72));
    Основная процедура парсера команд
    Код:
    if(srv.us.getUser(uin).country == 1 & testGroupTimes(uin)==0){
    GroupNoTimes(proc, uin);
    Users us = srv.us.getUser(uin);
    us.country = 0;
    srv.us.updateUser(us);
    }
    Код:
    case 72:
    commandGroupsTimesmsmoder(proc, uin, parser.parseArgs(tmsg));
    break;
    Сама команда и используемые
    Код:
    /**
    * Проверяем имеет ли пользователь временые полномочия
    */
    private int testGroupTimes(String sn){
    //srv.us.updateUser(srv.us.getUser(uin);
    long tc = srv.us.getUser(sn).grouptime;
    long t = System.currentTimeMillis();
    return tc>t ? (int)(tc-t)/60000 : 0;
    }
    Код:
    /**
    * !модсмс pass - Купить право модератора на время
    * @author REDOSS
    * @param proc
    * @param uin
    * @param v
    * @param mmsg
    */
    public void commandGroupsTimesmsmoder(IcqProtocol proc, String uin, Vector v){
    if(!isChat(proc, uin) && !psp.testAdmin(uin)) return;
    if(!auth(proc, uin, "group_moder_sms")) return;
    try {
    String pass = (String)v.get(0);
    Users u = srv.us.getUser(uin);
    int num = 0;
    int day = psp.getIntProperty("sms.moder.day");
    if (pass.equals("")){
    proc.mq.add(uin,"Пустой пароль");
    return;
    }
    // читаем пароль
    PreparedStatement pst = (PreparedStatement) srv.us.db.getDb().prepareStatement("SELECT `id` FROM pravasms WHERE `txt` = ?  ");
    pst.setString(1,pass);
    ResultSet rs = pst.executeQuery();
    if(rs.next()){
    num = rs.getInt(1);
    } else {
    proc.mq.add(uin,"Неверный пароль");
    return;
    }
    rs.close();
    pst.close();
    setGrouptimes(u.sn,day);
    srv.us.getUser(uin).group = "moder";
    srv.us.getUser(uin).country = 1;
    boolean groupp = srv.us.setUserPropsValue(u.id, "group", "moder") &&
    srv.us.setUserPropsValue(u.id, "grant", "") &&
    srv.us.setUserPropsValue(u.id, "revoke", "");
    srv.us.clearCashAuth(u.id);
    // удалим пароль
    String q = "DELETE FROM pravasms WHERE id="+num+" LIMIT 1";
    PreparedStatement pst2 = (PreparedStatement) srv.us.db.getDb().prepareStatement(q);
    pst2.execute();
    pst2.close();
    srv.us.updateUser(u);
    proc.mq.add(uin,"Вы успешно активировали право модератора на " + psp.getIntProperty("sms.moder.day") + " день(ей)");
    srv.cq.addMsg("Пользователь " + u.localnick + "|" + u.id + "| купил право модератора на " + psp.getIntProperty("sms.moder.day") + " день(ей)", "", u.room);
    } catch (Exception ex){
    ex.printStackTrace();
    proc.mq.add(uin,"Ошибка " + ex.getMessage());
    }
    }
    Код:
    /**
    * @author mmaximm
    * Устанавливаем дату действия группы
    * @param uin
    * @param day
    */
    public void setGrouptimes(String uin, int day){
    Users us = srv.us.getUser(uin);
    Date date;
    //if(us.grouptime>System.currentTimeMillis()){
    //date = new Date(us.grouptime);
    //}else{
    date = new Date();
    //}
    date.setDate(date.getDate() + day);
    us.grouptime = date.getTime();
    srv.us.updateUser(us);
    }
    Код:
    /**
    * Снятие полномочий при окрнчании времени
    * @author fraer72
    */
    private void GroupNoTimes(IcqProtocol proc, String uin){
    srv.us.getUser(uin).group = "user";
    boolean group = srv.us.setUserPropsValue(srv.us.getUser(uin).id, "group", "user") &&
    srv.us.setUserPropsValue(srv.us.getUser(uin).id, "grant", "") &&
    srv.us.setUserPropsValue(srv.us.getUser(uin).id, "revoke", "");
    srv.us.clearCashAuth(srv.us.getUser(uin).id);
    if(srv.us.getUser(uin).state == UserWork.STATE_CHAT){
    proc.mq.add(uin,"Твоё время в группе " + srv.us.getUser(uin).group + " оконченно\n" + psp.getStringProperty("sms.txt"));
    }
    }
    }
    в ChatProps
    Код:
    setIntProperty("sms.moder.day",28);
    setStringProperty("sms.txt","Для того чтобы его продолжить отправьте смс на номер 1111 с текстом 1111");
    
    new UserPreference(UserPreference.INTEGER_TYPE,"sms.moder.day","Колличество дней модератора",getIntProperty("sms.moder.day")),
    new UserPreference(UserPreference.STRING_TYPE,"sms.txt","Текст при окончании времени",getStringProperty("sms.txt")),
    SQL запрос
    Код:
    --
    -- Структура таблицы `pravasms`
    --
    
    CREATE TABLE `pravasms` (
      `id` int(11) NOT NULL auto_increment,
      `txt` char(30) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1251 ;
    
    --
    -- Дамп данных таблицы `pravasms`
    --
    
    INSERT INTO `pravasms` VALUES (1, '123456');
    INSERT INTO `pravasms` VALUES (2, 'qwerty');
    P.S. замечу от себя,в своё время пользовался данным кодом....замечаний по работе,не имею
  2. TopicStarter Overlay
    cerber

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

    Регистрация:
    25.02.11
    Сообщения:
    8.184
    Симпатии:
    2.779
    Баллы:
    575
    Пол:
    Мужской
    Адрес:
    АДА
    набросок от Ar2r
    Код:
    private void commandBayModer(IcqProtocol proc, String uin, Vector v){
           if(!isChat(proc,uin)) return;
    
                 try {
    String pass = (String)v.get(0);
          int num = 0;
      if (pass.equals("")){
                    proc.mq.add(uin,"Нет пароля");
                    return;
                }
    
    PreparedStatement pst = (PreparedStatement) srv.us.db.getDb().prepareStatement("SELECT `id` FROM pravasms WHERE `txt` = ?  ");
    
    pst.setString(1,pass);
             ResultSet rs = pst.executeQuery();
             if(rs.next()){
                  num = rs.getInt(1);
                }else{
              proc.mq.add(uin,"Пароль не найден.");
              return;}
                rs.close();
                pst.close();
    int day = 30;//указываем в сутках в данном случае 30 дней
         Users u = srv.us.getUser(uin);
                 setGrouptime(u.sn,day);
            srv.us.updateUser(u);
           srv.us.getUser(uin).group = "vip";
        boolean f = srv.us.setUserPropsValue(u.id, "group", "vip") &&
        srv.us.setUserPropsValue(u.id, "grant", "") &&
        srv.us.setUserPropsValue(u.id, "revoke", "");
        srv.us.clearCashAuth(u.id);
    
          String q = "DELETE FROM pravasms WHERE id="+num+" LIMIT 1";
    
    //удаляем пароль
       PreparedStatement pst2 = (PreparedStatement) srv.us.db.getDb().prepareStatement(q);
       pst2.execute();
       pst2.close();
                //Оповестим
            Log.talk("Пароль: "+pass);
       srv.cq.addMsg("Пользователь " + u.localnick + " купил группу ''V.I.P.''на 30 дней", "", u.room);
        proc.mq.add(uin,"Вы купили vip на 30 дней");
       
       
          } catch (Exception ex) {
                ex.printStackTrace();
             proc.mq.add(uin,"Ошибка "+ex.getMessage());
    
          }
              }
    
    SQL - запрос
    Код:
    CREATE TABLE `pravasms` (
      `id` int(11) NOT NULL auto_increment,
      `txt` char(30) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1251 ;
    
    --
    -- Дамп данных таблицы `pravasms`
    --
    
    INSERT INTO `pravasms` VALUES (1, '3604');
    INSERT INTO `pravasms` VALUES (2, '3608а');
    INSERT INTO `pravasms` VALUES (3, '5dfzf8a');
    Xpert™ нравится это.

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