@kalsc12345
Неизвестный человек.

Из-за чего проблема с VK Bot на Python?

Когда я пишу боту, например: /stats (code) , то день он создает график в виде картинки и отправляет в VK.
На это уходит 1-2 минуты. За это время не могу выполнять лёгкие команды или снова /stats (code).

Как сделать так, чтобы люди могли использовать любые команды и не зависело от того, что команды занята и пока не выводится команда итога, то ничего работать не будет?

import vk_api 
from vk_api.bot_longpoll import VkBotEventType, VkBotLongPoll
import random 
import json 
import asyncio 
import sys
from datetime import datetime
from message_utils import handle_button_click
from db_utils import is_user_banned, is_user_admin, get_bot_settings, create_user_if_not_exists, close_mysql_connection, open_mysql_connection 
from admin import system_protocol
from api_server import ip_api 
from message_utils import (
    handle_stat_command,
    bot_stat_command,
    toponline_server,
    servers_list,
    process_server_request_and_send_vk,
    test_server,
    help_bot,
    comparison_server,
    alias_list,
    add_servers,
    removes_servers,
    add_alias,
    log_message,
    whois_domen,
    lang_command,
    ip_check,
    delete_bot_on_new_message
)
from vk_config import VK_TOKEN, VK_GROUP_ID

def log_message1(message):
    try:
        timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        log_entry = f"[{timestamp}] {message}"

        with open("log1.txt", "a") as log_file:
            log_file.write(log_entry + "\n")
    except Exception as e:
        print("Ошибка при записи сообщения в лог:", e)

async def handle_longpoll_events(vk_session, vk, longpoll): 
    db_connection = open_mysql_connection() 
 
    try: 
        while True: 
            try: 
                for event in longpoll.listen(): 
                    event_json = json.dumps(event.raw, indent=4, ensure_ascii=False) 

                    if event.type == VkBotEventType.MESSAGE_NEW or event.type == VkBotEventType.MESSAGE_EVENT:
 
                        peer_id = event.obj.message['peer_id'] 
                        message = event.obj.message['text'] 
                        vk_id = event.obj.message['from_id'] 

                        create_user_if_not_exists(vk_id) 
                        
                       
                            
                        if message.startswith('/comparison') or message.startswith('/сравнить'): 
                            await comparison_server(peer_id, message, vk_id, vk)

                             
            except Exception as e: 
                log_message1(f"Ошибка LongPull {e}")
                close_mysql_connection(db_connection)  
                db_connection = open_mysql_connection()  
    finally: 
        close_mysql_connection(db_connection) 

async def main(): 
    vk_session = vk_api.VkApi(token=VK_TOKEN) 
    vk = vk_session.get_api() 
    longpoll = VkBotLongPoll(vk_session, VK_GROUP_ID) 

    while True: 
        try: 
            await handle_longpoll_events(vk_session, vk, longpoll) 
        except Exception as e: 
            log_message(f"Ошибка Main {e}")
            sys.exit(1)
   

if __name__ == "__main__":
    asyncio.run(main())
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 200 000 ₽
Гринатом Москва
от 150 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
16 июн. 2024, в 13:45
15000 руб./за проект
16 июн. 2024, в 13:36
10000 руб./за проект
16 июн. 2024, в 12:59
6000 руб./за проект