mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-27 13:34:28 +00:00
37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
from typing import *
|
|
import royalnet
|
|
import royalnet.commands as rc
|
|
import royalnet.utils as ru
|
|
from ..tables import Treasure, FiorygiTransaction
|
|
from .magicktreasure import MagicktreasureCommand
|
|
|
|
|
|
class GivetreasureCommand(MagicktreasureCommand):
|
|
name: str = "givetreasure"
|
|
|
|
description: str = "Crea un nuovo Treasure di Fiorygi (usando il tuo credito)"
|
|
|
|
syntax: str = "{codice} {valore}"
|
|
|
|
async def _permission_check(self, author, code, value, data):
|
|
if "banker" not in author.roles:
|
|
raise rc.UserError("Non hai permessi sufficienti per eseguire questo comando.")
|
|
if author.fiorygi.fiorygi < value:
|
|
raise rc.UserError("Non hai abbastanza fiorygi per creare questo Treasure.")
|
|
|
|
async def _create_treasure(self, author, code, value, data):
|
|
TreasureT = self.alchemy.get(Treasure)
|
|
|
|
treasure = await ru.asyncify(data.session.query(TreasureT).get, code)
|
|
if treasure is not None:
|
|
raise rc.UserError("Esiste già un Treasure con quel codice.")
|
|
|
|
treasure = TreasureT(
|
|
code=code,
|
|
value=value,
|
|
redeemed_by=None
|
|
)
|
|
|
|
await FiorygiTransaction.spawn_fiorygi(data, author, -value, "aver creato un tesoro")
|
|
|
|
return treasure
|