Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import logging
- import os
- from aiogram import Bot, Dispatcher, types, executor
- from aiogram.contrib.fsm_storage.memory import MemoryStorage
- from aiogram.dispatcher import FSMContext
- from aiogram.dispatcher.filters import Text
- from aiogram.dispatcher.filters.state import State, StatesGroup
- from aiogram.types import ParseMode, Message, InputFile, InlineKeyboardButton, InlineKeyboardMarkup
- from aiogram.utils import executor
- TOKEN = '6185473656:AAFNiKI_mtyNoSTUZcNhr7tgafNNbNx-0rc'
- if not TOKEN:
- exit("Ошибка: не найден токен бота!")
- bot = Bot(token=TOKEN, parse_mode=ParseMode.HTML)
- storage = MemoryStorage()
- dp = Dispatcher(bot, storage=storage)
- ikb = InlineKeyboardMarkup(row_width=2)
- ikb_profile = InlineKeyboardButton(text='Принять')
- ikb_review = InlineKeyboardButton(text='Принять')
- accept_button = InlineKeyboardButton("Принять заявку✅", callback_data="accept_request")
- decline_button = InlineKeyboardButton("Отклонить заявку❌", callback_data="decline_request")
- inline_keyboard = InlineKeyboardMarkup().row(accept_button, decline_button)
- ikb.add(ikb_profile, ikb_review)
- logging.basicConfig(level=logging.INFO)
- class UserStates(StatesGroup):
- waiting_for_profile_screenshot = State()
- waiting_for_review_screenshot = State()
- @dp.message_handler(commands=["start"])
- async def cmd_start(message: types.Message):
- await message.answer("Приветствую! Я бот для подачи заявок. Отправьте команду, чтобы подать заявку.")
- @dp.message_handler(commands=["request"])
- async def cmd_request_profile_screenshot(message: types.Message):
- await message.answer(
- "Отправьте скриншот профиля на сайте Avito\n"
- "это вам понадобится для подачи заявки.",
- reply_markup=types.ReplyKeyboardRemove(),
- )
- await UserStates.waiting_for_profile_screenshot.set()
- @dp.message_handler(state=UserStates.waiting_for_profile_screenshot, content_types=types.ContentTypes.PHOTO)
- async def receive_profile_screenshot(message: types.Message, state: FSMContext):
- await message.photo[-1].download(f"uploads/{message.photo[-1].file_id}.jpg")
- logging.info(f"Профиль успешно загружен: {message.photo[-1].file_id}")
- await message.answer("Спасибо! Отправьте скриншот последнего отзыва на сайте Avito.")
- await UserStates.waiting_for_review_screenshot.set()
- async with state.proxy() as data:
- data["user_id"] = message.from_user.id
- data["profile_screenshot"] = message.photo[-1].file_id
- @dp.message_handler(state=UserStates.waiting_for_review_screenshot, content_types=types.ContentTypes.PHOTO)
- async def receive_review_screenshot(message: types.Message, state: FSMContext):
- await message.photo[-1].download(f"uploads/{message.photo[-1].file_id}.jpg")
- logging.info(f"Отзыв успешно загружен: {message.photo[-1].file_id}")
- await message.answer(f"Заявка успешно отправлена!")
- async with state.proxy() as data:
- user_id = data["user_id"]
- chat_id = message.from_user.id
- profile_screenshot = data["profile_screenshot"]
- review_screenshot = message.photo[-1].file_id
- user_chat_member = await bot.get_chat_member(chat_id, user_id)
- username = user_chat_member.user.username
- await bot.send_photo(
- chat_id=-1001877783594,
- photo=profile_screenshot,
- caption="Скриншот профиля",
- )
- await bot.send_photo(
- chat_id=-1001877783594,
- photo=review_screenshot,
- caption=f"Новая заявка от пользователя @{username}: скриншот отзыва",
- reply_markup=inline_keyboard
- )
- @dp.callback_query_handler(lambda c: c.data == 'accept_request')
- async def process_callback_accept_request(callback_query: types.CallbackQuery):
- await bot.answer_callback_query(callback_query.id)
- await bot.send_message(callback_query.from_user.id, "Ваша заявка принята администрацией")
- @dp.callback_query_handler(lambda c: c.data == 'decline_request')
- async def process_callback_decline_request(callback_query: types.CallbackQuery):
- await bot.answer_callback_query(callback_query.id)
- await bot.send_message(callback_query.from_user.id, "К сожалению, Ваша заявка была отклонена.")
- if __name__ == '__main__':
- executor.start_polling(dp, skip_updates=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement