Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#82 #88

Merged
merged 4 commits into from
Jun 9, 2024
Merged

#82 #88

Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 14 additions & 4 deletions shvatka/tgbot/dialogs/starters/game_spy.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,34 @@
from aiogram.filters import Command

from shvatka.tgbot import states
from shvatka.tgbot.filters.is_org import is_org_on_running_game, is_org
from shvatka.tgbot.utils.router import register_start_handler
from shvatka.tgbot.views.commands import SPY_COMMAND, SPY_LEVELS_COMMAND, SPY_KEYS_COMMAND
from shvatka.tgbot.views.commands import SPY_COMMAND, SPY_LEVELS_COMMAND, SPY_KEYS_COMMAND, START_COMMAND


def setup() -> Router:
router = Router(name=__name__)
register_start_handler(
Command(commands=SPY_COMMAND),
is_org,
state=states.OrgSpySG.main,
router=router, # TODO is_org
router=router,
)
register_start_handler(
Command(commands=START_COMMAND),
is_org_on_running_game,
state=states.OrgSpySG.main,
router=router,
)
register_start_handler(
Command(commands=SPY_LEVELS_COMMAND), # TODO is_org
Command(commands=SPY_LEVELS_COMMAND),
is_org,
state=states.OrgSpySG.spy,
router=router,
)
register_start_handler(
Command(commands=SPY_KEYS_COMMAND), # TODO is_org
Command(commands=SPY_KEYS_COMMAND),
is_org,
state=states.OrgSpySG.keys,
router=router,
)
Expand Down
18 changes: 18 additions & 0 deletions shvatka/tgbot/filters/is_org.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from aiogram.types import Message

from shvatka.core.models import dto
from shvatka.core.services.organizers import get_by_player
from shvatka.infrastructure.db.dao.holder import HolderDao


async def is_org_on_running_game(_: Message, player: dto.Player, game: dto.Game, dao: HolderDao):
if game is None or not game.is_started():
return False
return await is_org(_, player=player, game=game, dao=dao)


async def is_org(_: Message, player: dto.Player, game: dto.Game, dao: HolderDao):
org = await get_by_player(player=player, game=game, dao=dao.organizer)
if org is None or org.deleted:
return False
return {"org": org}
5 changes: 4 additions & 1 deletion shvatka/tgbot/utils/router.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
from typing import Callable

from aiogram import Router, Dispatcher
from aiogram.dispatcher.event.handler import CallbackType
from aiogram.filters import Filter
from aiogram.fsm.state import State
from aiogram.types import Message
Expand All @@ -20,7 +23,7 @@ def disable_router_on_game(router: Router):


def register_start_handler(
*filters: Filter,
*filters: CallbackType,
state: State,
router: Router,
mode: StartMode = StartMode.NORMAL,
Expand Down
Loading