Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!venv/bin/python
- import logging
- from aiogram import Bot, Dispatcher, executor, types
- from aiogram.dispatcher import FSMContext
- from aiogram.contrib.fsm_storage.memory import MemoryStorage
- import utils
- import config
- import messages
- import keyboards
- logging.basicConfig(level=logging.INFO)
- bot = Bot(token=config.BOT_TOKEN)
- dp = Dispatcher(bot, storage=MemoryStorage())
- list_of_users = {}
- class User:
- def __init__(self, service=None, photo=None, name=None, phone=None):
- self.service = service
- self.photo = photo
- self.name = name
- self.phone = phone
- @dp.message_handler(commands=['start'])
- async def welcome(message: types.Message):
- list_of_users[message.chat.id] = User()
- sti = open('static/hello.webp', 'rb')
- await message.reply_sticker(sticker=sti)
- await message.reply(messages.WELCOME.format(message.from_user), parse_mode='html')
- await selection_item(message)
- async def selection_item(message: types.Message):
- await message.answer(messages.SELECTION_ITEM, reply_markup=await keyboards.attach_keyboard())
- @dp.message_handler(text='💵 Получить карту', state='*')
- async def get_card(message: types.Message):
- user = list_of_users[message.chat.id]
- user.service = '💵 Получить карту'
- await message.answer(messages.CARD)
- await message.answer(messages.PHOTO, reply_markup=await keyboards.add_button_close())
- await utils.Form.waiting_photo.set()
- @dp.message_handler(text='📞 Перезвоните мне', state='*')
- async def call_me_back(message: types.Message):
- user = list_of_users[message.chat.id]
- user.service = '📞 Перезвоните мне'
- if user.name == None:
- await message.answer(messages.NAME, reply_markup=await keyboards.add_button_close())
- await utils.Form.waiting_name.set()
- else:
- await message.answer(messages.USE_DATA, reply_markup=await keyboards.inline_keyboard_bool())
- @dp.callback_query_handler(lambda call: True)
- async def handler(call: types.CallbackQuery):
- if call.message == 'yes':
- await call.answer('ОК')
- @dp.message_handler(text='🧾 Режим работы и контакты', state='*')
- async def get_contact(message: types.Message):
- sti = open('static/ok.webp', 'rb')
- await message.answer_sticker(sticker=sti)
- await message.answer(messages.CONTACTS, reply_markup=await keyboards.inline_keyboard())
- @dp.message_handler(text='📦 Доставка', state='*')
- async def get_delivery(message: types.Message):
- await message.answer(messages.DELIVERY)
- @dp.message_handler(text='📱 Чат мастеров в Whatsapp', state='*')
- async def get_chat(message: types.Message):
- await message.answer(messages.CHAT_OF_MASTERS)
- @dp.message_handler(text='Отмена', state='*')
- async def close(message: types.Message):
- await selection_item(message)
- @dp.message_handler(state=utils.Form.waiting_photo, content_types='photo')
- async def get_photo(message: types.Message):
- user = list_of_users[message.chat.id]
- user.photo = message.photo[-1].file_id
- await message.answer(messages.NAME)
- await utils.Form.waiting_name.set()
- @dp.message_handler(state=utils.Form.waiting_name, content_types='text')
- async def get_name(message: types.Message):
- user = list_of_users[message.chat.id]
- user.name = str(message.text)
- await message.answer(messages.PHONE)
- await utils.Form.waiting_phone.set()
- @dp.message_handler(state=utils.Form.waiting_phone, content_types='text')
- async def get_phone(message: types.Message):
- user = list_of_users[message.chat.id]
- user.phone = int(message.text)
- await send(message)
- @dp.message_handler(state=utils.Form.waiting_send)
- async def send(message: types.Message):
- user = list_of_users[message.chat.id]
- if user.service == '📞 Перезвоните мне':
- await message.answer(f'{user.name}\n{user.phone}', reply_markup=await keyboards.attach_keyboard())
- elif user.service == '💵 Получить карту':
- await message.answer_photo(user.photo)
- await message.answer(f'{user.name}\n{user.phone}', reply_markup=await keyboards.attach_keyboard())
- if __name__ == '__main__':
- executor.start_polling(dp, skip_updates=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement