plarmi

ecotracker tgbot

Aug 9th, 2025
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.56 KB | None | 0 0
  1. import random
  2. import asyncio
  3. import logging
  4. from aiogram import Bot, Dispatcher, types, F
  5. from aiogram.filters import Command
  6. from aiogram.types import ReplyKeyboardMarkup, KeyboardButton
  7.  
  8. logging.basicConfig(level=logging.INFO)
  9. bot = Bot(token="7575665406:AAEzumzXrmdt8WXOtj2emzj0u597Krar2BA")
  10. dp = Dispatcher()
  11.  
  12. # Хранилище данных (вместо БД для простоты)
  13. user_data = {}
  14.  
  15. # Клавиатура
  16. actions_kb = ReplyKeyboardMarkup(
  17.     keyboard=[
  18.         [KeyboardButton(text="♻️ Бутылка"), KeyboardButton(text="🌱 Пакет")],
  19.         [KeyboardButton(text="📊 Статистика"), KeyboardButton(text="ℹ️ Факт")],
  20.     ],
  21.     resize_keyboard=True,
  22. )
  23.  
  24. # Команда /start
  25. @dp.message(Command("start"))
  26. async def start(message: types.Message):
  27.     await message.answer(
  28.         "Привет! Я бот-экотрекер. Отмечай свои экопривычки!",
  29.         reply_markup=actions_kb,
  30.     )
  31.  
  32. # Обработка действий
  33. @dp.message(F.text.in_(["♻️ Бутылка", "🌱 Пакет"]))
  34. async def log_action(message: types.Message):
  35.     user_id = message.from_user.id
  36.     action = message.text
  37.  
  38.     if user_id not in user_data:
  39.         user_data[user_id] = {"actions": []}
  40.  
  41.     user_data[user_id]["actions"].append(action)
  42.     await message.answer(f"✅ Записал: {action}")
  43.  
  44. # Статистика
  45. @dp.message(F.text == "📊 Статистика")
  46. async def show_stats(message: types.Message):
  47.     user_id = message.from_user.id
  48.     if user_id not in user_data or not user_data[user_id]["actions"]:
  49.         await message.answer("Ты пока не сделал(а) ни одного действия.")
  50.     else:
  51.         stats = len(user_data[user_id]["actions"])
  52.         await message.answer(f"📈 Всего действий: {stats}")
  53.  
  54. # Рандомный факт
  55. @dp.message(F.text == "ℹ️ Факт")
  56. async def send_fact(message: types.Message):
  57.     facts = [
  58.         "Один человек в среднем использует 500 пластиковых пакетов в год.",
  59.         "Переработка одной алюминиевой банки экономит энергию, достаточную для работы TV 3 часа.",
  60.         "Каждую минуту в океан попадает грузовик мусора.",
  61.     ]
  62.     await message.answer(random.choice(facts))
  63.  
  64. # Запуск бота
  65. async def main():
  66.     await dp.start_polling(bot)
  67.  
  68. if __name__ == "__main__":
  69.     asyncio.run(main())
Advertisement
Add Comment
Please, Sign In to add comment