def make_bet(team_name, username, points, position, wager_id): if points < 1: return "You can't bet negative points." if points > 5000: return "5000 is the max bet." team, user = get_team_user(team_name, username) wager = s.query(Wager).get(wager_id) msg = "" if wager: if wager.team_id != team.id: return f'This team is not able to access wager `#{wager.id}`.' if wager.is_closed: return f'Wager: `#{wager.id}` "{wager.description}" is closed for betting.' if bet := wager.already_bet(user): print(bet) return f"Wager `#{wager.id}`: {wager.description}\n" \ f"{get_wager_bets(wager)}" \ # f"\n\n{user.username} already wagered `{bet.points}` `#{wager.id}` will be `{bet.position}`.\n" if points > wager.bets[0].points: return f"You can't bet more than {wager.bets[0].points} on wager `#{wager.id}`" else: bet = Bet(points=points, position=position) bet.wager = wager bet.user = user s.add(bet) s.commit() msg += f'Wager: `#{wager.id}` "{wager.description}"\n' msg += get_wager_bets(wager) # msg += f'\n@{user.username} your bet has been recorded.\n' s.close() return msg
def make_wager(team_name, username, description, points, position, minutes): if 1 > points: return f"`{points}` is a terrible failure. All wagers must be positive integers.\n" \ f"Usage: `!wager <points> <Description>`\n" \ f"If you'd like to bet something will not happen reflect that in the description." if points > 5001: return f"`{points}` is a terrible failure. All wagers must be positive integers less than 5001.\n" \ f"Usage: `!wager <points> <Description>`\n" \ f"If you'd like to bet something will not happen reflect that in the description." team, user = get_team_user(team_name, username) existing_wager = team.wager_exists(description) exists = False for w in existing_wager: if w.description == description: exists = True return f"Wager: `#{w.id}` {w.description} already exists.\n" \ f"```Usage: !bet <#wager> <points> <True/False>```" if not exists: end_time = datetime.now() + timedelta(minutes=minutes) bet = Bet(points=points, position=position) wager = Wager(team_id=team.id, description=description, points=points, start_time=datetime.now(), end_time=end_time) bet.wager = wager user.bets.append(bet) s.commit() msg = f'Wager: `#{wager.id}`\n"{wager.description}"\n' \ f'{get_wager_bets(wager)}' s.close() payload = {"msg": msg, "wager_id": wager.id} return payload
def place_post(): category_id = request.form.get('id') bet = request.form.get('bet') bet_left = request.form.get('bet1') if not bet.isdigit(): flash('Sua aposta contém caracteres inválidos', 'error') elif int(bet) > current_user.pnkoins or int(bet) <= 0: flash('Você não tem PnKoins suficientes', 'error') elif int(bet) > Category.query.filter_by(id=category_id).first().max_bet: flash('Sua aposta excede a aposta máxima para este evento', 'error') else: option_query = Option.query.filter_by(category_id=category_id).all() option = option_query[1] if bet_left is None else option_query[0] bet_obj = Bet.query.filter_by(user_id=current_user.id, option_id=option.id, category_id=category_id).first() if bet_obj is not None: flash('Aposta duplicada', 'error') else: new_bet = Bet(user_id=current_user.id, option_id=option.id, category_id=category_id, value=int(bet)) current_user.pnkoins -= int(bet) db.session.add(new_bet) current_user.last_login = func.now() db.session.commit() flash('Aposta feita com sucesso', 'success') return redirect(url_for('main.profile'))
def place_bet(request): evt = Event.objects.get(id = request.POST.get("event_id")) player = Player.objects.get(id = request.POST.get("player_id")) bet_amount = request.POST.get("amount") current_user = User.objects.get(id= request.POST.get("user_id")) ror = request.POST.get("return_rate") bet = Bet(event = evt, player = player, amount = bet_amount, rate_of_return = ror, user = current_user) bet.save() return HttpResponse("<html><body>Enjoy betting you sucker</body></html>")
def create_bet(created_by, bet, rate): """ Creates a currency for the user. Returns the created currency or None if not exists. """ bet = Bet(created_by=created_by, bet=bet, rate=rate) session.add(bet) session.commit() return bet
def processEnterBetForm(request, betForm, gamename): user = request.user targetname = betForm.data['target'] examname = betForm.data['exam'] guessmark = betForm.data['guess_mark'] guesscredits = betForm.data['guess_credits'] try: int(guessmark) except: return "Your prediction must be a whole number from 0 to 100." try: int(guesscredits) except: return "You cannot use decimal credits." if (str(targetname) == "" or str(examname) == "" or str(guessmark) == "" or str(guesscredits) == ""): return 'Make sure you have chosen an exam, a target,a mark and an amount of credits!' examid = extractExamIDgivenGroup(examname, gamename) targetid = getUserID(targetname) if not (int(guessmark) >= 0 and int(guessmark) <= 100): return 'Predicted mark invalid. Make sure it is between 0 and 100!' groupid = extractGroupId(gamename) credits = GroupMember.objects.get(group_id=groupid, user_id=getUserID(user)) if int(credits.credits) < int(guesscredits): return 'You do not have enough credits.' elif int(guesscredits) <= 0: return 'You must use at least 1 credit.' exam = Exam.objects.get(pk=examid) target = User.objects.get(pk=targetid) if Bet.objects.filter(user=user, target=target, exam=exam).count() != 0: return 'You have aleady made a bet on that user for this exam.' resultEnteredCount = Result.objects.filter(exam_id=examid, user_id=targetid).count() if resultEnteredCount > 0: return str( target ) + ' has already entered their mark for this exam. You cannot place any further bets!' newBet = Bet(exam=exam, user=request.user, target=target, guess_mark=guessmark, guess_credits=guesscredits) groupid = extractGroupId(gamename) credits = GroupMember.objects.get(group_id=groupid, user_id=getUserID(user)) if int(credits.credits) < int(guesscredits): return 'Not enough credits!' elif int(guesscredits) <= 0: return 'Minimum amount of credits to bet is 1!' newBet.save() credits.credits = int(credits.credits) - int(guesscredits) credits.save() return False
def create(): form = CreateBetForm() if form.validate_on_submit(): with transaction() as tx: bet = Bet(title=form.name.data, description=form.description.data, owner=current_user) tx.add(bet) for t in form.outcomes.entries: tx.add(Outcome(title=t.data, bet=bet)) return redirect(url_for('bets.bet', bet_id=bet.bet_id)) return render_template("bets/create.html", create_form=form)
def bet_2_5sec(user, exchange_5sec, round_2_5sec): new_bet = Bet( user_id=user.id, round_id=round_2_5sec.id, bet_type=BetType.RISE, bet_result=BetResult.PENDING, amount=1000000, commission=100000, created_at=datetime(2000, 1, 1, 0, 5, 15), ) db.session.add(new_bet) db.session.commit() yield new_bet
def bet(user_identifier, bet_amount, alternative): user = db.session.query(User).filter( User.user_identifier == user_identifier).one() user.balance -= bet_amount db.session.commit() roulette_round = db.session.query(Roulette).filter( Roulette.id == 1).one().current_round user_bet = Bet(bet_amount, user.steamid, alternative, roulette_round) db.session.add(user_bet) db.session.commit()
def run(): while True: status = WALLET.getStatus() height = status['blockCount'] race_start = round_down(WALLET.getStatus()['blockCount']) race = height // RACELENGTH blocks_left = RACELENGTH - (height - race_start) if blocks_left == 1: # we want a gap block, where no more bets are read in continue if blocks_left == 30: # race ended, find winner and pay out pot = get_pot(race) insert_winner(race, pot) transactionData = WALLET.getTransactions( {'firstBlockIndex': race_start - 1}) # include bets from previous gap block for item in transactionData['result']['items']: for tx in item['transactions']: if tx['paymentId'] == '': continue if tx['transaction_hash'] in CONFIRMED_TXS: continue if tx['unlockTime'] == 0: CONFIRMED_TXS.append({ 'txid': tx['transaction_hash'], 'parsed': False }) for tx in CONFIRMED_TXS: if tx['parsed']: continue data = WALLET.getTransaction({'transactionHash': tx}) # remove invalid bets try: turtle = int(data['paymentId'][-1:]) # bet was invalid if turtle > 7: continue except ValueError: # bet was invalid continue bet = Bet(race_id=race, bet_on=turtle, amount=data['amount'], payment_id=data['paymentId']) tx['parsed'] = True print(tx)
def place_bet(request): data = json.loads(request.body) evt = Event.objects.get(id = data.get("event_id")) player = Player.objects.get(id = data.get("player_id")) bet_amount = data.get("amount") current_user = request.user ror = Player_event.objects.get(event_id=data.get("event_id"),player_id=data.get("player_id")).rate_of_return total_bet_amount = float(bet_amount)*float(ror) evt.total_bet_amount += total_bet_amount evt.save() if(check_if_more_betting_allowed(data.get("event_id"))): bet = Bet(event = evt, player = player, amount = bet_amount, rate_of_return = ror, user = current_user) bet.save() return HttpResponse("<html><body>Enjoy betting you sucker</body></html>") else: return HttpResponse("<html><body>betting closed for this event</body></html>")
def bet_add(): if not request.json or not 'stake' in request.json or len( request.json['lines']) == 0: abort(400) bet = Bet() bet.user_id = current_user.get_id() bet.stake = request.json['stake'] bet.timestamp = datetime.utcnow() db.session.add(bet) db.session.commit() for line in request.json['lines']: bt = BetTip(bet_id=bet.id, tip_id=line['id']) db.session.add(bt) db.session.commit() return jsonify({'success': True})
def lust_bet_repeet(message): user = User.get_user(message.from_user.id) last_bet = Bet.objects.filter(user=user).order_by('-date').first() bet_size = last_bet.bet_size bet_numbers = last_bet.bet_numbers bet_type = last_bet.bet_type Bet(user=user, bet_size=bet_size, bet_numbers=bet_numbers, bet_type=bet_type, date=time.strftime("%y.%m.%d (%H:%M:%S)")).save() print('New bet from:' + str(user.nickname)) if bet_type == 'Число(а)': bet_type = '' for number in bet_numbers: bet_type += f'{number}' bot.send_message(message.chat.id, text=f'Ставка принята: {bet_size}$ на "{bet_type}"\n' f'Ждите пока шарик остановится')
#functions def authenticate(username,password): try: user = User.get(username=username,password=password) except peewee.DoesNotExist: return None else: return user def create_bet(match,oddCode,category): try: odd = Odd.get(match=match,category=category,oddCode=oddCode) except peewee.DoesNotExist, e: raise BetError(str(e)) bet = Bet() bet.odd = odd return bet def verify(ticket_id): try: ticket = Ticket.get(id = ticket_id) if ticket.has_won(): return ticket else: return None except Ticket.DoesNotExist: return None
def init_bets() -> List[Bet]: """Bet initializer.""" return [Bet(**bet) for bet in BET_TYPES]
def bet_saver(call): roulette_kb = ReplyKeyboardMarkup(resize_keyboard=True, row_width=2) roulette_kb.add('Повторить', 'На что то другое', 'Новая ставка', 'Изменить сумму ставки', 'В главное меню') user = User.get_user(call.from_user.id) bet_size = call.data.split('_')[1] call_bet_type = call.data.split("_")[2] if call_bet_type == '⚫': bet_type = call_bet_type bet_numbers = [ 2, 4, 6, 8, 10, 11, 13, 15, 17, 20, 22, 24, 26, 28, 29, 31, 33, 35 ] in_message_bet = bet_type elif call_bet_type == '🔴': bet_type = call_bet_type bet_numbers = [ 1, 3, 5, 7, 9, 12, 14, 16, 18, 19, 21, 23, 25, 27, 30, 32, 34, 36 ] in_message_bet = bet_type elif call_bet_type == 'Четные': bet_type = call_bet_type bet_numbers = [ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36 ] in_message_bet = bet_type elif call_bet_type == 'Нечетные': bet_type = call_bet_type bet_numbers = [ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35 ] in_message_bet = bet_type elif call_bet_type == '1-18': bet_type = call_bet_type bet_numbers = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 ] in_message_bet = bet_type elif call_bet_type == '19-36': bet_type = call_bet_type bet_numbers = [ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36 ] in_message_bet = bet_type elif call_bet_type == '1-12': bet_type = call_bet_type bet_numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] in_message_bet = bet_type elif call_bet_type == '13-24': bet_type = call_bet_type bet_numbers = [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24] in_message_bet = bet_type elif call_bet_type == '25-36': bet_type = call_bet_type bet_numbers = [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36] in_message_bet = bet_type else: str_bet_numbers = call_bet_type.split(',') bet_numbers = [] for n in str_bet_numbers: bet_numbers.append(int(n)) bet_type = 'Число(а)' in_message_bet = call_bet_type Bet(user=user, bet_size=bet_size, bet_numbers=bet_numbers, bet_type=bet_type, date=time.strftime("%y.%m.%d (%H:%M:%S)")).save() print('New bet from:' + str(user.nickname)) bot.send_message( call.message.chat.id, text=f'Ставка принята: {bet_size}$ на "{in_message_bet}"\n' f'Ждите пока шарик остановится', reply_markup=roulette_kb)