コード例 #1
0
ファイル: main_menu.py プロジェクト: lozesaint/telegrambot
async def edit_name(message: Message):
    markup = ReplyKeyboardMarkup(resize_keyboard=True)
    markup.insert(KeyboardButton(text=_("🔙 Back")))

    await message.answer(_("Enter your new name"), reply_markup=markup)

    await Settings.InputtingName.set()
コード例 #2
0
def _get_text(user: User, inline: bool = False):
    commands_text = ''
    if not inline:
        commands_text = _('<b>Commands �</b>\n')
        commands = get_admin_commands(
            user.language) if user.is_admin else get_default_commands(
                user.language)
        for command in commands:
            commands_text += f'{command.command} - {command.description}\n'
        commands_text += '\n'

    text = _(
        '<b>Help 🆘</b>\n\n'
        '{commands}'
        '<b>Price 💰</b>\n'
        '<code>@cryptocompare_bot [quantity] coin</code>\n'
        '<code>@cryptocompare_bot BTC</code>\n'
        '<code>@cryptocompare_bot 4 BTC</code>\n'
        '<code>@cryptocompare_bot BTC,ETH,USD</code>\n\n'
        '<b>Conversion 🔄</b>\n'
        '<code>@cryptocompare_bot [quantity] coin / coin</code>\n'
        '<code>@cryptocompare_bot BTC USD</code>\n'
        '<code>@cryptocompare_bot 2 Btc usd</code>\n'
        '<code>@cryptocompare_bot 4.55 BTC,ETH,DOGE / USD,EUR,UAH</code>\n\n'
        '<i>*coins for conversion can be separated by / or by a space, the case of coins is insensitive </i>\n\n'
        '<b>Contact ☎</b>\n'
        '@briler').format(commands=commands_text)

    return text
コード例 #3
0
def get_contact_keyboard(lang):
    contact_keyboard = ReplyKeyboardMarkup(keyboard=[[
        KeyboardButton(text=_("📱 Share Phone Number", locale=lang),
                       request_contact=True)
    ], [KeyboardButton(text=_("🔙 Back", locale=lang))]],
                                           resize_keyboard=True)

    return contact_keyboard
コード例 #4
0
def get_about_keyboard(lang):
    about_keyboard = ReplyKeyboardMarkup(
        keyboard=[[KeyboardButton(text=_("📍 Shop's Location", locale=lang))],
                  [
                      KeyboardButton(text=_("📱 Contacts", locale=lang)),
                  ], [KeyboardButton(text=_("🔙 Back", locale=lang))]],
        resize_keyboard=True)

    return about_keyboard
コード例 #5
0
def get_default_commands(lang: str = 'en') -> list[BotCommand]:
    commands = [
        BotCommand('/start', _('start bot', locale=lang)),
        BotCommand('/help', _('how it works?', locale=lang)),
        BotCommand('/lang', _('change language', locale=lang)),
        BotCommand('/settings', _('open bot settings', locale=lang)),
    ]

    return commands
コード例 #6
0
ファイル: main_menu.py プロジェクト: lozesaint/telegrambot
async def show_shop(message: Message, state: FSMContext):
    user = await db.get_user(message.from_user.id)

    await message.answer(text=_("Great! Where do we start?"),
                         reply_markup=ReplyKeyboardRemove())
    await state.update_data(message_ids=[])
    await message.answer(text=_("Categories Menu"),
                         reply_markup=get_categories_keyboard(user.language))

    await Menu.Category.set()
コード例 #7
0
def get_location_keyboard(lang):
    location_keyboard = ReplyKeyboardMarkup(
        keyboard=[[
            KeyboardButton(text=_("📍 Share Current Location", locale=lang),
                           request_location=True)
        ], [KeyboardButton(text=_("✖️ Cancel", locale=lang))]],
        resize_keyboard=True,
        one_time_keyboard=True,
    )

    return location_keyboard
コード例 #8
0
ファイル: menu.py プロジェクト: BBite/football-bot
def get_main_menu(lang: str) -> ReplyKeyboardMarkup:
    main_menu = ReplyKeyboardMarkup(
        keyboard=[
            [
                KeyboardButton(text=_('Меню', locale=lang)),
                # KeyboardButton(text='Ігра')
            ],
            [KeyboardButton(text=_('Змінити мову', locale=lang))]
        ],
        resize_keyboard=True)
    return main_menu
コード例 #9
0
async def bot_start(message: Message):
    await message.answer(_('Привіт') + f', {User.get_current().first_name}!',
                         reply_markup=main_menu)
    db.insert_or_ignore(
        'users', {
            'id': User.get_current().id,
            'first_name': User.get_current().first_name,
            'last_name': User.get_current().last_name,
            'lang': User.get_current().locale.language
        })
    await message.answer(_('Виберіть мову'), reply_markup=choose_language)
    await message.answer(_('Натисніть /help, щоб отримати список команд'))
コード例 #10
0
def get_admin_commands(lang: str = 'en') -> list[BotCommand]:
    commands = get_default_commands(lang)

    commands.extend([
        BotCommand('/export_users', _('export users to csv', locale=lang)),
        BotCommand('/count_users',
                   _('count users who contacted the bot', locale=lang)),
        BotCommand(
            '/count_active_users',
            _('count active users (who didn\'t block the bot)', locale=lang)),
    ])

    return commands
コード例 #11
0
def get_default_markup(user):
    markup = ReplyKeyboardMarkup(resize_keyboard=True, row_width=3)

    markup.add(_('Help 🆘'), _('Settings 🛠'))

    if user.is_admin:
        markup.add(_('Export users 📁'))
        markup.add(_('Count users 👥'))
        markup.add(_('Count active users 👥'))

    if len(markup.keyboard) < 1:
        return ReplyKeyboardRemove()

    return markup
コード例 #12
0
ファイル: main_menu.py プロジェクト: lozesaint/telegrambot
async def show_menu(message: Union[Message, CallbackQuery]):
    user = await db.get_user(message.from_user.id)

    print("lang=", user.language)

    if isinstance(message, Message):
        await message.answer(_("Main Menu"),
                             reply_markup=get_main_menu_keyboard(
                                 user.language))
    elif isinstance(message, CallbackQuery):
        await message.message.answer(_("Main Menu"),
                                     reply_markup=get_main_menu_keyboard(
                                         user.language))

    await Menu.Main_Menu.set()
コード例 #13
0
ファイル: change_lang.py プロジェクト: BBite/football-bot
async def change_language(call: CallbackQuery):
    await call.message.edit_reply_markup()
    lang = call.data[-2:]
    db.update('users', User.get_current().id, {
        'lang': lang
    })
    # await call.message.edit_text(_("Мова була змінена", locale=lang))
    full_lang = {
        'uk': 'українська',
        'ru': 'русский',
        'en': 'English'
    }
    await call.message.answer(_("Мова була змінена", locale=lang), reply_markup=ReplyKeyboardRemove())
    await call.message.answer(_('Ваша поточна мова', locale=lang) + f': {full_lang[lang]}',
                              reply_markup=get_main_menu(db.get_lang(User.get_current().id)))
コード例 #14
0
def get_cart_keyboard(items):

    markup = InlineKeyboardMarkup()

    for index, item in enumerate(items, 1):
        markup.row(InlineKeyboardButton(text=f"❌ {item.name}",
                                        callback_data=cart_delete_cd.new(f"delete_{item.id}")))

    markup.row(InlineKeyboardButton(text=_("🚫 Clear cart"),
                                    callback_data="clear_cart"))
    markup.row(InlineKeyboardButton(text=_("🔙 Back"),
                                    callback_data=back_to_menu.new(action="back_to_category")))
    markup.row(InlineKeyboardButton(text=_("📤 Place Order"),
                                    callback_data="order"))

    return markup
コード例 #15
0
ファイル: start.py プロジェクト: lozesaint/telegrambot
async def change_language(call: CallbackQuery):
    await call.message.edit_reply_markup()
    lang = call.data[-2:]
    await db.set_language(lang)
    await call.message.answer(_("Thank you! Here's our Main Menu", locale=lang), reply_markup=get_main_menu_keyboard(lang))

    await Menu.Main_Menu.set()
コード例 #16
0
def get_main_menu_keyboard(lang):

    main_menu_keyboard = ReplyKeyboardMarkup(keyboard=[
        [KeyboardButton(text=_("🛍 Shop", locale=lang))],
        [
            KeyboardButton(text=_("🗣 Feedback", locale=lang)),
            KeyboardButton(text=_("ℹ About", locale=lang)),
        ],
        [
            KeyboardButton(text=_("❗ Help", locale=lang)),
            KeyboardButton(text=_("⚙ Settings", locale=lang)),
        ],
    ],
                                             resize_keyboard=True)

    return main_menu_keyboard
コード例 #17
0
ファイル: main_menu.py プロジェクト: lozesaint/telegrambot
async def show_settings(message: Message):
    user = await db.get_user(message.from_user.id)

    await message.answer(_("Settings Menu:", locale=user.language),
                         reply_markup=get_settings_keyboard(user.language))

    await Menu.Settings.set()
コード例 #18
0
async def pay_method(call: CallbackQuery):
    cart_items = await db.get_cart_items(call.from_user.id)
    user = await db.get_user(call.from_user.id)
    payment_method = call.data[8:].capitalize()

    is_cash = False
    if payment_method == 'Cash':
        is_cash = True
        payment_method = "Наличные"

    text = "<i>Информация о заказе:</i>\n\n" \
           f"<b>Номер Телефона:</b> {user.phone_number}\n\n" \
           f"<b>Адрес Доставки:</b> {user.address}\n\n" \
           f"<b>Метод Оплаты:</b> {payment_method}\n\n"
    total = 0
    item_ids = []
    for index, cart_item in enumerate(cart_items, 1):
        item_ids.append(cart_item.item_id)
        item = await db_commands.get_item(int(cart_item.item_id))
        text += f"<b>{index}.</b> {item.name} - <b>{cart_item.size}</b>\n"
        text += f"\t\t\t{cart_item.quantity} × {item.price} = {refactor(int(item.price.replace(' ', '')) * cart_item.quantity)} СУМ\n\n"
        total += int(item.price.replace(" ", "")) * cart_item.quantity
    text += f"<b>Итого</b>: {refactor(total)} СУМ"

    order = await db.create_order(item_ids=",".join(item_ids), sum=total, is_cash=is_cash)
    text = f"<b>Номер заказа:</b> #N{order.id}\n" + text

    await call.message.answer(text=_("<i>Thank you, your order has been submitted for processing! Our operators will contact you shortly</i>"),
                              reply_markup=ReplyKeyboardRemove())

    await bot.send_message(chat_id="@MustHave_Official",
                           text=text,
                           reply_markup=get_order_keyboard_phase_1(order.id, call.from_user.id))
    await Order.Confirmation.set()
    await call.answer()
コード例 #19
0
async def create_order(call: CallbackQuery):
    user = await db.get_user(call.from_user.id)

    await call.message.answer(_("Leave your contact number so we can contact you regarding your order"),
                              reply_markup=get_contact_keyboard(user.language))
    await Order.PhoneNumber.set()
    await call.answer()
コード例 #20
0
ファイル: main_menu.py プロジェクト: lozesaint/telegrambot
async def edit_number(message: Message):
    user = await db.get_user(message.from_user.id)

    await message.answer(_("Enter your new phone number"),
                         reply_markup=get_contact_keyboard(user.language))

    await Settings.InputtingPhone.set()
コード例 #21
0
ファイル: main_menu.py プロジェクト: lozesaint/telegrambot
async def inputting_number(message: Message):
    number = message.text

    await db.set_phone_number(number)
    await message.answer(_("Your phone number has been changed!"))

    await show_settings(message)
コード例 #22
0
ファイル: main_menu.py プロジェクト: lozesaint/telegrambot
async def change_language(message: Message):
    user = await db.get_user(message.from_user.id)

    await message.answer(_("Choose the language"),
                         reply_markup=get_language_keyboard(user.language))

    await Settings.ChangeLanguage.set()
コード例 #23
0
ファイル: main_menu.py プロジェクト: lozesaint/telegrambot
async def show_about(message: Message):
    user = await db.get_user(message.from_user.id)

    await message.answer(_("What do you want to know about us?"),
                         reply_markup=get_about_keyboard(user.language))

    await Menu.About.set()
コード例 #24
0
async def show_item(message: Message, state: FSMContext):
    user = await db.get_user(message.from_user.id)
    item_id = message.text
    item = await db_commands.get_item(int(item_id))

    text = _("<b>{name}</b>"
             "\n\n<b>Price:</b> {price} UZS "
             "\n<b>Sizes:</b> {available_sizes} "
             "\n\nFor all related questions text @g_continent\n\n").format(name=item.name,
                                                                           price=item.price,
                                                                           available_sizes=item.available_sizes)

    photo = await bot.send_photo(chat_id=message.from_user.id,
                                 photo=item.photo,
                                 caption=text,
                                 reply_markup=get_item_keyboard(item.category_name, item.id, message.from_user.id, item.active, user.language))

    data = await state.get_data()
    message_ids = data.get('message_ids')

    if message_ids:
        message_ids.append(photo.message_id)
    else:
        message_ids = [photo.message_id]

    await state.update_data(message_ids=message_ids)

    await bot.delete_message(chat_id=message.from_user.id,
                             message_id=message.message_id)

    await Menu.Item.set()
コード例 #25
0
async def bot_help(message: types.Message):
    text = [
        _('Список команд') + ': ',
        '/start - ' + _('Запустити бота'),
        '/help - ' + _('Отримати список команд'),
        '/lang - ' + _('Змінити мову'),
        '/menu - ' + _('Відкрити меню'),
        '/table - ' + _('Відкрити таблицю результатів'),
        '/scorers - ' + _('Відкрити топ бомбрадирів'),
        '/assists - ' + _('Відкрити топ асистентів'),
        '/matches - ' + _('Відкдити розклад матчів')
    ]
    await message.answer('\n'.join(text))
コード例 #26
0
async def confirming(call: CallbackQuery):
    x, order_id, user_id = call.data.split("_")
    order_id = int(order_id)
    user_id = int(user_id)
    order = await db.get_order(order_id)
    await bot.edit_message_reply_markup(chat_id="@MustHave_Official",
                                        message_id=call.message.message_id,
                                        reply_markup=get_order_keyboard_phase_2(order_id, user_id))
    await db.update_order(order_id=order_id, status=1)

    if not order.is_cash:
        await bot.send_message(chat_id=user_id,
                               text=_("<b>Order Number</b>: #N{order_id}\n\n"
                                      "Credit card number for transferring:\n<b>8600 3129 4618 7313</b>").format(order_id=order_id))
    else:
        await bot.send_message(chat_id=user_id,
                               text=_("<b>Order Number</b>: #N{order_id}\n\nYour order has been confirmed.").format(order_id=order_id))
コード例 #27
0
async def inputting_number(message: Message):
    user = await db.get_user(message.from_user.id)
    number = message.text
    await db.set_phone_number(number)
    await message.answer(_("Share your current location for the shipping address"),
                         reply_markup=get_location_keyboard(user.language))

    await Order.Location.set()
コード例 #28
0
async def clear_cart(call: CallbackQuery):
    user = await db.get_user(call.from_user.id)
    await db.clear_cart(chat_id=call.from_user.id)
    await show_cart(call, edit=True)
    await bot.send_message(chat_id=call.from_user.id,
                           text=_('Categories Menu:'),
                           reply_markup=get_categories_keyboard(user.language))
    await Menu.Category.set()
コード例 #29
0
ファイル: menu.py プロジェクト: BBite/football-bot
async def command_handler(message: Message):
    task = message.text[1]
    if task == 't':
        await message.answer(_('Виберіть лігу'),
                             reply_markup=table_choose_liga)
    elif task == 's':
        await message.answer(_('Виберіть лігу'),
                             reply_markup=scorers_choose_liga)
    elif task == 'a':
        if db.get_lang(User.get_current().id) != 'en':
            await message.answer(_('Виберіть лігу'),
                                 reply_markup=assists_choose_liga)
        else:
            await message.answer(_('Виберіть лігу'),
                                 reply_markup=assists_choose_liga_en)
    elif task == 'm':
        await message.answer(_('Виберіть лігу'),
                             reply_markup=matches_choose_liga)
コード例 #30
0
def get_language_keyboard(lang):
    language_keyboard = ReplyKeyboardMarkup(
        keyboard=[[KeyboardButton(text="🇺🇸 English")],
                  [KeyboardButton(text="🇷🇺 Русский")],
                  [KeyboardButton(text="🇺🇿 O'zbek tili")],
                  [KeyboardButton(text=_("🔙 Back", locale=lang))]],
        resize_keyboard=True)

    return language_keyboard