@Matox

Почему не работает код?

Вот код моего телеграмм бота:
import telebot
from telebot import types
import webbrowser
import sqlite3
from aiogram.types.web_app_info import WebAppInfo


bot = telebot.TeleBot("#####")

@bot.message_handler()
def start_message(message):
    if message.text == "#####":
        db = sqlite3.connect("DataBase.db")
        c = db.cursor()
        markup = types.InlineKeyboardMarkup()
        markup.add(types.InlineKeyboardButton("Забрать приз ", callback_data="delete"))
        bot.send_message(message.chat.id, f"Ого, ты узнал кодовое слово!\nЗабирай свой приз 100000 ######!", reply_markup=markup)
        c.execute(f"UPDATE users SET coins = 100000 WHERE id = {message.from_user.id}")
        db.commit()
        db.close()
    else:
        db = sqlite3.connect("DataBase.db")
        c = db.cursor()
        markup = types.InlineKeyboardMarkup()
        user_id = message.from_user.id
        markup.add(types.InlineKeyboardButton("Поехали!", web_app=types.WebAppInfo(f"https://#########/?user_id={user_id}")))
        bot.send_message(message.chat.id,  f"Привет, {message.from_user.first_name}! Думаю ты уже ознакомился с нами \nКоманда ##### будет развивать данный проект и добавлять все больше новых плюшек\nИтак, ты готов к новому приключению?", reply_markup=markup)
        c.execute("SELECT * FROM users")
        lst = c.fetchall()
        k = 0
        for x in lst:
            if x[1] == message.from_user.id:
                k += 1
        if k == 0:
            c.execute("""INSERT INTO users VALUES(?, ?, ?)""", [message.from_user.first_name, message.from_user.id, 0])
        db.commit()
        db.close()
bot.polling(non_stop=True)

Вот код моего приложения:
import asyncio
import flet as ft
import sqlite3
from urllib.parse import urlparse, parse_qs

async def main(page: ft.Page) -> None:
    page.title = "Moy Click"
    page.theme_mode = ft.ThemeMode.DARK
    page.bgcolor = "#0F1525"
    page.vertical_alignment = ft.MainAxisAlignment.CENTER
    page.horizontal_alignment = ft.CrossAxisAlignment.CENTER

    parsed_url = urlparse(page.query)
    query_params = parse_qs(parsed_url.query)
    user_id = int(query_params.get("user_id", [None])[0])

    async def score_up(event: ft.ContainerTapEvent) -> None:
        if hasattr(event, 'control'):
            score.data += 1
            score.value = str(score.data)
            image.scale = 0.90
            score_counter.opacity = 1
            score_counter.value = "+1"
            # Assuming you want to position the score_counter at a fixed point
            score_counter.right = 0
            score_counter.left = tap_position[0]
            score_counter.top = tap_position[1]
            score_counter.bottom = 0   # Adjust as needed
            
            db = sqlite3.connect("DataBase.db")
            c = db.cursor()
            c.execute(f"UPDATE users SET coins = {score.data + 1} WHERE id = {user_id}")
            c.execute("SELECT * FROM users")
            print(c.fetchall())
            db.commit()
            db.close()

            progress_bar.value += (1 / 100)
            if score.data % 100 == 0:
                page.snack_bar = ft.SnackBar(
                    content=ft.Text(
                        value="+100 ",
                        size=20,
                        color="#ffffff",
                        text_align=ft.TextAlign.CENTER
                    ), 
                    bgcolor="#13AEEE"
                )
                page.snack_bar.open = True
                progress_bar.value = 0

            page.update()
            await asyncio.sleep(0.1)
            image.scale = 1
            score_counter.opacity = 0
            page.update()

    
    db = sqlite3.connect("DataBase.db")
    c = db.cursor()
    c.execute("SELECT * FROM users WHERE id=?", [user_id])
    userok = c.fetchone()
    score = ft.Text(value=f"{userok[2]}", size=100, data=userok[2])
    score_counter = ft.Text(size=50, animate_opacity=ft.Animation(duration=600, curve=ft.AnimationCurve.BOUNCE_IN))
    db.commit()
    db.close()

    image = ft.Image(
    src="####",
    fit=ft.ImageFit.CONTAIN, 
    animate_scale=ft.Animation(duration=600, curve=ft.AnimationCurve.EASE),
    border_radius=ft.border_radius.all(90)#НЕ РАБОТАЕТ ПОЧЕМУ-ТО
    )

    progress_bar = ft.ProgressBar(
        value=((userok[2] % 100) / 100),
        width=page.width - 100,
        bar_height=20,
        color="#ffffff",
        bgcolor="#1483B0"
    )

    def on_tap_down(event: ft.ContainerTapEvent):
        global tap_position
        tap_position = (event.local_x, event.local_y)

    page.add(
        score,
        ft.Container(
            content=ft.Stack(controls=[image, score_counter]),
            on_click=score_up,
            on_tap_down=on_tap_down,
            margin=ft.Margin(0, 0, 0, 30)
        ),
        ft.Container(
            content=progress_bar,
            border_radius=ft.BorderRadius(10, 10, 10, 10)
        )
    )

if __name__ == "__main__":
    tap_position = (0, 0)
    ft.app(target=main, view=ft.WEB_BROWSER, port=####)

Суть такая, что сначала пользователь пишет телеграмм боту любое сообщение, после чего из переменной message выбираются данные как имя пользователя и его id. После выборки, эти данные заносятся в sqlite3 таблицу, где требуется 3 вхождения данных user(text) id(int) coins (int). Если пользователь не зарегестрирован, то заносим в базу данных и даем значение coin 0, и если есть то все остается как есть. Бот предлагает сыграть в игру по кнопке, где нажав на нее, должно вылезти мое приложение на flet. И когда я запускаю все это дело, то захожу в тг бота, нажимаю на кнопку играть, и у меня просто белый экран WebApp приложения. В ngrok при заходе через телеграмм в консоли выдает "304 not modified" и 101 Switching Protocols. В чем ошибка в моем приложении?
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы