Форум программистов, компьютерный форум, киберфорум
Python: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 16.03.2018
Сообщений: 5

Бот для ВК с возможностью менять данные в базе по запросам

16.03.2018, 13:04. Показов 2984. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Недавно начал изучать python, на данный момент пишу простенького бота для в вк, с простой возможностью менять данные в базе по запросам из вк, так вот не получается у меня сделать последовательность, для начала требуется ввести пароль чтобы бот его принял и только потом запустил основной цикл в котором уже будут основные операции, но у меня никак не получается это реализовать. Вот мой код, тут всего 1 цикл, позорится и скидывать свои попытки я не стал, поэтому просьба, если найдется человек, который шарит. покажите и объясните пжл.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
while True:
    response = vk.method('messages.get', values)
    if response['items']:
        values['last_message_id'] = response['items'][0]['id']
    for item in response['items']:
 
     if response ['items'][0]['body'] != '12344321':
 
        write_msg(item['user_id'], 'Жду правильный пароль')
 
     else:
         write_msg(item['user_id'], 'Пароль принят, можно приступать к работе')
         break
    time.sleep(3)
и после этого насколько я понял мне потребуется новый цикл в который я уже смогу прописать доступные команды, но при этом цикл этот должен запускаться только после ввода пароля и прерывания первого цикла, если все это можно как то уместить в 1 цикле, то я с радостью воспользуюсь этой возможностью
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.03.2018, 13:04
Ответы с готовыми решениями:

Таблица с возможностью редактирования информации в ячейках. Необходимо обновлять данные в базе
Добрый день. Сломал голову как реализовать. Имеется таблица с возможностью редактирования информации в ячейках (поле с оценками студентов)...

Создать класс отрезок для игры с возможностью менять координаты
Делаю игру. Очень коротко - у нас есть "уровень земли". Он представляет из себя горизонтальную линию (ломаную), состоящую из большого...

Эмуляция монитора с возможностью менять разрешение
Всем доброго времени суток! Недавно я сделал сервер на Windows 7. Подключил всю необходимую аппаратуру к серверу, поставил дрова,...

5
 Аватар для Wi0M
395 / 123 / 48
Регистрация: 26.10.2013
Сообщений: 734
16.03.2018, 13:39
тебе надо делать сессии и менеджерить их как это на сайтах сделано)
0
0 / 0 / 0
Регистрация: 16.03.2018
Сообщений: 5
16.03.2018, 13:47  [ТС]
не совсем не понимаю о чем вы, но на данный момент мне нужна реализация именно через циклы, хотя бы для того чтобы я сам понял
0
 Аватар для Wi0M
395 / 123 / 48
Регистрация: 26.10.2013
Сообщений: 734
16.03.2018, 22:10
да при чем тут циклы то уже? вот как сайт работает? ему отправляется запрос на авторизацию, например, он создает сессию и в дальнейшем по кукам (а в лучшем случае и по иным параметрам) получает доступ к этой сессии. и дальше уже решает разрешить ли запрос или нет. т.е. к примеру ты знаешь ip и id пользователя который тебе пишет. вот небольшой псевдокод реализации сессий
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
users = {}
 
 
def auth_user(ip: str, user_vk_id: str, password: str): -> bool
    """ Аутентифицируем пользователя """
    user = take_user(user_vk_id)
    if user is None: # если такого пользователя нет то шлем его лесом
        return None
    elif user['is_auth']:
        if ip == user['ip']: # Делаем такую проверку что бы была возможность отследить взлом
            return True
        else:
            # Но что при этом делать я не придумал поэтому просто разорвем сессию
            user['is_auth'] = False
            return False
    else:
        if user['password'] == password:
            user['ip'] = ip
            user['is_auth'] = True
            return True
        else:
            return False
 
 
 
def registration_user(ip: str, user_vk_id: str, password: str): -> bool
    """ Создаем пользователя, если такого еще нет 
    и добавляем в список информацию о нем """
    if users.get(user_vk_id, None):
        # Можно создать свое исключение 
        # UserAlreadyExistsException и бросить его.
        return False
    else:
        users[user_vk_id] = {
            "ip": ip,  # Ну запишем для дополнительной проверки
            "user_vk_id": user_vk_id,  # Вместо имени пользователя
            "password": password,
            "group": 0  # По этому параметру и будем решать, можно ли пользователю что то делать
            "is_auth": False # Авторизован ли пользователь
        }
        return True
 
 
def take_user(user_vk_id: str): -> 'user obj'
    """ Получаем пользователя по ид пользователя вк """
    return users.get(user_vk_id, None)
 
 
def has_permission(user, group):
    """ Тут проверяем доступна ли пользователю фича.
    Лучше превратить в декоратор """
    return user['group'] >= group
Ну наверное как то так)
0
0 / 0 / 0
Регистрация: 16.03.2018
Сообщений: 5
18.03.2018, 14:51  [ТС]
еще раз, мне нужна реализация по простому, никаких сессий, только циклы, в данный момент меня интересует именно цикл, если через него невозможно это сделать, то я вообще этим заниматься не буду
0
 Аватар для Wi0M
395 / 123 / 48
Регистрация: 26.10.2013
Сообщений: 734
18.03.2018, 17:25
невозможно!

Добавлено через 2 минуты
тебе что то нужно менять в своем коде. чтобы это стало возможным) и циклы тут совсем не при чем)

Добавлено через 1 минуту
ты вот то что я написал должен впихнуть в свои циклы) чтобы в циклах проверять ввел ли пользователь ранее пароль) ты бы читал внимательнее)

Добавлено через 4 минуты
да и писать циклы ради циклов какое то странное решение)
проще сделать так
Python
1
2
dct = {True: 'Yes', False: 'No'}
print(dct[True])
чем
Python
1
2
3
4
dct = {True: 'Yes', False: 'No'}
for k, v in dct.items():
    if k == True:
        print(v)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.03.2018, 17:25
Помогаю со студенческими работами здесь

Программа тестирования с возможностью менять тесты
Здравствуйте, столкнулся с проблемой "дипломная работа на тему: тестирование знаний студентов", времени делать самому нет, т.к....

Программа тестирование с возможностью менять тесты
Здравствуйте, задали тему диплома: "разработка информационной системы тестирования знаний". Возможно кто-то делал нечто подобное и...

Составьте справочную таблицу в WORD по запросам в реляционной базе данных
Составьте справочную таблицу в WORD по запросам в реляционной базе данных: запрос, синтаксис, пример.

Построить кубический сплайн с возможностью менять коэффициенты C
Здравствуйте. Помогите пожалуйста построить кубический сплайн так, чтобы можно было бы менять значения коэффициентов C. Это нужно для того,...

vds хостинг в возможностью менять версию mysql
нужна mysql 5.6. какой хостинг сможет обеспечить? посоветуйте что делать? спасибо


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru