Советы по работе с vk_api

Учусь создавать различных ботов при помощи vk_api. Решил сделать бота, который записывает напоминания в базу данных, а затем, в определённое время, их отправляет. В целом, то что я хотел, я сделал, но у меня в коде куча "костылей". Можете посоветовать, как улучшить мой код?

def start():
    global id_process
    id_process = [] # помечает id, который обрабатывается потоком, чтобы обычный чекер сообщений не ловил его и не отвечал на его сообщения
    while True:
        messages = vk.method("messages.getConversations", {"offset": 0, "count": 20, "filter": "unanswered"})
        if messages["count"] >= 1:
            id_sender = messages["items"][0]["last_message"]["from_id"]
            if id_sender in id_process: # проверка id, чтобы понять, обрабатывается он или нет
                print('продолжаем')
                continue
            print(id_sender)
            body = messages["items"][0]["last_message"]["text"]
            print(body)
            if body.lower() == 'напоминание':
                write_msg(id_sender, 'Введите текст напоминания')  # функция отправки сообщения
                _thread.start_new_thread(check_messages, (id_sender, ))
                id_process.append(id_sender) # после создания потока добавляет id в список
            else:
                write_msg(id_sender, 'Непонял')

def check_messages(user_id):
    global text
    count = 0
    for event in long_poll.listen():
        if event.type == VkBotEventType.MESSAGE_NEW:
            if event.obj.from_id == user_id and event.obj.text.lower() != 'напоминание':
                print(event.obj.text)
                print(event)
                count += 1
                if count == 2: # первый проход записывает текст, второй время
                    time = event.obj.text
                    AddRemind(user_id, text, time)  # функция добавления в базу данных напоминания
                    write_msg(user_id, 'Успешно')
                    id_process.remove(user_id)  # после добавления записи в бд, удаляет человека из списка обрабатываемых
                    del text, time
                    return 1
                text = event.obj.text
                write_msg(user_id, 'Введите время когда вас оповестить')

Косяков полно, надеюсь, поймёте о чем здесь речь. Прошу советов. Думаю Longpool можно использовать более рационально. Как можно избежать того, что после ответа на сообщение, оно всё равно помечается как событие? (слово "напоминание" является новым событием, хотя ответ на это сообщение был) Можно ли избежать счётчика, который я добавил (count), чтобы записывать в переменные именно то, что мне нужно? Можно ли как-то сократить код и оптимизировать его?


Ответы (0 шт):