Бот не отвечает на сообщение, я думаю что это из за того, что обработчик в коде находится в самом конце, можно как то это исправить?
from aiogram import types, executor, Dispatcher, Bot
import sqlite3
token = ''
bot = Bot(token=token)
dp = Dispatcher(bot)
with sqlite3.connect("data.db") as db:
cursor = db.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS users(
chat_id TEXT not null ,
username TEXT not null ,
balance BIGINT
)""")
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
cursor.execute(f"SELECT chat_id FROM users WHERE chat_id = '{message.chat.id}'")
if cursor.fetchone() is None:
cursor.execute(f"INSERT INTO users VALUES(?,?,?)", (message.chat.id, message.from_user.username, 0)) #
await message.answer("База данных обновлена!")
print("Данные занесены в таблицу")
db.commit()
@dp.message_handler(content_types=['text'])
async def profile(msg: types.Message):
if msg.text.lower() == "профиль":
cursor.execute("SELECT * FROM users WHERE chat_id = '{msg.chat.id}'")
for value in cursor.execute(f"SELECT * FROM users WHERE chat_id = '{msg.chat.id}'"):
print(value[0], value[1], value[2])
await msg.answer(f"id: " + value[0] + "\n" + "Имя: " + value[1] + "\n" + "Баланс: " + str(value[2]))
@dp.message_handler(content_types=['text'])
async def balance(msg: types.Message):
if msg.text.lower() == "баланс":
for value in cursor.execute(f"SELECT balance FROM users WHERE chat_id = {msg.chat.id}"):
await msg.answer(f"Твой баланс: {value[0]}")
executor.start_polling(dp, skip_updates=True)
проблема с сообщением "баланс"