Помогите с цикличным инпутом
Всем привет! Пишу ВК бота на python с кнопками, командами и т.д. Хочу сделать так, чтобы каждая функция была в своём файле .py, однако столкнулся с проблемой цикличного импорта. Помогите её решить, код ниже Kara.py
from vk_api.longpoll import VkEventType
from vk_api.keyboard import VkKeyboard, VkKeyboardColor
import random
from vk_varaibles.variables import admins
from vk_varaibles.VK_base import vk_base, user_data
from Kara_main.admin import Adminmenu
vk_session = vk_base.vk_session
longpool = vk_base.longpoll
vk = vk_base.vk
# Основной цикл обработки событий
for event in vk_base.longpoll.listen():
sms = event.type
# Если пришло новое сообщение
if sms == VkEventType.MESSAGE_NEW and event.to_me:
# Получаем текст сообщения
message = event.text.lower()
# Отправляем ответ на различные команды
if message == 'привет' or message == '/reset' or message == '/start':
vk_session.method('messages.send', {'user_id': event.user_id, 'message': 'Привет!', 'random_id': random.randint(1,100000)})
elif message == 'admin' or message == '/admin':
if event.user_id == admins.Root:
Adminmenu()
else:
keyboard = VkKeyboard(one_time=True)
keyboard.add_button('Главная', color=VkKeyboardColor.NEGATIVE)
vk_session.method('messages.send', {'user_id': event.user_id, 'message': 'У Вас нет доступа к этой части меню!!!', 'random_id': random.randint(1,100000)})
#if event.text == 'Главная':
#if event.user_id in user_states:
# state = user_states[event.user_id]
# if state == 'admin_menu':
# user_states[event.user_id] = 'main_menu'
#user_states[event.user_id] = 'main_menu' # устанавливаем состояние "главное меню"
#vk_session.method('messages.send', {'user_id': event.user_id, 'message': 'Хорошо, спасибо!', 'random_id': random.randint(1,100000)})
elif message == 'пока':
vk_session.method('messages.send', {'user_id': event.user_id, 'message': 'Пока, до скорой встречи!', 'random_id': random.randint(1,100000)})
else:
vk_session.method('messages.send', {'user_id': event.user_id, 'message': 'Не понимаю вашу команду.', 'random_id': random.randint(1,100000)})
admin.py
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
from vk_api.keyboard import VkKeyboard, VkKeyboardColor
from vk_varaibles.VK_base import vk_base, user_data
from vk_varaibles.variables import users
import random
vk_session = vk_base.vk_session
longpool = vk_base.longpoll
vk = vk_base.vk
# переменная для хранения состояний пользователей
user_states = users.user_states
user_name = user_data.get_user_name
user_surname = user_data.get_user_surname
def Adminmenu():
user_states[event.user_id] = 'admin_menu' # устанавливаем состояние "админ-меню"
keyboard = VkKeyboard(one_time=True)
keyboard.add_button('Режим "отладки', color=VkKeyboardColor.POSITIVE)
keyboard.add_button('Списки', color=VkKeyboardColor.POSITIVE)
keyboard.add_line()
keyboard.add_button('Настройки Кэры', color=VkKeyboardColor.PRIMARY)
keyboard.add_button('Обновить неделю', color=VkKeyboardColor.PRIMARY)
keyboard.add_line()
keyboard.add_button('Главная', color=VkKeyboardColor.NEGATIVE)
vk_session.method('messages.send', {'user_id': event.user_id,
'message': f'Приветствую Вас, Администратор {user_name} {user_surname}! \n Выберите действие для продолжения: ',
'random_id': random.randint(1,100000)})
if event.text == 'Главная':
if event.user_id in user_states:
state = user_states[event.user_id]
if state == 'admin_menu':
user_states[event.user_id] = 'main_menu'
#from main import main
#return main
#return main
VK_base.py
import vk_api
from vk_varaibles.tokens import token_vk
from vk_api.longpoll import VkLongPoll, VkEventType
class vk_base:
# Инициализируем библиотеку vk_api
vk_session = vk_api.VkApi(token=token_vk.token)
# Получаем экземпляр LongPoll
longpoll = VkLongPoll(vk_session)
vk = vk_session.get_api()
class user_data:
def get_user_name(user_id, vk):
response = vk.users.get(user_ids=user_id)
first_name = response[0]['first_name']
return first_name
def get_user_surname(user_id, vk):
response = vk.users.get(user_ids=user_id)
last_name = response[0]['last_name']
return last_name