Вот код моего телеграмм бота:
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. В чем ошибка в моем приложении?