Загрузка...

Script for viewing/cleaning VK conversations

Thread in Your projects created by MALWARE May 3, 2022. (bumped Tuesday at 2:45 PM) 2,349 views

  1. MALWARE
    MALWARE Topic starter May 3, 2022 мяукаю 13,661 Mar 12, 2021
    Python
    import vk_api
    token = 'token'
    api = vk_api.VkApi(token=token).get_api()
    mode = input('Какие беседы показать? 1 - все, 2 - только те, в которых ты состоишь, 3 - только те, где ты не состоишь и не очистил историю, 4 - только те, где ты состоишь и очистил историю: ')
    if not int(mode) in [1,2,3,4]: exit('Неверное значение')
    print('Получаю беседы...')
    for i in range(1, 100000001):
    try:
    chat = api.messages.getChat(chat_id=i)
    except Exception as e:
    if str(e) == "[946] Chat not supported": print(str(i)+': Фантом-чат')
    elif str(e) == "[100] One of the parameters specified was missing or invalid: chat_id param is incorrect": break
    else:
    print(e)
    break
    chat_info = str(chat['id'])+': '+str(chat['title'])+'. '
    if 'left' in chat:
    chat_info += 'Вышел, '
    if mode in ['2', '4']: continue
    elif 'kicked' in chat:
    chat_info += 'Исключен, '
    if mode in ['2', '4']: continue
    else:
    chat_info += 'В составе, '
    if mode == '3': continue
    if api.messages.getHistory(peer_id=2000000000+chat['id'])['count'] == 0:
    chat_info += 'история очищена.'
    if mode == '3': continue
    else:
    chat_info += 'история не очищена.'
    if mode == '4': continue
    print(chat_info)
    input('Всё!\n')
    Использование: в переменную token вставить токен.
    Почему я не использовал chat_ids, чтобы получить сразу несколько бесед? Потому что существуют фантом-чаты... Допустим, беседы с ID 1, 2, 3 - обычные беседы, с ID 4 - фантом-чат, ID 5 - несуществующая беседа (то есть всего 4 беседы). Если я в chat_ids подставлю 1,4 - будет ошибка. Если 1,2,5 - тоже будет ошибка. Поэтому, после долгих эскперементов, я думаю, что лучше всего получать беседы по одной.
     
  2. спонс
    больно глазам...
     
  3. Еремей
    Еремей May 3, 2022 Гламурный эмо-гопник 1,734 Jul 20, 2018
    Используй однострочное условие, а не вот Это
    if not int(mode) in [1,2,3,4]: exit('Неверное значение')
     
    1. ZeN
      avatarЕремей, что за однострочное условие?
    2. Еремей
      avatarZeN, ну смотри. Для примера возьмём ту строчку, что я указал
      Всё это можно поместить в одну строчку по схеме
      действие1 if условие else действие2
      и оно будет нормально работать не нарушай правила PEP8
      Если переделать, то получится:
      exit("Неверное значение") if not int(mode) in range(1,4) else pass
  4. danilasecret
    for i in range(1, 100000001):
    откуда взялось 100000001 ?
    Что смеяться. Есть методы, которые позволят узнать сколько бесед есть

    Простой код. Полезен
     
  5. Zelenoy
    Zelenoy Aug 16, 2024 иди книжки продавай епте 5,511 Oct 3, 2021
    нормально ты темы двухгодовалые апаешь

    но а так за код спасибо :smile_ty:
     
    1. View previous comments (1)
Loading...