Ejemplo n.º 1
0
async def process_photo(chat, match, logger):
    logger.info("Getting photo from %s", chat.sender)
    chat.message['photo'][1]['file_id']

    if not await user_has_draft(chat.bot.pg_pool, chat.sender.get('id')):
        info = format_text('''
        {name}, расм юборишдан аввал эълон ёзишингиз керак.
        ''')
        logger.info('%s user sent photo with no draft', chat.sender)
        await chat.send_text(info.format(name=chat.sender['first_name']),
                             parse_mode='Markdown',
                             disable_web_page_preview=True)
        await create_sale_ad_command(chat, match, logger)
        return

    admins = await get_all_admins(chat.bot.pg_pool)

    import time
    start = time.time()
    # Make template
    ad_template = format_text('''
    🚗 {name} сотилади!
    ⚙️  Йили: {year}
    🏃 Пробег: {mileage}
    🔦 Ҳолати: {status}
    💰 Нархи: {price}
    📞 Мурожаат: {contact}
    ''')
    draft = await get_draft(chat.bot.pg_pool, chat.sender.get('id'))
    d = dict(draft)
    ad_str = d.get('data')
    ad_dict = ast.literal_eval(ad_str)
    ad_text = ad_template.format(**ad_dict)
    url = await insert_watermark(chat, match, logger)

    for admin in admins:
        logger.info('Sending to %s (%s)', admin['first_name'],
                    admin['username'])

        private = chat.bot.private(admin['id'])
        try:
            await private.send_photo(url, caption=ad_text)
        except:
            logger.info('Cannot send photo to %s', admin['first_name'])

    logger.info(
        '{0:0.4f} time spent to broadcast message to {1} admins'.format(
            (time.time() - start), len(admins)))
    await send_ad_acceptance_message(chat, match, logger)
Ejemplo n.º 2
0
async def create_sale_ad_vehicle_command(chat, match, logger):

    if await user_has_draft(chat.bot.pg_pool, chat.sender.get('id')):

        denied = format_text('''
        {name}, авто-улов ҳақида эълон бергандиз.
        У эълон ҳали каналга қўйилгани йўқ.

        У эълонни бекор қилайликми?
        ''')

        keyboard = [
            ['Эълонни бекор қилиш'],
            ['Менюга қайтиш'],
        ]
        reply_keyboard_markup = {
            'keyboard': keyboard,
            'resize_keyboard': True,
            'one_time_keyboard': False
        }

        await chat.send_text(denied.format(name=chat.sender['first_name']),
                             parse_mode='Markdown',
                             disable_web_page_preview=True,
                             reply_markup=json.dumps(reply_keyboard_markup))
        return

    question = format_text('''
    Авто-улов ҳақида қисқа маълумот беринг.

    Эълонни бундай форматда вергул билан ажратиб ёзинг:
    ```
    Авто: Номи, йили, пробег, ҳолати, нархи, телефон рақам
    ```
    Масалан:
    ```
    Авто: Lacetti, 2015, 35000, яхши, 7000, +998931234567
    ```

    Бошига `Авто:` сўзини қўшиш эсдан чиқмасин.
    ''')

    logger.info('Vehicle create ad requested by %s', chat.sender)
    await chat.send_text(question,
                         parse_mode='Markdown',
                         disable_web_page_preview=True)
Ejemplo n.º 3
0
async def attach_no_image_to_ad_command(chat, match, logger):
    text = format_text('''
    {ok}
    ''')
    logger.info('%s says no image', chat.sender)
    await chat.send_text(text.format(ok=random.choice(ok_text)))
    admins = await get_all_admins(chat.bot.pg_pool)

    import time
    start = time.time()

    # Make template
    ad_template = format_text('''
    🚗 *{name}* сотилади!
    ⚙️  *Йили:* {year}
    🏃 *Пробег:* {mileage}
    🔦 *Ҳолати:* {status}
    💰 *Нархи:* {price}
    📞 *Мурожаат учун:* {contact}

    [Водий бозор](https://t.me/vodiybozor)
    ''')
    draft = await get_draft(chat.bot.pg_pool, chat.sender.get('id'))
    logger.info('------- %s', type(draft))
    d = dict(draft)
    ad_str = d.get('data')
    ad_dict = ast.literal_eval(ad_str)
    ad_text = ad_template.format(**ad_dict)

    for admin in admins:
        logger.info('Sending to %s (%s)', admin['first_name'],
                    admin['username'])

        private = chat.bot.private(admin['id'])
        try:
            await private.send_text(ad_text,
                                    parse_mode='Markdown',
                                    disable_web_page_preview=True)
        except:
            logger.info('Cannot send message to %s', admin['first_name'])

    logger.info(
        '{0:0.4f} time spent to broadcast message to {1} admins'.format(
            (time.time() - start), len(admins)))
    await send_ad_acceptance_message(chat, match, logger)
Ejemplo n.º 4
0
async def cancel_ad_command(chat, match, logger):

    if not await user_has_draft(chat.bot.pg_pool, chat.sender.get('id')):

        message = format_text('''
        {name}, ҳали янги эълон ёзганингиз йўқ.
        ''')
        await chat.send_text(message.format(name=chat.sender['first_name']),
                             parse_mode='Markdown',
                             disable_web_page_preview=True)
        return

    await delete_draft(chat.bot.pg_pool, chat.sender.get('id'))
    message = format_text('''
    Эълон бекор қилинди.
    ''')
    await chat.send_text(message)
    await create_sale_ad_vehicle_command(chat, match, logger)
Ejemplo n.º 5
0
async def process_contact(chat, match, logger):
    logger.info("Getting contact from %s", chat.sender)
    logger.info(chat.message['contact'])
    await insert_contact(chat.bot.pg_pool, chat.message['contact'])
    info = format_text('''
    Телефон рақам қабул қилинди. Раҳмат.
    ''')
    logger.info('Received contact from %s', chat.sender)
    await chat.send_text(info,
                         parse_mode='Markdown',
                         disable_web_page_preview=True)
Ejemplo n.º 6
0
async def create_ad_command(chat, match, logger):
    question = format_text('''
    {ok} Қандай эълон бермоқчисиз?
    ''')
    keyboard = [
        ['Сотмоқчиман', 'Олмоқчиман'],
        ['Хизмат ва таклифлар'],
    ]
    reply_keyboard_markup = {
        'keyboard': keyboard,
        'resize_keyboard': True,
        'one_time_keyboard': False
    }

    logger.info('%s ads requested by', chat.sender)
    await chat.send_text(question.format(ok=random.choice(ok_text)),
                         parse_mode='Markdown',
                         disable_web_page_preview=True,
                         reply_markup=json.dumps(reply_keyboard_markup))
Ejemplo n.º 7
0
async def process_ads_command(chat, match, logger):
    info = format_text('''
    {name}, эълон бермоқчимисиз ёки эълонларни кўрмоқчимисиз?
    ''')
    keyboard = [
        ['Эълон бермоқчиман', 'Эълонларни кўрмоқчиман'],
        ['Менюга қайтиш'],
    ]
    reply_keyboard_markup = {
        'keyboard': keyboard,
        'resize_keyboard': True,
        'one_time_keyboard': False
    }

    logger.info('%s ads requested by', chat.sender)
    await chat.send_text(info.format(name=chat.sender['first_name']),
                         parse_mode='Markdown',
                         disable_web_page_preview=True,
                         reply_markup=json.dumps(reply_keyboard_markup))
Ejemplo n.º 8
0
async def create_sale_ad_command(chat, match, logger):
    question = format_text('''
    Нима сотмоқчисиз?
    ''')
    keyboard = [
        ['🚗 Авто-улов', '🏠 Кўчмас-мулк'],
        ['📺 Маиший техника', '🚪 Уй-рўзғор буюмлари'],
        ['👕 Кийим-кечак', '🚴 Спорт анжомлари'],
        ['📱 Телефон', ''],
    ]
    reply_keyboard_markup = {
        'keyboard': keyboard,
        'resize_keyboard': True,
        'one_time_keyboard': False
    }

    logger.info('%s ads requested by', chat.sender)
    await chat.send_text(question,
                         parse_mode='Markdown',
                         disable_web_page_preview=True,
                         reply_markup=json.dumps(reply_keyboard_markup))
Ejemplo n.º 9
0
async def make_self_ad(chat, match):
    ad_text = format_text('''
    🔱*Водий* *eBozor*🔱
    🇺🇿 *Автосалондаги* *нархлар* (2017 йил 25 февраль)
    🇷🇺 *Цены* *автомобилей* *в* *автосалоне* (за 25 февраля 2017 года)
    ➥ [Nexia 3 Ravon(evro)](https://telegram.me/joinchat/AAPpnD_lW9-Co3Erc8tR-Q)
    ➥ [Isuzu -3](https://telegram.me/joinchat/AAPpnD_lW9-Co3Erc8tR-Q)
    ➥ [Damas (1-2pozitsiya)](https://telegram.me/joinchat/AAPpnD_lW9-Co3Erc8tR-Q)
    ➥ [Matiz (1-4pozitsiya)](https://telegram.me/joinchat/AAPpnD_lW9-Co3Erc8tR-Q)
    ➥ [Matiz Best(1-3pozitsiya)](https://telegram.me/joinchat/AAPpnD_lW9-Co3Erc8tR-Q)
    ➥ [Spark Ravon(1-4pozitsiya)](https://telegram.me/joinchat/AAPpnD_lW9-Co3Erc8tR-Q)
    ➥ [Nexia-2 SOHC(1-4pozitsiya)](https://telegram.me/joinchat/AAPpnD_lW9-Co3Erc8tR-Q)
    ➥ [Nexia-2 DOHC(1-4pozitsiya)](https://telegram.me/joinchat/AAPpnD_lW9-Co3Erc8tR-Q)
    ➥ [Cobalt(1-4pozitsiya)](https://telegram.me/joinchat/AAPpnD_lW9-Co3Erc8tR-Q)
    ➥ [Gentra(1-4pozitsiya)](https://telegram.me/joinchat/AAPpnD_lW9-Co3Erc8tR-Q)
    ➥ [Orlando(1-3pozitsiya)](https://telegram.me/joinchat/AAPpnD_lW9-Co3Erc8tR-Q)
    ➥ [Captiva 3](https://telegram.me/joinchat/AAPpnD_lW9-Co3Erc8tR-Q)
    ➥ [Malibu (1-3pozitsiya)](https://telegram.me/joinchat/AAPpnD_lW9-Co3Erc8tR-Q)
    [➖➖➖➖➖➖➖➖➖➖➖](https://telegram.me/joinchat/AAPpnD_lW9-Co3Erc8tR-Q)
    👉 [Moshina narhlari 2017](https://telegram.me/joinchat/AAPpnD_lW9-Co3Erc8tR-Q) 👈
    ''')
    await chat.send_text(ad_text,
                         parse_mode='Markdown',
                         disable_web_page_preview=True)
Ejemplo n.º 10
0
async def send_ad_acceptance_message(chat, match, logger):
    accepted_text = format_text('''
    Эълон қабул қилинди ва админларга юборилди.
    Тез орада каналга чоп этиб, бу ҳақда сизга хабар берамиз.
    ''')
    await chat.send_text(accepted_text)
Ejemplo n.º 11
0
async def attach_image_to_ad_command(chat, match, logger):
    ask_image = format_text('''
    Юборинг расмни.
    ''')
    logger.info('Image file sent by %s', chat.sender)
    await chat.send_text(ask_image)
Ejemplo n.º 12
0
async def create_sale_ad_vehicle_accept_command(chat, match, logger):
    logger.info('Vehicle create ad requested by %s', chat.sender)

    if await user_has_draft(chat.bot.pg_pool, chat.sender.get('id')):

        denied = format_text('''
        {name}, авто-улов ҳақида эълон бергандиз.
        У эълон ҳали каналга қўйилгани йўқ.

        У эълонни бекор қилайликми?
        ''')

        keyboard = [
            ['Эълонни бекор қилиш'],
            ['Менюга қайтиш'],
        ]
        reply_keyboard_markup = {
            'keyboard': keyboard,
            'resize_keyboard': True,
            'one_time_keyboard': False
        }

        await chat.send_text(denied.format(name=chat.sender['first_name']),
                             parse_mode='Markdown',
                             disable_web_page_preview=True,
                             reply_markup=json.dumps(reply_keyboard_markup))
        return

    text = chat.message['text']
    keys = ['name', 'year', 'mileage', 'status', 'price', 'contact']
    __, values = text.split(':')
    values = [v.strip() for v in values.split(',')]
    ad_dict = dict(zip(keys, values))
    logger.info('----------------------')
    logger.info(ad_dict)
    logger.info('Inserting draft ...')
    await insert_draft(chat.bot.pg_pool, chat.sender['id'], ad_dict)
    ad_template = format_text('''
    🚗 *{name}* сотилади!
    ⚙️  *Йили:* {year}
    🏃 *Пробег:* {mileage}
    🔦 *Ҳолати:* {status}
    💰 *Нархи:* {price}
    📞 *Мурожаат учун:* /contact

    [Водий бозор](https://t.me/vodiybozor)
    ''')
    ad_text = ad_template.format(**ad_dict)
    await chat.send_text(ad_text,
                         parse_mode='Markdown',
                         disable_web_page_preview=True)

    question = format_text('''
    Эълон ёзиб олинди.

    Расми борми йўқми?
    ''')
    keyboard = [
        ['✅ Расм бор', '❌ Расм йўқ'],
    ]
    reply_keyboard_markup = {
        'keyboard': keyboard,
        'resize_keyboard': True,
        'one_time_keyboard': False
    }

    logger.info('Vehicle ad accepted from %s', chat.sender)
    await chat.send_text(question,
                         parse_mode='Markdown',
                         disable_web_page_preview=True,
                         reply_markup=json.dumps(reply_keyboard_markup))