При запуске нового клиентского бота через моего основного бота обработчики состояния не работают?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 При запуске нового клиентского бота через моего основного бота обработчики состояния не работают?

Сообщение Anonymous »

Когда отдельный бот запускается через функцию пользователем моего бота, т.е. он создает своего бота через моего бота, то при обработке обработчиков событий если я указываю state='*' все работает, но если я указываю определенное состояние в качестве аргумента, обработчик прекращает выполнение.

Код: Выделить всё

async def start_client_project_bot(user_id, name, token):
try:
client_bot = Bot(token=token, parse_mode="HTML")
client_storage = MemoryStorage()
client_dp = Dispatcher(client_bot, storage=client_storage)

from project_create import base
base.register_client_handlers(client_dp)

await client_dp.start_polling()
except Exception as e:
logger.error(f"{e}", exc_info=True)

Код: Выделить всё

def register_client_handlers(dp):

@dp.message_handler(commands=['start'], state="*")
async def start_project_message(message: types.Message, state: FSMContext):
kb = await create_keyboard('main_message_kb', 1)
user_id = message.from_user.id
await state.update_data(user_id=user_id)
await message.answer(bot_navigation.messages_data['main_msg'], reply_markup=kb)

@dp.callback_query_handler(text="start_exchange", state="*")
async def select_exchange_direction(call: types.CallbackQuery, state: FSMContext):

state_info = await state.get_data()
user_id = state_info['user_id']

kb = await create_keyboard('exchange_directions_kb', 1)
await call.message.edit_text(bot_navigation.messages_data['direction_select_msg'], reply_markup=kb)

await state.set_state("get_send_coins_list")

@dp.callback_query_handler(state="get_send_coins_list")
async def get_send_coins_list(call: types.CallbackQuery, state: FSMContext):
current_state = await state.get_state()

direction = call.data
await state.update_data(exchange_direction=direction)
kb = await get_coin_list('payin')
kb = await back_button(kb)
await call.message.edit_text(bot_navigation.messages_data['select_send_coin_msg'], reply_markup=kb)
Я пробовал разные способы указания состояний, но ничего не получалось, и я проверял соответственно без указания состояния — в том случае это сработало. Но для корректной работы бота необходимо указать состояния

Подробнее здесь: https://stackoverflow.com/questions/791 ... s-dont-wor
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»