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 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
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."
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)
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}"
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()
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)