Перейти к содержимому


Проверка номера чата на онлайн


Сообщений в теме: 5

#1 PRO-NewiX

    Профи

  • Специалисты
  • PipPipPipPipPip
  • 746 сообщений
  • ГородПервоуральск

Отправлено 13 Октябрь 2010 - 22:43

Вообщем такой вопрос, как можно определить что номер чата именно онлайн, при этом нам известен лишь номер.
То есть, имеем код из бота:
con.uins.getUin(i) 
или
Manager.getInstance().getService(ns).getIcqProcess(i).isOnLine() ? "  [ ON]  " : "  [OFF]  ")
где
con - public ChatConnection con;
i - (int i) порядковый номер чата

Мне же нужно, введя номер чата, в переменную String, узнать статус номера.
Кто не будь знает как это реализовать? Интересует ответ в библиотеки от стандартного бота!

Сообщение отредактировал PRO-NewiX: 13 Октябрь 2010 - 23:12


#2 Clo

    Профи

  • Модераторы
  • 890 сообщений

Отправлено 13 Октябрь 2010 - 23:29

Библиотека не сообщает о разрывах соединения до аси, или делает это очень плохо, а собственный статус можно узнать из конфигов, он там точно такой же каким ты его видишь в асе.

#3 PRO-NewiX

    Профи

  • Специалисты
  • PipPipPipPipPip
  • 746 сообщений
  • ГородПервоуральск

Отправлено 14 Октябрь 2010 - 06:30

Clo мне не нежно знать о разрывах соединения, мне надо узнать в какой момент номер вышел в онлайн!
Например: как только номер выходит онлайн, библиотека сообщает нам об этом

Цитата

INFO - Ожидание подключения...
INFO - Ожидание подключения...
INFO - Ожидание подключения...
Report interval : 30h
Report interval : 30h
Report interval : 30h
В боте я нашел лишь одну функция, которая определяет вышел номер в сеть или нет, но она работает не от номера icq, а от порядкового номера, а именно порядка внесения номера в вектор.
Уже если нет такой функции, тогда как узнать порядок в векторе, имея одно из значений вектора?

#4 ~ёМАё~

    Профи

  • Специалисты
  • PipPipPipPipPip
  • 817 сообщений
  • ГородТамбовская обл.

Отправлено 14 Октябрь 2010 - 10:06

Просмотр сообщенияPRO-NewiX (14 Октябрь 2010 - 06:30) писал:

В боте я нашел лишь одну функция, которая определяет вышел номер в сеть или нет, но она работает не от номера icq, а от порядкового номера, а именно порядка внесения номера в вектор.
Уже если нет такой функции, тогда как узнать порядок в векторе, имея одно из значений вектора?
исходя из кода в public ChatServer(String name)
 for(int i=0;i<ChatProps.getInstance(this.getName()).uinCount();i++){
            icq[i] = ChatProps.getInstance(this.getName()).getUin(i);
            pass[i] = ChatProps.getInstance(this.getName()).getPass(i);
        }
        con.uins = new UINmanager(icq, pass, con, 
                ChatProps.getInstance(this.getName()).getBooleanProperty("chat.IgnoreOfflineMsg"), 
                ChatProps.getInstance(this.getName()));
порядковый номер векторе прямо пропорционален порядковому номеру в настройках ChatProps
если нужно найти порядковый номер по уину тогда можно добавить в ChatProps код
     public int getIDUin(String un) {
        int id=-1;
        for(int n=0;n<getIntProperty("conn.uinCount");n++){
      //   if (Integer.parseInt(getStringProperty("conn.uin" + n))==un){
            if (getStringProperty("conn.uin" + n).equals(un)){
             id=n;
             break;
         }  
        }
    return id;
  }
если уин не находится тогда возвращается -1

кстати в UINmanager тоже есть однотипная функция поверки статуса уина
public boolean getState(int i)
правда тоже по порядковому номеру

Сообщение отредактировал ~ёМАё~: 14 Октябрь 2010 - 14:34


#5 Ar2r

    Dexsor

  • Специалисты
  • PipPipPipPipPip
  • 1 137 сообщений

Отправлено 14 Октябрь 2010 - 13:25

 /**
     * Статистика по уинам
     */
    public String getUinStat(){
        String s = "Число пользователей на разных номерах чата:\n";
        String[] uins = new String[ChatProps.getInstance(serviceName).uinCount()];
        int[] cnt = new int[ChatProps.getInstance(serviceName).uinCount()];
        for(int i=0;i<ChatProps.getInstance(serviceName).uinCount();i++){
            uins[i] = ChatProps.getInstance(serviceName).getUin(i);
            cnt[i] = 0;
        }
        int a=0;
        Iterator <Users> it = uc.values().iterator();
        while(it.hasNext()){
            Users u = it.next();
            if(u.state == UserWork.STATE_CHAT){
                a++;
                for(int i=0;i<uins.length;i++){
                    if(uins[i].equals(u.basesn)) cnt[i]++;
                }
            }
        }
        for(int i=0;i<uins.length;i++){
            s += i + " - " + uins[i] + " = " + cnt[i] + "\n";
        }
        return s+"Всего в чате: "+a;
    }
юзай)))

#6 PRO-NewiX

    Профи

  • Специалисты
  • PipPipPipPipPip
  • 746 сообщений
  • ГородПервоуральск

Отправлено 14 Октябрь 2010 - 18:27

Благодарю всем кто откликнулся, есть что посмотреть и чему поучиться!





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей