Пример #1
0
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
Пример #2
0
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
Пример #3
0
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'))
Пример #4
0
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>")
Пример #5
0
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
Пример #6
0
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
Пример #7
0
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)
Пример #8
0
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
Пример #9
0
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()
Пример #10
0
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)
Пример #11
0
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>")
Пример #12
0
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})
Пример #13
0
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'Ждите пока шарик остановится')
Пример #14
0
#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

Пример #15
0
def init_bets() -> List[Bet]:
    """Bet initializer."""

    return [Bet(**bet) for bet in BET_TYPES]
Пример #16
0
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)