Я не могу обернуться, как разрешить пользователю ставить X суммы «XP» (я использую доллары) внутри команды. Я разместил ниже простую команду coinflip, которая, как мне кажется, должна быть логичной, но я не уверен на 100%, нахожусь ли я на правильном пути. Мне было интересно, как я могу вызвать get_dollars для пользователя, когда они ставят случайную сумму денег. Я предполагаю, что мне нужно будет создать что-то вроде betamount = enter authors bet amount
, но я рисую пробел о том, как обрабатывать произвольную сумму, которую они могут положить, вместо того, чтобы жестко задавать фиксированную сумму, которая вынуждает пользователя использовать.
client = discord.Client()
try:
with open("cash.json") as fp:
cash = json.load(fp)
except Exception:
cash = {}
def save_cash():
with open("cash.json", "w+") as fp:
json.dump(cash, fp, sort_keys=True, indent=4)
def get_dollars(user: discord.User):
id = user.id
if id in cash:
return cash[id].get("dollars", 0)
return 0
@client.event
async def on_message(message):
betamount = ???
if message.content.lower().startswith('!coinflip'):
if get_dollars(message.author) < 0:
await client.send_message(message.channel, "{} you don't have enough money to bet.".format(message.author.mention))
else:
choice = random.randint(0,1)
if choice == 0
await client.add_reaction(message, '⚫')
await client.send_message(message.channel, "The coin handed on heads!)
if 'heads' in message.content:
await client.send_message(message.channel, "You've won ${}".format(betamount))
add_dollars(message.author, betamount)
else:
if 'tails' in message.content:
await client.send_message(message.channel, "You've lost ${}".format(betamount))
remove_dollars(message.author, betamount)
elif choice == 1:
await client.add_reaction(message, '⚪')
await client.send_message(message.channel, "The coin handed on tails!")
if 'tails' in message.content:
await client.send_message(message.channel, "You've won ${}".format(betamount))
add_dollars(message.author, betamount)
else:
if 'heads' in message.content:
await client.send_message(message.channel, "You've lost ${}".format(betamount))
remove_dollars(message.author, betamount)