
Полная версия
Telegram-бот с монетизацией: практическое руководство для тех, кто не умеет программировать
new_streak = row["streak"] + 1 if row["last_done"] == yesterday else 1
conn.execute(
"UPDATE habits SET streak = ?, last_done = ? WHERE id = ?",
(new_streak, today, habit_id),
)
return new_streak, False
Три случая, которые обрабатывает эта функция:
— Уже отмечено сегодня — ничего не меняем, сообщаем об этом. Без этой проверки пользователь накрутит стрик до сотни за минуту, нажав кнопку сто раз.
— Отмечено вчера — стрик продолжается, увеличиваем на единицу.
— Отмечено давно или никогда — стрик прерван, начинаем заново с единицы.
Заметьте: в запросах везде проверяется не только id, но и user_id. Это защита от ситуации, когда один пользователь пытается изменить чужие данные, подставив чужой идентификатор.
Обработчики: что бот отвечает
Файл handlers.py. Каждая функция обрабатывает одно действие пользователя.
from aiogram import Router
from aiogram.filters import Command
from aiogram.types import Message
import db
router = Router()
@router.message(Command("start"))
async def cmd_start(message: Message):
Конец ознакомительного фрагмента.
Текст предоставлен ООО «Литрес».
Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.


