@Tony83

Как передать контент сохраненный в классе с помощью FSMContext в другой файл?

Есть бот разделён по функционалам на два файла: для админа и для пользователей. В части админа нужно писать текст который после будет отображаться когда клиент введёт команду. Реализовано это через FSMContext где в класс записывается текст и этот текст нужно отобразить в другом файле( при этом в файле админа благодаря выводу команды "datamenu['menuvalue1']" отображается текст, а при вводе команды"Fs.menuvalue1" пишет только: "Меню на русском: ".

Вот код части админа:
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.dispatcher import FSMContext
from create_bot import dp, bot
from aiogram import types, Dispatcher
from aiogram.dispatcher.filters import Text

class Fs(StatesGroup):
menuvalue1 = State()
menuvalueeng1 = State()
async def editmenu0(message: types.Message):
if message.from_user.id == ID:
await Fs.menuvalue1.set()
await message.reply('Введи текст который будет отображаться пользователям во вкладке "Меню"',reply_markup=keyboardmenu)
async def savemenu(message: types.Message, state: FSMContext):
async with state.proxy() as datamenu:
datamenu['menuvalue1'] = message.text
await Fs.next()
await message.reply('Введи текст который будет отображаться пользователям на английском')
async def savemenueng(message: types.Message, state: FSMContext):
async with state.proxy() as datamenu:
datamenu['menuvalueeng1'] = message.text
await message.answer(f"Меню на русском: {Fs.menuvalue1}\n"
f"Меню на Английском: {datamenu['menuvalueeng1']}")
await state.finish()

def register_handlers_admin(dp : Dispatcher):
dp.register_message_handler(savemenu, state=Fs.menuvalue1)
dp.register_message_handler(savemenueng, state=Fs.menuvalueeng1)

Вот часть клиента(где нужно вывести текст с переменных в классе Fs):

from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.dispatcher import FSMContext
from aiogram import types, Dispatcher
from create_bot import dp, bot
from keyboards import *
from handlers import *
from data_base import sqlite_db
from handlers.admin import Fs
from handlers import admin
@dp.message_handler(commands='Меню')
async def rusmenu(message: types.Message):
await message.answer(f"Меню на русском: {datamenu['menuvalue1']}" #При этом варианте не видит datamenu
await message.answer(f"Меню: {Fs.menuvalueeng1}") #При этом пишет: State 'Fs:menuvalueeng1'
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы