Как сделать проверку на определенный период чисел и буквы
Пояснение:
Пишу игрового бота - казино. Пользователь вводит р поставить после чего идут два аргумента от пользователя 1 - на что ставка 2 - сумма ставки. В первом сделал возможность поставить от 0 до 36. Но как можно сделать, чтобы была возможность поставить на к - красное и на ч - черное, чтобы в аргумент принималось либо число от 0-36, либо буква и была проверка на правильное указание на что ставка?
Код:
conn = sqlite3.connect('database.db', check_same_thread=False)
cur = conn.cursor()
bid = 0
args_bid = message.text.split()[2]
if args_bid: # На что ставка
try:
bid = int(args_bid)
except ValueError:
bot.reply_to(message, '❗ Используйте: Рул поставить (0-36/к/ч) (ставка)❗')
return
if 0 > bid or bid > 36:
bot.reply_to(message, '❗ Используйте: Рул поставить (0-36/к/ч) (ставка)❗')
return
money = 0
args_money = message.text.split()[3]
if args_money: # Сумма ставки
try:
money = int(args_money)
except ValueError:
bot.reply_to(message, text='❗ Используйте: Рул поставить (0-36/к/ч) (ставка)❗')
return
cur.execute('SELECT balance FROM users WHERE user_id=("%s")' % user_id)
users = cur.fetchall()
for user in users:
balance = user[0]
if money > balance:
bot.reply_to(message, text=f'❌ Превышен баланс ❌\n\n? Ваш баланс: {balance:,}?')
return
cur.execute('SELECT group_id FROM roulette WHERE group_id=("%s")' % group_id)
group_info = cur.fetchall()
conn.commit()
if len(group_info) == 0:
cur.execute('INSERT INTO roulette (group_id, start_time) VALUES ("%s", "%s")' % (
group_id, datetime.datetime.now()))
cur.execute(
'INSERT INTO roulette_users (group_id, user_id, bid, bid_money) VALUES ("%s", "%s", "%s", "%s")' % (
group_id, user_id, bid, money))
cur.execute('UPDATE users SET balance=balance-("%s") WHERE user_id=("%s")' % (money, user_id))
conn.commit()
bot.reply_to(message, text=f'✅ Вы поставили {money:,}? на {bid}?')
else:
cur.execute(
'INSERT INTO roulette_users (group_id, user_id, bid, bid_money) VALUES ("%s", "%s", "%s", "%s")' % (
group_id, user_id, bid, money))
cur.execute('UPDATE users SET balance=balance-("%s") WHERE user_id=("%s")' % (money, user_id))
conn.commit()
bot.reply_to(message, text=f'✅ Вы поставили {money:,}? на {bid}?')
cur.close()
conn.close()
Ответы (1 шт):
Автор решения: ZxNuClear
→ Ссылка
В качестве одного из вариантов могу предложить делать проверку вхождения введенного пользователем значения в список "разрешенных" к ставке значений:
bid = [*[str(x) for x in range(0, 36)], 'к', 'К', 'ч', 'Ч'] # Формируем комбинацию разрешенных к ставке значений (0..36, к, ч)
args_bid = message.text.split()[2] # Получаем ставку пользователя
if args_bid in bid: # Проверяем, находится ли ставка в списке разрешенных
print('ставка принята') # Действие при успехе
else:
print('Используйте: Рул поставить (0-36/к/ч) (ставка)❗') # Действие, если пользователь ввел что то другое