progserega / MatrixVkBot

Bridge-bot for send and recieve VK.com messages in matrix (matrix.org).
Other
18 stars 4 forks source link

Присваивать боту онлайн-статус "unavailable" #19

Open MurzNN opened 4 years ago

MurzNN commented 4 years ago

В Riot-develop запилили индикатор онлайна, в результате теперь все ВК-юзеры светятся в онлайне постоянно, т.к. там отображается статус бота, а не юзера. Чтобы не смущать народ, наверное стоит боту поставить онлайн-статус "unavailable"?

https://matrix.org/docs/spec/client_server/r0.6.0#get-matrix-client-r0-sync - set_presence

progserega commented 4 years ago

Попытался сделать:

            log.info("try login matrix-client")
            token = client.login(username=conf.username, password=conf.password,device_id=conf.device_id)
            log.info("success login matrix-client")
            log.info("try set set_presence='unavailable'")
            # ['offline', 'unavailable', 'online']
            ret = client.api.sync(set_presence="unavailable")
            log.info(json.dumps(ret, indent=4, sort_keys=True,ensure_ascii=False))
            log.info("success set set_presence='unavailable'")

В результате - ничего не поменялось :-( Причём, если передать, например, set_presence=2 - то в ret прилетает ошибка, что, дескать, допустимые значения только "online", "offline" и "unavailable". Пробовал "offline" и "unavailable" - результат один:

  1. Останавливаем бота.
  2. видим, что бот получил статус "недоступен 4 минуты"
  3. запускаем бота
  4. видим статус, что бот "online"

Вроде как из описания следует, что статус не должен меняться на "онлайн", даже если бот использует АПИ:

Controls whether the client is automatically marked as online by polling this API. If this parameter is omitted then the client is automatically marked as online when it uses this API. Otherwise if the parameter is set to "offline" then the client is not marked as being online when it uses this API. When set to "unavailable", the client is marked as being idle. One of: ["offline", "online", "unavailable"]

То ли оно не работает как должно, то ли я не понимаю чего-то :-)

MurzNN commented 4 years ago

Вроде как нужно при каждом запросе передавать свой статус "я всё ещё unavailable" иначе он принудительно метит online