1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-23 19:44:20 +00:00
royalnet/rpgpack/commands/abstract/dndbattletarget.py

33 lines
976 B
Python
Raw Normal View History

import abc
from typing import *
import royalnet
import royalnet.commands as rc
import royalnet.utils as ru
from ...tables import DndBattleUnit
from ...utils import get_targets
class DndBattleTargetCommand(rc.Command, abc.ABC):
@abc.abstractmethod
async def _change(self, unit: DndBattleUnit, args: List[str]):
2020-09-16 00:37:31 +00:00
raise NotImplementedError()
async def run(self, args: rc.CommandArgs, data: rc.CommandData) -> None:
target = args[0]
2020-09-16 00:37:31 +00:00
async with data.session_acm() as session:
units = await get_targets(target, data=data, session=session)
if len(units) == 0:
raise rc.InvalidInputError(f"No targets found matching [c]{target}[/c].")
2020-09-16 00:37:31 +00:00
for unit in units:
await self._change(unit, args[1:])
2020-09-16 00:37:31 +00:00
await session.commit()
2020-09-16 00:37:31 +00:00
message = []
for unit in units:
message.append(f"{unit}")
await data.reply("\n\n".join(message))