Source code for artifacts.domains.tasks

"""Tasks domain -- task lifecycle management."""

from __future__ import annotations

from ..cooldown import _auto_cooldown
from ..models.responses import (
    RewardDataSchema,
    TaskCancelledSchema,
    TaskDataSchema,
    TaskTradeDataSchema,
)
from ._base import CharacterDomain


[docs] class TasksDomain(CharacterDomain): """Manage tasks from the Tasks Master. Accessed via ``character.tasks``:: await char.tasks.new() await char.tasks.trade(code="iron_ore", quantity=10) await char.tasks.complete() await char.tasks.exchange() """
[docs] @_auto_cooldown async def new(self) -> TaskDataSchema: """Accept a new task from the Tasks Master.""" return await self._http.post_model( f"{self._base}/task/new", TaskDataSchema )
[docs] @_auto_cooldown async def complete(self) -> RewardDataSchema: """Complete and turn in the current task.""" return await self._http.post_model( f"{self._base}/task/complete", RewardDataSchema )
[docs] @_auto_cooldown async def exchange(self) -> RewardDataSchema: """Exchange 6 task coins for a reward.""" return await self._http.post_model( f"{self._base}/task/exchange", RewardDataSchema )
[docs] @_auto_cooldown async def trade(self, *, code: str, quantity: int) -> TaskTradeDataSchema: """Trade items with the Tasks Master.""" return await self._http.post_model( f"{self._base}/task/trade", TaskTradeDataSchema, json={"code": code, "quantity": quantity}, )
[docs] @_auto_cooldown async def cancel(self) -> TaskCancelledSchema: """Cancel the current task (costs 1 task coin).""" return await self._http.post_model( f"{self._base}/task/cancel", TaskCancelledSchema )