Example #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
Example #2
0
def write_score(user, sender, team_name, points, description):
    # file_exists = os.path.isfile(f'./storage/{channel}.csv')
    # if not file_exists:
    #     with open(f'./storage/{channel}.csv', mode='w') as morningreport_file:
    #         header = ["User", "Date-time", "Points", "Sender", "Conv_id"]
    #         score_writer = csv.writer(morningreport_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
    #         if not file_exists:
    #             score_writer.writerow(header)
    #
    # with open(f'./storage/{channel}.csv', mode='a') as morningreport_file:
    #     score_writer = csv.writer(morningreport_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
    #     score_writer.writerow([user, datetime.datetime.now(), points, sender, channel])
    team = s.query(Team).filter(Team.name.match(team_name)).first()
    giver = s.query(User).filter(User.username.match(sender)).first()
    receiver = s.query(User).filter(User.username.match(user)).first()

    points = Point(giver_id=giver.id,
                   receiver_id=receiver.id,
                   team_id=team.id,
                   points=points,
                   description=description)
    s.add(points)
    s.commit()
    s.close()

    return
Example #3
0
async def payout_wager(username, team_name, wager_id, result, bot):
    team, user = get_team_user(team_name, username)
    marvn = s.query(User).filter_by(username='******').first()
    if result.lower() == 'true':
        result = True
    else:
        result = False
    msg = ""
    for wager in team.wagers:
        if wager.id == wager_id:

            msg = f"Wager: `#{wager.id}` - `CLOSED`\n" \
                  f'"{wager.description}"\n' \
                  f"{get_wager_bets(wager)}" \
                  f"Result: `{result}`"
            wager.result = result
            payout = False
            for bet in wager.bets[1:]:
                if bet.position != wager.bets[0].position:
                    payout = True
            if payout:
                for bet in wager.bets:
                    bet.result = result
                    if bet.position is not result:
                        points = bet.points * -1
                        msg += f"\nDeducting {bet.points} points from {bet.user}"
                        p = Point(giver_id=marvn.id, receiver_id=bet.user.id, team_id=team.id, points=points, description=f"Wager: #{wager.id}")

                        s.add(p)
                    else:
                        msg += f"\nPaying {bet.points} points to {bet.user}"
                        p = Point(giver_id=marvn.id, receiver_id=bet.user.id, team_id=team.id, points=bet.points, description=f"Wager: #{wager.id}")
                        s.add(p)
                    wager.is_closed = True
                    s.commit()
                await update_wager_msg(bot, wager, msg)
                s.close()
                return msg
            else:
                msg = f"Nobody took the Wager `#{wager_id}` so this didn't payout.\n" \
                       f"`{wager.description}`"
                wager.is_closed = True

                s.commit()
                await update_wager_msg(bot, wager, msg)
                s.close()
                return msg

    return f"Wager `#{wager_id}` is either already closed or non-existant."
Example #4
0
def sync_score(channel):
    with open(f'./storage/{channel.replace(",", "")}.csv',
              mode='r') as csvfile:
        reader = csv.DictReader(csvfile)
        for row in reader:
            team = s.query(Team).filter(Team.name.match(channel)).first()
            receiver = s.query(User).filter(User.username.match(
                row['User'])).first()
            giver = s.query(User).filter(User.username.match(
                row['Sender'])).first()

            points = Point(giver_id=giver.id,
                           receiver_id=receiver.id,
                           team_id=team.id,
                           points=int(row['Points']))
            s.add(points)
            s.commit()
            s.close()
            print(row)
Example #5
0
def set_till(team_name, event_name, event_time):
    event_name = event_name.strip('`')
    team = get_team(team_name)
    till_event = dateparser.parse(event_time,
                                  settings={
                                      'PREFER_DATES_FROM': 'future',
                                      'TIMEZONE': 'US/Eastern',
                                      'RETURN_AS_TIMEZONE_AWARE': True
                                  })
    print(till_event)

    current_time = datetime.now(pytz.timezone('America/New_York'))
    tills = team.tills.filter(Till.name == event_name).filter(
        Till.event > current_time).all()
    if len(tills) > 0:
        return f"There is already a till set for {event_name}\n{tills[0]}"
    till = Till(team_id=team.id, name=event_name, event=till_event)
    s.add(till)
    s.commit()
    return f"{till}"
Example #6
0
async def sync(event, bot):
    conv_id = event.msg.conv_id
    channel = event.msg.channel.name
    members = await get_channel_members(conv_id, bot)

    team = s.query(Team).filter(Team.name.match(channel)).first()
    if not team:
        new_team = Team(name=channel)
        s.add(new_team)

    for member in members:
        user = s.query(User).filter(User.username.match(member)).first()
        if not user:
            new_user = User(username=member)
            team = s.query(Team).filter(Team.name.match(channel)).first()
            new_user.teams = [team]
            s.add(new_user)
    await bot.chat.react(conv_id, event.msg.id, ":arrows_clockwise:")
    s.commit()
    s.close()
Example #7
0
lad2 = localad(
    title='Продам літак Boeing',
    author='Ібрагім',
    price='1,000,000,000 $',
    userid=user1
)

lad3 = localad(
    title='Куплю чайник',
    author='Володимир Великий',
    price='Договірна',
    userid=user2
)
#with session_scope() as s:
s.add(pad1)

s.add(city1)
s.add(city2)
s.add(city3)
s.add(city4)
s.add(city5)
s.add(city6)

s.add(user1)
s.add(user2)
s.add(user3)

s.add(lad1)
s.add(lad2)
s.add(lad3)