Передача данных между двумя устройствами через телеграм бота

Разрабатываю бота в телеграме на AIOGram. Вкратце - морской бой, но в телеграме. Нужно каким-то образом организовать мультиплеер, поочерёдно перекидываясь данными между двумя пользователями, которые заранее объединились в пару по ходу программы. Проблема состоит лишь в том, каким образом сделать саму передачу.

Для начала решил облегчить саму задачу и попробовал написать эхо-бота, который пересылает сообщение от одного пользователя к другому. Получилось примерно так

import logging
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from api_token import API_TOKEN

logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(name)s - %(message)s")

bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot, storage=MemoryStorage())

first_id = ''
second_id = ''


class Order(StatesGroup):
    take_id = State()
    double_echo = State()


async def take_id(message: types.Message, state: FSMContext):  # получение айди второго пользователя
    global first_id
    first_id = message.from_user.id
    await state.update_data(sec_pl_id=message.text)
    await Order.next()


async def double_echo(message: types.Message, state: FSMContext):
    global second_id
    user_data = await state.get_data()
    second_id = user_data['sec_pl_id']
    flag = False
    if not flag:  # попытка сделать поочерёдное перекидывание сообщениями
        flag = True
        await bot.send_message(second_id, message.text)
    else:
        flag = False
        await bot.send_message(first_id, message.text)
    return 

def register_handlers(dp: Dispatcher):
    dp.register_message_handler(take_id, state=Order.take_id)
    dp.register_message_handler(double_echo, state=Order.double_echo)

register_handlers(dp)
executor.start_polling(dp, skip_updates=True)

Закономерно вышло, что и тут ничего не работает. До конца не понял, каким именно образом это должно работать, возможно я не понял самой сути работы программы. Поэтому открыт к жёсткой критике. (З.Ы. не бейте плиз)


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