Уже второй день мучаюсь с кодом, кто поправит код, тому монета from aiogram.types import Message from settings import coefs from bot.utils import func, text from settings.constants import knb import asyncio, random import main import config from datetime import datetime import pytz from bot import keyboards import asyncio async def start_tasks(): t = asyncio.create_task(check_contest()) async def check_contest(): while True: try: contests = main.db.get_all_contests() if contests: for contest in contests: contest_end_str = contest[7] contest_end = datetime.strptime(contest_end_str, "%d.%m.%Y %H:%M") current_datetime = datetime.now(pytz.timezone('Europe/Moscow')) if current_datetime > contest_end: try: bal = main.db.get_balance(contest[11]) new_bal = float(bal) + float(contest[8]) main.db.update_balance(contest[11], new_bal) except: pass try: await main.bot.send_message(contest[10], f"<b> Вы выиграли в конкурсе! +{contest[8]} USDT на ваш баланс</b>") except: pass await main.bot.send_message(config.MAIN_CHANNEL, f"<b> Конкурс №{contest[0]} завершён!</b>\n<blockquote><b>Победитель получил приз ({contest[8]}$) на баланс в нашем реф боте.</b></blockquote>", reply_to_message_id=contest[9]) main.db.end_contest(contest[0]) except: pass await asyncio.sleep(2) async def update_contest(user_id, username, amount): text = """<b>ПРИЗ ЗА САМУЮ БОЛЬШУЮ СТАВКУ ДО %end_date% - Победитель получит %win_amount%$ </b> <i>Каждый день в 21.59 МСК запускается конкурс</i> <b>ТОП 1</b> <blockquote>Игрок: %top1% Сумма ставки: %top1_summa%$</blockquote> <b>ТОП 2</b> <blockquote>Игрок: %top2% Сумма ставки: %top2_summa%$</blockquote> <b>ТОП 3 </b> <blockquote>Игрок: %top3% Сумма ставки: %top3_summa%$</blockquote>""" while True: try: contest = main.db.get_contest() # Initialize current top values top1_id, top1, top1_summa = contest[11], contest[1], contest[2] top2_id, top2, top2_summa = contest[12], contest[3], contest[4] top3_id, top3, top3_summa = contest[13], contest[5], contest[6] if top1 == "Пустое место": top1_summa = float(0) if top2 == "Пустое место": top2_summa = float(0) if top3 == "Пустое место": top3_summa = float(0) if amount > top1_summa: top3_id, top3, top3_summa = top2_id, top2, top2_summa top2_id, top2, top2_summa = top1_id, top1, top1_summa top1_id, top1, top1_summa = user_id, username, amount elif amount > top2_summa and top1 != username: top3_id, top3, top3_summa = top2_id, top2, top2_summa top2_id, top2, top2_summa = user_id, username, amount elif amount > top3_summa and top2 != username and top1 != username: top3_id, top3, top3_summa = user_id, username, amount # Update the contest table with the new values main.db.update_contest( top1_id=top1_id, top1=top1, top1_summa=top1_summa, top2_id=top2_id, top2=top2, top2_summa=top2_summa, top3_id=top3_id, top3=top3, top3_summa=top3_summa, contest_id=contest[0] ) # Fetch updated contest details contest = main.db.get_contestt(contest[0]) if contest[10] != 1: text = text.replace("%end_date%", str(contest[7])).replace("%win_amount%", str(contest[8])) text = text.replace("%top1%", str(contest[1])).replace("%top1_summa%", str(contest[2])) text = text.replace("%top2%", str(contest[3])).replace("%top2_summa%", str(contest[4])) text = text.replace("%top3%", str(contest[5])).replace("%top3_summa%", str(contest[6])) try: await main.bot.edit_message_caption(caption=text, chat_id=config.MAIN_CHANNEL, message_id=contest[9], reply_markup=keyboards.functional.create_url_button(config.CHECK_URL, 'Испытать удачу')) except Exception as e: print(e) pass else: main.db.del_contest(contest[0]) pass except Exception as e: print(f"An error occurred: {e}") pass def get_lvl(total_got): level, percent = None, None if total_got < 1: level = 1 percent = 7 elif total_got >= 150 and total_got < 550: level = 2 percent = 9 elif total_got >= 550 and total_got < 1350: level = 3 percent = 10.5 elif total_got >= 1350 and total_got < 2000: level = 4 percent = 11 elif total_got >= 2000 and total_got < 5000: level = 5 percent = 11.7 elif total_got >= 5000: level = 6 percent = 13.5 return level, percent async def ref(user_id, stavka): r = main.db.get_ref(user_id) if r is not None: bal = main.db.get_balance(r) lvl, perc = get_lvl(main.db.get_total_got(r)) percent = float(stavka) * (float(perc) / 100) new_bal = bal + percent main.db.update_balance(r, new_bal) total_got = main.db.get_total_got(r) new_total_got = total_got + percent main.db.update_total_got(r, new_total_got) try: await main.bot.send_message(r, f"<b> Выплата за проигрыш реферала! +{percent:.2f} USDT</b> <i>Доступно: {new_bal:.2f} USDT на балансе</i>") except: pass class GameProcess: def __init__(self, amount, asset, coef, user_id, username) -> None: self.amount = amount self.asset = asset self.coef = coef self.id = user_id self.username = username self.settings = main.db.get_settings()[3] self.podkrut = True if self.settings == 1 else False async def basketball_process(self, message, type = "goal", fake=False): msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') if self.podkrut == True: p = random.randint(1, 10) if p > 5: await msg.delete() msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') await asyncio.sleep(2) v=msg.dice.value if type == "goal": if v==4 or v==5: if fake == False: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) if fake == False: self.coef += coefs.BASKET await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Мяч попал в кольцо", photo="basketgol.jpg", fake=fake) else: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Мяч не попал в кольцо", photo="basketmimo.jpg") else: self.coef += coefs.BASKET_MISS if v==3 or v==1 or v==2: if fake == False: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Мяч не попал в кольцо", photo="basketmimo.jpg", fake=fake) else: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Мяч попал в кольцо", photo="basketgol.jpg") async def footaball_process(self, message, type = "goal", fake=False): msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='⚽') if self.podkrut == True: p = random.randint(1, 10) if p > 5: await msg.delete() msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='⚽') await asyncio.sleep(2) v=msg.dice.value if type == "goal": self.coef += coefs.FOOTBALL if v==4 or v==5 or v==3: if fake == False: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Мяч попал в ворота", photo="gol.jpg", fake=fake) else: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Мяч не попал в ворота", photo="futmimo.jpg") else: self.coef += coefs.FOOTBALL_MISS if v==1 or v==2: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Мяч не попал в ворота", photo="futmimo.jpg") else: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Мяч попал в ворота", photo="gol.jpg") async def darts_procces(self, message, type = 'center', fake=False): msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') if self.podkrut == True: p = random.randint(1, 10) if p > 5: await msg.delete() msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') await asyncio.sleep(2) v=msg.dice.value if type == "w": self.coef += coefs.DARTS_COLOR if v==3 or v==5: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Попало в белое", photo="white.jpg") elif v == 6: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Попало в центр", photo="centr.jpg") elif v == 1: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Не попало", photo="drotikmimo.jpg") else: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Попало в красное", photo="red.jpg") elif type == "r": self.coef += coefs.DARTS_COLOR if v==4 or v==2: if fake == False: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) if fake == False: await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Попало в красное", photo="red.jpg", fake=fake) elif v == 6: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Попало в центр", photo="centr.jpg") elif v == 1: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Не попало", photo="drotikmimo.jpg") else: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Попало в белое", photo="white.jpg") elif type == "miss": self.coef += coefs.DARTS if v == 1: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Не попало", photo="drotikmimo.jpg") elif v==3 or v==5: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Попало в белое", photo="white.jpg") elif v==4 or v==2: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Попало в красное", photo="red.jpg") else: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Попало в центр", photo="centr.jpg") else: self.coef += coefs.DARTS if v==6: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Попало в центр", photo="centr.jpg") elif v==3 or v==5: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Попало в белое", photo="white.jpg") elif v==4 or v==2: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Попало в красное", photo="red.jpg") elif v == 1: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Не попало", photo="drotikmimo.jpg") async def dice_procces(self, message, type, n = None, fake=False): if type not in ['2more', '2less']: msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') if self.podkrut == True: p = random.randint(1, 10) if p > 5: await msg.delete() msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') else: msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') if self.podkrut == True: p = random.randint(1, 10) if p > 5: await msg.delete() msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') msg2 = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') if self.podkrut == True: p = random.randint(1, 10) if p > 5: await msg.delete() msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') v2 = msg2.dice.value await asyncio.sleep(2) v = msg.dice.value if type == "2more": count_more = 0 if v > 3: count_more += 1 if v2 > 3: count_more += 1 self.coef += coefs.MORE2 if count_more == 2: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпало {count_more} больше") else: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f'Выпало {count_more} больше', 'lose.jpg') elif type == '2less': count_less = 0 if v < 4: count_less += 1 if v2 < 4: count_less += 1 self.coef += coefs.LESS2 if count_less == 2: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпало {count_less} меньше") else: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпало {count_less} меньше", 'lose.jpg') elif type == "number": self.coef += coefs.DICE_NUMBER if n == v: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпало значение [{v}]", photo="win.jpg") else: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпало значение [{v}]", photo="lose.jpg") elif type == "sector1": self.coef += coefs.SECTOR if v in [1, 2]: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпал первый сектор [{v}]", photo="s1.jpg") elif v in [3, 4]: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпал второй сектор [{v}]", photo="s2.jpg") elif v in [5, 6]: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпал третий сектор [{v}]", photo="s3.jpg") elif type == "sector2": self.coef += coefs.SECTOR if v in [1, 2]: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпал первый сектор [{v}]", photo="s1.jpg") if v in [3, 4]: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпал второй сектор [{v}]", photo="s2.jpg") elif v in [5, 6]: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпал третий сектор [{v}]", photo="s3.jpg") elif type == "sector3": self.coef += coefs.SECTOR if v in [1, 2]: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпал первый сектор [{v}]", photo="s1.jpg") elif v in [3, 4]: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпал второй сектор [{v}]", photo="s2.jpg") if v in [5, 6]: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпал третий сектор [{v}]", photo="s3.jpg") elif type == "even": self.coef += coefs.DICE if v == 2 or v == 4 or v==6: if fake == False: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпало четное значение [{v}]", photo="chet.jpg", fake=fake) else: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпало нечетное значение [{v}]", photo="nechet.jpg") elif type == "odd": self.coef += coefs.DICE v = msg.dice.value if v == 1 or v == 3 or v==5: if fake == False: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпало нечетное значение [{v}]", photo="nechet.jpg", fake=fake) else: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпало четное значение [{v}]", photo="chet.jpg") elif type == "more": self.coef += coefs.DICE_MORE_LESS v = msg.dice.value v= msg.dice.value if v == 4 or v == 5 or v==6: if fake == False: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпало значение больше [{v}]", photo="bolshe.jpg", fake=fake) else: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпало значение меньше [{v}]", photo="menshe.jpg") elif type == "less": self.coef += coefs.DICE_MORE_LESS v = msg.dice.value v= msg.dice.value if v == 1 or v == 2 or v==3: if fake == False: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпало значение меньше [{v}]", photo="menshe.jpg", fake=fake) else: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпало значение больше [{v}]", photo="bolshe.jpg") async def duel_number_process(self, message, num, game = '', textes = ["первого кубика", "второго кубика", "ничьи кубиков"], fake=False): if num < 3: self.coef += coefs.DUEL else: self.coef += coefs.DRAW cub1 = await main.bot.send_dice(config.MAIN_CHANNEL) if self.podkrut == True: p = random.randint(1, 10) if p > 5: await cub1.delete() cub1 = await main.bot.send_dice(config.MAIN_CHANNEL) cub2 = await main.bot.send_dice(config.MAIN_CHANNEL) if self.podkrut == True: p = random.randint(1, 10) if p > 5: await cub2.delete() cub2 = await main.bot.send_dice(config.MAIN_CHANNEL) msguser = cub1 msgbot = cub2 await asyncio.sleep(2) if msguser.dice.value > msgbot.dice.value: if num == 1: if fake == False: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) photo = 'win1.jpg' if game == '' else "win.jpg" add = textes[0] if msguser.dice.value > msgbot.dice.value else textes[1] if msguser.dice.value < msgbot.dice.value else textes[2] await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Игра закрыта со счётом [{msguser.dice.value}:{msgbot.dice.value}] в пользу {add}", photo, 'c', fake=fake) elif num > 2: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) photo = 'win1.jpg' if msguser.dice.value > msgbot.dice.value else 'win2.jpg' if msguser.dice.value < msgbot.dice.value else 'draw.jpg' add = textes[0] if msguser.dice.value > msgbot.dice.value else textes[1] if msguser.dice.value < msgbot.dice.value else textes[2] await func.looser(message, f"Игра закрыта со счётом [{msguser.dice.value}:{msgbot.dice.value}] в пользу {add}") else: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, float(self.amount*floa Python from aiogram.types import Message from settings import coefs from bot.utils import func, text from settings.constants import knb import asyncio, random import main import config from datetime import datetime import pytz from bot import keyboards import asyncio async def start_tasks(): t = asyncio.create_task(check_contest()) async def check_contest(): while True: try: contests = main.db.get_all_contests() if contests: for contest in contests: contest_end_str = contest[7] contest_end = datetime.strptime(contest_end_str, "%d.%m.%Y %H:%M") current_datetime = datetime.now(pytz.timezone('Europe/Moscow')) if current_datetime > contest_end: try: bal = main.db.get_balance(contest[11]) new_bal = float(bal) + float(contest[8]) main.db.update_balance(contest[11], new_bal) except: pass try: await main.bot.send_message(contest[10], f"<b> Вы выиграли в конкурсе! +{contest[8]} USDT на ваш баланс</b>") except: pass await main.bot.send_message(config.MAIN_CHANNEL, f"<b> Конкурс №{contest[0]} завершён!</b>\n<blockquote><b>Победитель получил приз ({contest[8]}$) на баланс в нашем реф боте.</b></blockquote>", reply_to_message_id=contest[9]) main.db.end_contest(contest[0]) except: pass await asyncio.sleep(2) async def update_contest(user_id, username, amount): text = """<b>ПРИЗ ЗА САМУЮ БОЛЬШУЮ СТАВКУ ДО %end_date% - Победитель получит %win_amount%$ </b> <i>Каждый день в 21.59 МСК запускается конкурс</i> <b>ТОП 1</b> <blockquote>Игрок: %top1% Сумма ставки: %top1_summa%$</blockquote> <b>ТОП 2</b> <blockquote>Игрок: %top2% Сумма ставки: %top2_summa%$</blockquote> <b>ТОП 3 </b> <blockquote>Игрок: %top3% Сумма ставки: %top3_summa%$</blockquote>""" while True: try: contest = main.db.get_contest() # Initialize current top values top1_id, top1, top1_summa = contest[11], contest[1], contest[2] top2_id, top2, top2_summa = contest[12], contest[3], contest[4] top3_id, top3, top3_summa = contest[13], contest[5], contest[6] if top1 == "Пустое место": top1_summa = float(0) if top2 == "Пустое место": top2_summa = float(0) if top3 == "Пустое место": top3_summa = float(0) if amount > top1_summa: top3_id, top3, top3_summa = top2_id, top2, top2_summa top2_id, top2, top2_summa = top1_id, top1, top1_summa top1_id, top1, top1_summa = user_id, username, amount elif amount > top2_summa and top1 != username: top3_id, top3, top3_summa = top2_id, top2, top2_summa top2_id, top2, top2_summa = user_id, username, amount elif amount > top3_summa and top2 != username and top1 != username: top3_id, top3, top3_summa = user_id, username, amount # Update the contest table with the new values main.db.update_contest( top1_id=top1_id, top1=top1, top1_summa=top1_summa, top2_id=top2_id, top2=top2, top2_summa=top2_summa, top3_id=top3_id, top3=top3, top3_summa=top3_summa, contest_id=contest[0] ) # Fetch updated contest details contest = main.db.get_contestt(contest[0]) if contest[10] != 1: text = text.replace("%end_date%", str(contest[7])).replace("%win_amount%", str(contest[8])) text = text.replace("%top1%", str(contest[1])).replace("%top1_summa%", str(contest[2])) text = text.replace("%top2%", str(contest[3])).replace("%top2_summa%", str(contest[4])) text = text.replace("%top3%", str(contest[5])).replace("%top3_summa%", str(contest[6])) try: await main.bot.edit_message_caption(caption=text, chat_id=config.MAIN_CHANNEL, message_id=contest[9], reply_markup=keyboards.functional.create_url_button(config.CHECK_URL, 'Испытать удачу')) except Exception as e: print(e) pass else: main.db.del_contest(contest[0]) pass except Exception as e: print(f"An error occurred: {e}") pass def get_lvl(total_got): level, percent = None, None if total_got < 1: level = 1 percent = 7 elif total_got >= 150 and total_got < 550: level = 2 percent = 9 elif total_got >= 550 and total_got < 1350: level = 3 percent = 10.5 elif total_got >= 1350 and total_got < 2000: level = 4 percent = 11 elif total_got >= 2000 and total_got < 5000: level = 5 percent = 11.7 elif total_got >= 5000: level = 6 percent = 13.5 return level, percent async def ref(user_id, stavka): r = main.db.get_ref(user_id) if r is not None: bal = main.db.get_balance(r) lvl, perc = get_lvl(main.db.get_total_got(r)) percent = float(stavka) * (float(perc) / 100) new_bal = bal + percent main.db.update_balance(r, new_bal) total_got = main.db.get_total_got(r) new_total_got = total_got + percent main.db.update_total_got(r, new_total_got) try: await main.bot.send_message(r, f"<b> Выплата за проигрыш реферала! +{percent:.2f} USDT</b> <i>Доступно: {new_bal:.2f} USDT на балансе</i>") except: pass class GameProcess: def __init__(self, amount, asset, coef, user_id, username) -> None: self.amount = amount self.asset = asset self.coef = coef self.id = user_id self.username = username self.settings = main.db.get_settings()[3] self.podkrut = True if self.settings == 1 else False async def basketball_process(self, message, type = "goal", fake=False): msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') if self.podkrut == True: p = random.randint(1, 10) if p > 5: await msg.delete() msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') await asyncio.sleep(2) v=msg.dice.value if type == "goal": if v==4 or v==5: if fake == False: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) if fake == False: self.coef += coefs.BASKET await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Мяч попал в кольцо", photo="basketgol.jpg", fake=fake) else: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Мяч не попал в кольцо", photo="basketmimo.jpg") else: self.coef += coefs.BASKET_MISS if v==3 or v==1 or v==2: if fake == False: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Мяч не попал в кольцо", photo="basketmimo.jpg", fake=fake) else: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Мяч попал в кольцо", photo="basketgol.jpg") async def footaball_process(self, message, type = "goal", fake=False): msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='⚽') if self.podkrut == True: p = random.randint(1, 10) if p > 5: await msg.delete() msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='⚽') await asyncio.sleep(2) v=msg.dice.value if type == "goal": self.coef += coefs.FOOTBALL if v==4 or v==5 or v==3: if fake == False: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Мяч попал в ворота", photo="gol.jpg", fake=fake) else: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Мяч не попал в ворота", photo="futmimo.jpg") else: self.coef += coefs.FOOTBALL_MISS if v==1 or v==2: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Мяч не попал в ворота", photo="futmimo.jpg") else: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Мяч попал в ворота", photo="gol.jpg") async def darts_procces(self, message, type = 'center', fake=False): msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') if self.podkrut == True: p = random.randint(1, 10) if p > 5: await msg.delete() msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') await asyncio.sleep(2) v=msg.dice.value if type == "w": self.coef += coefs.DARTS_COLOR if v==3 or v==5: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Попало в белое", photo="white.jpg") elif v == 6: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Попало в центр", photo="centr.jpg") elif v == 1: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Не попало", photo="drotikmimo.jpg") else: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Попало в красное", photo="red.jpg") elif type == "r": self.coef += coefs.DARTS_COLOR if v==4 or v==2: if fake == False: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) if fake == False: await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Попало в красное", photo="red.jpg", fake=fake) elif v == 6: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Попало в центр", photo="centr.jpg") elif v == 1: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Не попало", photo="drotikmimo.jpg") else: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Попало в белое", photo="white.jpg") elif type == "miss": self.coef += coefs.DARTS if v == 1: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Не попало", photo="drotikmimo.jpg") elif v==3 or v==5: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Попало в белое", photo="white.jpg") elif v==4 or v==2: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Попало в красное", photo="red.jpg") else: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Попало в центр", photo="centr.jpg") else: self.coef += coefs.DARTS if v==6: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Попало в центр", photo="centr.jpg") elif v==3 or v==5: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Попало в белое", photo="white.jpg") elif v==4 or v==2: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Попало в красное", photo="red.jpg") elif v == 1: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Не попало", photo="drotikmimo.jpg") async def dice_procces(self, message, type, n = None, fake=False): if type not in ['2more', '2less']: msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') if self.podkrut == True: p = random.randint(1, 10) if p > 5: await msg.delete() msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') else: msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') if self.podkrut == True: p = random.randint(1, 10) if p > 5: await msg.delete() msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') msg2 = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') if self.podkrut == True: p = random.randint(1, 10) if p > 5: await msg.delete() msg = await main.bot.send_dice(config.MAIN_CHANNEL, emoji='') v2 = msg2.dice.value await asyncio.sleep(2) v = msg.dice.value if type == "2more": count_more = 0 if v > 3: count_more += 1 if v2 > 3: count_more += 1 self.coef += coefs.MORE2 if count_more == 2: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпало {count_more} больше") else: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f'Выпало {count_more} больше', 'lose.jpg') elif type == '2less': count_less = 0 if v < 4: count_less += 1 if v2 < 4: count_less += 1 self.coef += coefs.LESS2 if count_less == 2: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпало {count_less} меньше") else: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпало {count_less} меньше", 'lose.jpg') elif type == "number": self.coef += coefs.DICE_NUMBER if n == v: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпало значение [{v}]", photo="win.jpg") else: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпало значение [{v}]", photo="lose.jpg") elif type == "sector1": self.coef += coefs.SECTOR if v in [1, 2]: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпал первый сектор [{v}]", photo="s1.jpg") elif v in [3, 4]: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпал второй сектор [{v}]", photo="s2.jpg") elif v in [5, 6]: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпал третий сектор [{v}]", photo="s3.jpg") elif type == "sector2": self.coef += coefs.SECTOR if v in [1, 2]: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпал первый сектор [{v}]", photo="s1.jpg") if v in [3, 4]: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпал второй сектор [{v}]", photo="s2.jpg") elif v in [5, 6]: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпал третий сектор [{v}]", photo="s3.jpg") elif type == "sector3": self.coef += coefs.SECTOR if v in [1, 2]: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпал первый сектор [{v}]", photo="s1.jpg") elif v in [3, 4]: await ref(self.id, self.amount) main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпал второй сектор [{v}]", photo="s2.jpg") if v in [5, 6]: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпал третий сектор [{v}]", photo="s3.jpg") elif type == "even": self.coef += coefs.DICE if v == 2 or v == 4 or v==6: if fake == False: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпало четное значение [{v}]", photo="chet.jpg", fake=fake) else: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпало нечетное значение [{v}]", photo="nechet.jpg") elif type == "odd": self.coef += coefs.DICE v = msg.dice.value if v == 1 or v == 3 or v==5: if fake == False: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпало нечетное значение [{v}]", photo="nechet.jpg", fake=fake) else: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпало четное значение [{v}]", photo="chet.jpg") elif type == "more": self.coef += coefs.DICE_MORE_LESS v = msg.dice.value v= msg.dice.value if v == 4 or v == 5 or v==6: if fake == False: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпало значение больше [{v}]", photo="bolshe.jpg", fake=fake) else: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпало значение меньше [{v}]", photo="menshe.jpg") elif type == "less": self.coef += coefs.DICE_MORE_LESS v = msg.dice.value v= msg.dice.value if v == 1 or v == 2 or v==3: if fake == False: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Выпало значение меньше [{v}]", photo="menshe.jpg", fake=fake) else: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) await func.looser(message, f"Выпало значение больше [{v}]", photo="bolshe.jpg") async def duel_number_process(self, message, num, game = '', textes = ["первого кубика", "второго кубика", "ничьи кубиков"], fake=False): if num < 3: self.coef += coefs.DUEL else: self.coef += coefs.DRAW cub1 = await main.bot.send_dice(config.MAIN_CHANNEL) if self.podkrut == True: p = random.randint(1, 10) if p > 5: await cub1.delete() cub1 = await main.bot.send_dice(config.MAIN_CHANNEL) cub2 = await main.bot.send_dice(config.MAIN_CHANNEL) if self.podkrut == True: p = random.randint(1, 10) if p > 5: await cub2.delete() cub2 = await main.bot.send_dice(config.MAIN_CHANNEL) msguser = cub1 msgbot = cub2 await asyncio.sleep(2) if msguser.dice.value > msgbot.dice.value: if num == 1: if fake == False: main.db.add_bet(self.id, float(self.amount*float(self.coef)), win=1) photo = 'win1.jpg' if game == '' else "win.jpg" add = textes[0] if msguser.dice.value > msgbot.dice.value else textes[1] if msguser.dice.value < msgbot.dice.value else textes[2] await func.winner(message, self.amount, self.asset, self.coef, self.id, self.username, f"Игра закрыта со счётом [{msguser.dice.value}:{msgbot.dice.value}] в пользу {add}", photo, 'c', fake=fake) elif num > 2: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, self.amount, lose=1) photo = 'win1.jpg' if msguser.dice.value > msgbot.dice.value else 'win2.jpg' if msguser.dice.value < msgbot.dice.value else 'draw.jpg' add = textes[0] if msguser.dice.value > msgbot.dice.value else textes[1] if msguser.dice.value < msgbot.dice.value else textes[2] await func.looser(message, f"Игра закрыта со счётом [{msguser.dice.value}:{msgbot.dice.value}] в пользу {add}") else: if fake == False: await ref(self.id, self.amount) if fake == False: main.db.add_bet(self.id, float(self.amount*floa
Ошибка: Task exception was never retrievedfuture: <Task finished name='Task-5' coro=<check_queue() done, defined at C:\Users\Administrator\Desktop\casic\bot\handlers\game.py:37> exception=TypeError("float() argument must be a string or a real number, not 'NoneType'")>Traceback (most recent call last): File "C:\Users\Administrator\Desktop\casic\bot\handlers\game.py", line 48, in check_queue await handle_bet(q[1], 'USDT', q[2], q[3], q[4], q[5]) File "C:\Users\Administrator\Desktop\casic\bot\handlers\game.py", line 84, in handle_bet await gp.dice_procces(message.message_id, 'even', fake=fake) File "C:\Users\Administrator\Desktop\casic\bot\utils\game_process.py", line 455, in dice_procces if fake == False: await ref(self.id, self.amount) File "C:\Users\Administrator\Desktop\casic\bot\utils\game_process.py", line 151, in ref percent = float(stavka) * (float(perc) / 100)TypeError: float() argument must be a string or a real number, not 'NoneType'
ЛОГИН, Ошибка указывает на то, что в функции `ref` переменная `perc` имеет значение `None`, и это приводит к ошибке при попытке преобразования её в `float`. Чтобы исправить это, нужно удостовериться, что `get_lvl` всегда возвращает корректные значения для уровня (`level`) и процента (`percent`). ### Исправленный код: Добавим проверку и корректную обработку случаев, когда `get_lvl` возвращает `None`. ```python def get_lvl(total_got): level, percent = None, None if total_got < 1: level = 1 percent = 7 elif total_got >= 150 and total_got < 550: level = 2 percent = 9 elif total_got >= 550 and total_got < 1350: level = 3 percent = 10.5 elif total_got >= 1350 and total_got < 2000: level = 4 percent = 11 elif total_got >= 2000 and total_got < 5000: level = 5 percent = 11.7 elif total_got >= 5000: level = 6 percent = 13.5 # Добавим обработку значения по умолчанию if percent is None: percent = 0 return level, percent ``` ### Дополнительные изменения в функции `ref`: Добавим проверку значений `stavka` и `percent`, чтобы избежать подобных ошибок в будущем. ```python async def ref(user_id, stavka): r = main.db.get_ref(user_id) if r is not None: bal = main.db.get_balance(r) lvl, perc = get_lvl(main.db.get_total_got(r)) # Проверяем значение perc if perc is None: perc = 0 # Проверяем значение stavka if stavka is None: stavka = 0 try: percent = float(stavka) * (float(perc) / 100) except (ValueError, TypeError): percent = 0 # Защита от ошибок new_bal = bal + percent main.db.update_balance(r, new_bal) total_got = main.db.get_total_got(r) new_total_got = total_got + percent main.db.update_total_got(r, new_total_got) try: await main.bot.send_message(r, f"<b> Выплата за проигрыш реферала! +{percent:.2f} USDT</b> <i>Доступно: {new_bal:.2f} USDT на балансе</i>") except Exception as e: print(f"Error sending message to referrer: {e}") ``` ### Причина ошибки: Ошибка возникает из-за того, что `get_lvl` не всегда возвращает значение `percent`, если условия не совпадают с предоставленным диапазоном. Проверки и значения по умолчанию предотвращают подобные ошибки. Python Ошибка указывает на то, что в функции `ref` переменная `perc` имеет значение `None`, и это приводит к ошибке при попытке преобразования её в `float`. Чтобы исправить это, нужно удостовериться, что `get_lvl` всегда возвращает корректные значения для уровня (`level`) и процента (`percent`). ### Исправленный код: Добавим проверку и корректную обработку случаев, когда `get_lvl` возвращает `None`. ```python def get_lvl(total_got): level, percent = None, None if total_got < 1: level = 1 percent = 7 elif total_got >= 150 and total_got < 550: level = 2 percent = 9 elif total_got >= 550 and total_got < 1350: level = 3 percent = 10.5 elif total_got >= 1350 and total_got < 2000: level = 4 percent = 11 elif total_got >= 2000 and total_got < 5000: level = 5 percent = 11.7 elif total_got >= 5000: level = 6 percent = 13.5 # Добавим обработку значения по умолчанию if percent is None: percent = 0 return level, percent ``` ### Дополнительные изменения в функции `ref`: Добавим проверку значений `stavka` и `percent`, чтобы избежать подобных ошибок в будущем. ```python async def ref(user_id, stavka): r = main.db.get_ref(user_id) if r is not None: bal = main.db.get_balance(r) lvl, perc = get_lvl(main.db.get_total_got(r)) # Проверяем значение perc if perc is None: perc = 0 # Проверяем значение stavka if stavka is None: stavka = 0 try: percent = float(stavka) * (float(perc) / 100) except (ValueError, TypeError): percent = 0 # Защита от ошибок new_bal = bal + percent main.db.update_balance(r, new_bal) total_got = main.db.get_total_got(r) new_total_got = total_got + percent main.db.update_total_got(r, new_total_got) try: await main.bot.send_message(r, f"<b> Выплата за проигрыш реферала! +{percent:.2f} USDT</b> <i>Доступно: {new_bal:.2f} USDT на балансе</i>") except Exception as e: print(f"Error sending message to referrer: {e}") ``` ### Причина ошибки: Ошибка возникает из-за того, что `get_lvl` не всегда возвращает значение `percent`, если условия не совпадают с предоставленным диапазоном. Проверки и значения по умолчанию предотвращают подобные ошибки.
Ты создаешь уже четвертую блядь тему. Ошибка в том, что stavka и/или perc являются None, а float(None) раисает ошибку. ИДИ в раздел проги и купи доработку за usd, не сри в этом разделе https://lolz.live/forums/910/