Esempio n. 1
0
 async def get_address(self) -> str:
     """Get account address of user"""
     if isinstance(self.account, acct.Account):
         return self.account.address
     account = await self.account.first()
     if account is not None:
         return account.address
     # Create an account
     address = await RPCClient.instance().account_create()
     if address is None:
         raise Exception("RPC account create failed")
     account = acct.Account(user=self, address=address)
     async with in_transaction() as conn:
         await account.save(using_db=conn)
     return address
Esempio n. 2
0
 async def create_or_fetch_user(cls, user: discord.User) -> 'User':
     """Create a user if they don't exist, raises OperationalError if database error occurs"""
     dbuser: '******' = await cls.filter(
         id=user.id).prefetch_related('account').first()
     if dbuser is None:
         async with in_transaction() as conn:
             # Create user and return them
             dbuser = User(id=user.id, name=user.name.replace("`", ""))
             await dbuser.save(using_db=conn)
             # Create an account
             address = await RPCClient.instance().account_create()
             if address is None:
                 raise Exception("RPC account create failed")
             account = acct.Account(user=dbuser, address=address)
             await account.save(using_db=conn)
     return dbuser