Advertisement
Leshatron

Untitled

May 6th, 2023
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import logging
  2. import os
  3.  
  4. from aiogram import Bot, Dispatcher, types, executor
  5. from aiogram.contrib.fsm_storage.memory import MemoryStorage
  6. from aiogram.dispatcher import FSMContext
  7. from aiogram.dispatcher.filters import Text
  8. from aiogram.dispatcher.filters.state import State, StatesGroup
  9. from aiogram.types import ParseMode, Message, InputFile, InlineKeyboardButton, InlineKeyboardMarkup
  10. from aiogram.utils import executor
  11.  
  12. TOKEN = '6185473656:AAFNiKI_mtyNoSTUZcNhr7tgafNNbNx-0rc'
  13. if not TOKEN:
  14.     exit("Ошибка: не найден токен бота!")
  15.  
  16. bot = Bot(token=TOKEN, parse_mode=ParseMode.HTML)
  17. storage = MemoryStorage()
  18. dp = Dispatcher(bot, storage=storage)
  19.  
  20.  
  21.  
  22. ikb = InlineKeyboardMarkup(row_width=2)
  23. ikb_profile = InlineKeyboardButton(text='Принять')
  24. ikb_review = InlineKeyboardButton(text='Принять')
  25. accept_button = InlineKeyboardButton("Принять заявку✅", callback_data="accept_request")
  26. decline_button = InlineKeyboardButton("Отклонить заявку❌", callback_data="decline_request")
  27. inline_keyboard = InlineKeyboardMarkup().row(accept_button, decline_button)
  28.  
  29. ikb.add(ikb_profile, ikb_review)
  30.  
  31. logging.basicConfig(level=logging.INFO)
  32.  
  33.  
  34. class UserStates(StatesGroup):
  35.     waiting_for_profile_screenshot = State()
  36.     waiting_for_review_screenshot = State()
  37.  
  38.  
  39. @dp.message_handler(commands=["start"])
  40. async def cmd_start(message: types.Message):
  41.     await message.answer("Приветствую! Я бот для подачи заявок. Отправьте команду, чтобы подать заявку.")
  42.  
  43.  
  44. @dp.message_handler(commands=["request"])
  45. async def cmd_request_profile_screenshot(message: types.Message):
  46.     await message.answer(
  47.         "Отправьте скриншот профиля на сайте Avito\n"
  48.         "это вам понадобится для подачи заявки.",
  49.         reply_markup=types.ReplyKeyboardRemove(),
  50.     )
  51.     await UserStates.waiting_for_profile_screenshot.set()
  52.  
  53.  
  54. @dp.message_handler(state=UserStates.waiting_for_profile_screenshot, content_types=types.ContentTypes.PHOTO)
  55. async def receive_profile_screenshot(message: types.Message, state: FSMContext):
  56.     await message.photo[-1].download(f"uploads/{message.photo[-1].file_id}.jpg")
  57.     logging.info(f"Профиль успешно загружен: {message.photo[-1].file_id}")
  58.     await message.answer("Спасибо! Отправьте скриншот последнего отзыва на сайте Avito.")
  59.     await UserStates.waiting_for_review_screenshot.set()
  60.  
  61.     async with state.proxy() as data:
  62.         data["user_id"] = message.from_user.id
  63.         data["profile_screenshot"] = message.photo[-1].file_id
  64.  
  65.  
  66. @dp.message_handler(state=UserStates.waiting_for_review_screenshot, content_types=types.ContentTypes.PHOTO)
  67. async def receive_review_screenshot(message: types.Message, state: FSMContext):
  68.     await message.photo[-1].download(f"uploads/{message.photo[-1].file_id}.jpg")
  69.     logging.info(f"Отзыв успешно загружен: {message.photo[-1].file_id}")
  70.     await message.answer(f"Заявка успешно отправлена!")
  71.     async with state.proxy() as data:
  72.         user_id = data["user_id"]
  73.         chat_id = message.from_user.id
  74.         profile_screenshot = data["profile_screenshot"]
  75.         review_screenshot = message.photo[-1].file_id
  76.         user_chat_member = await bot.get_chat_member(chat_id, user_id)
  77.         username = user_chat_member.user.username
  78.      
  79.     await bot.send_photo(
  80.     chat_id=-1001877783594,
  81.     photo=profile_screenshot,
  82.     caption="Скриншот профиля",
  83.     )
  84.     await bot.send_photo(
  85.     chat_id=-1001877783594,
  86.     photo=review_screenshot,
  87.     caption=f"Новая заявка от пользователя @{username}: скриншот отзыва",
  88.     reply_markup=inline_keyboard
  89. )
  90.  
  91.  
  92. @dp.callback_query_handler(lambda c: c.data == 'accept_request')
  93. async def process_callback_accept_request(callback_query: types.CallbackQuery):
  94.     await bot.answer_callback_query(callback_query.id)
  95.     await bot.send_message(callback_query.from_user.id, "Ваша заявка принята администрацией")
  96.  
  97.  
  98. @dp.callback_query_handler(lambda c: c.data == 'decline_request')
  99. async def process_callback_decline_request(callback_query: types.CallbackQuery):
  100.     await bot.answer_callback_query(callback_query.id)
  101.     await bot.send_message(callback_query.from_user.id, "К сожалению, Ваша заявка была отклонена.")
  102.  
  103. if __name__ == '__main__':
  104.     executor.start_polling(dp, skip_updates=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement