def currencyMarkup(user, inlineMode=False, addCheckBox=False, oneTimeKeyboard=False, addUAH=False):
    data = db.getCurrencyList()

    if inlineMode:
        markup = InlineKeyboardMarkup(row_width=6)
        markup.add(InlineKeyboardButton(text='Назад ⬅', callback_data=currency_callback.new(item_name='back')))
        newDict = dict(sorted(user.currencyPriority.items(),
                              key=operator.itemgetter(0),
                              reverse=True
                              ))
        for curr in dict(sorted(newDict.items(), key=operator.itemgetter(1), reverse=False)):
            if addCheckBox and curr in user.userCurrency:
                textToAdd = f'{curr} - {data[curr]["Emoji"]} {data[curr]["FullName"]} ✅'
            else:
                textToAdd = f'{curr} - {data[curr]["Emoji"]} {data[curr]["FullName"]}'
            markup.add(InlineKeyboardButton(text=textToAdd, callback_data=curr))
        markup.add(InlineKeyboardButton(text='Готово ✅', callback_data=currency_callback.new(item_name='done')))
        if addCheckBox:
            markup.inline_keyboard.sort(key=lambda butt: '✅' in butt[0].text)
    else:
        markup = ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=oneTimeKeyboard)
        markup.add(KeyboardButton('Назад ⬅'))
        if addUAH:
            markup.add(f"UAH - {data['UAH']['Emoji']} Гривна")
        for curr in user.currencyPriority:
            if curr != 'UAH':
                markup.add(KeyboardButton(f'{curr} - {data[curr]["Emoji"]} {data[curr]["FullName"]}'))

    return markup
Esempio n. 2
0
 def getUsedCurrency(self):
     data = db.getCurrencyList()
     listOfCurrency = None
     for curr in self.userCurrency:
         if listOfCurrency is None:
             listOfCurrency = f"{curr} {data[curr]['Emoji']}"
         else:
             listOfCurrency = f"{listOfCurrency}, {curr} {data[curr]['Emoji']}"
     return listOfCurrency
def mainCurrencyMarkup(user: User):
    markup = ReplyKeyboardMarkup(resize_keyboard=True)
    if user.userCurrency is None:
        currencyList = ['USD', 'EUR']
    else:
        currencyList = user.userCurrency

    data = db.getCurrencyList()

    for curr in currencyList:
        markup.insert(KeyboardButton(f"{curr} {data[curr]['Emoji']}"))
        if markup.keyboard[0].__len__() == 3:
            markup.add()

    markup.insert(KeyboardButton('Другие валюты $ € ¥ ₤ £'))
    markup.add(KeyboardButton('Конвертер валют'))
    markup.add(KeyboardButton('Назад ⬅'))
    return markup
Esempio n. 4
0
async def sendMainInfo():
    now = datetime.now()
    checkTime = f"{now.hour}:{now.minute}"
    users = db.getFromDB('users', 'id, location, maincurrency',
                         f"notify = '{checkTime}'")
    if users.__len__() != 0:
        for user in users:
            if not user[1] is None:
                city = db.getFromDB('citylist', 'name, link', f"id={user[1]}")
                whether = await getWeather(city[0])
            else:
                whether = ''
            rate: str = 'Курс валют:\n'
            if not user[2] is None:
                data = db.getCurrencyList()
                for currency in user[2][0]:
                    if db.getFromDB(currency, 'rate',
                                    f"date='{date.today()}'").__len__() == 0:
                        await addCurrencyInfo(100)
                    rate += f"{data[currency]['FullName']} {data[currency]['Emoji']}: {getTodayRate(currency)}\n"
            else:
                rate = ''
            if rate == '' and whether == '':
                pass
            else:
                if whether == '':
                    txt = rate
                else:
                    if 'дождь' in whether.lower():
                        whether += '\nНе забудьте взять зонтик☂️'
                    txt = f"{whether}\n\n{rate}"
                if now.hour < 6:
                    hiMessage = 'Доброй ночи🌃\n\n'
                elif 6 <= now.hour < 9:
                    hiMessage = 'Доброе утро🌅\n\n'
                elif 9 <= now.hour <= 19:
                    hiMessage = 'Добрый день☀️\n\n'
                else:
                    hiMessage = 'Добрый вечер🌆️\n\n'

                await dp.bot.send_message(user[0], hiMessage + txt)
Esempio n. 5
0
def settingsMarkup(user: User):
    data = db.getCurrencyList()
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True,
                                       one_time_keyboard=True)
    backButton = types.KeyboardButton('Назад ⬅')
    if user.location is None:
        mainCity = types.KeyboardButton(
            f'Указать основной населенный пункт для погоды')
    else:
        mainCity = types.KeyboardButton(
            f'Населенный пункт для погоды - {user.getMainCity()}')
    mainCurrency = types.KeyboardButton(
        f"Основная валюта - {user.currency} {data[user.currency]['Emoji']}")
    dayForShow = types.KeyboardButton(
        f'Количество дней для вывода курса: {user.dayForShow}')
    currencyList = types.KeyboardButton(
        f'Список валют в главном меню: {user.getUsedCurrency()}')

    markup.add(backButton)
    markup.add(mainCurrency)
    markup.add(mainCity)
    markup.add(dayForShow)
    markup.add(currencyList)

    if user.notify is None:
        markup.add(
            types.KeyboardButton('Указать время для отправки уведомлений'))
    else:
        markup.add(types.KeyboardButton(f"Время уведомлений: {user.notify}"),
                   types.KeyboardButton('Отключить уведомления'))

    if user.id in ADMINS:
        markup.add(
            types.KeyboardButton(f'Количетсво уникальных пользователей - '
                                 f'{getUsersMarkup(db, returnNumber=True)}'))

    return markup
def numericMarkup(fromCurrency, toCurrency):

    numberMarkup = InlineKeyboardMarkup(row_width=3)
    data = db.getCurrencyList()

    button1 = InlineKeyboardButton(text='1', callback_data=numeric_callback.new(item_name='1'))
    button2 = InlineKeyboardButton(text="2", callback_data=numeric_callback.new(item_name='2'))
    button3 = InlineKeyboardButton(text="3", callback_data=numeric_callback.new(item_name='3'))
    button4 = InlineKeyboardButton(text="4", callback_data=numeric_callback.new(item_name='4'))
    button5 = InlineKeyboardButton(text="5", callback_data=numeric_callback.new(item_name='5'))
    button6 = InlineKeyboardButton(text="6", callback_data=numeric_callback.new(item_name='6'))
    button7 = InlineKeyboardButton(text="7", callback_data=numeric_callback.new(item_name='7'))
    button8 = InlineKeyboardButton(text="8", callback_data=numeric_callback.new(item_name='8'))
    button9 = InlineKeyboardButton(text="9", callback_data=numeric_callback.new(item_name='9'))
    button0 = InlineKeyboardButton(text="0", callback_data=numeric_callback.new(item_name='0'))

    buttonBack = InlineKeyboardButton(text='Назад ⬅', callback_data=numeric_callback.new(item_name='back'))
    buttonDel = InlineKeyboardButton(text="Del.", callback_data=numeric_callback.new(item_name='del'))
    buttonClear = InlineKeyboardButton(text="Clear", callback_data=numeric_callback.new(item_name='clear'))
    buttonDot = InlineKeyboardButton(text=".", callback_data=numeric_callback.new(item_name='.'))
    buttonResult = InlineKeyboardButton(text="Результат", callback_data=numeric_callback.new(item_name='result'))

    buttonFrom = InlineKeyboardButton(text=f"Из {data[fromCurrency]['Emoji']} - {fromCurrency}",
                                      callback_data=numeric_callback.new(item_name='chFrom'))
    buttonTo = InlineKeyboardButton(text=f"в {data[toCurrency]['Emoji']} - {toCurrency}",
                                    callback_data=numeric_callback.new(item_name='chTo'))

    numberMarkup.add(buttonBack, buttonClear)
    numberMarkup.add(buttonFrom, buttonTo)
    numberMarkup.add(buttonResult)
    numberMarkup.add(button1, button2, button3)
    numberMarkup.add(button4, button5, button6)
    numberMarkup.add(button7, button8, button9)
    numberMarkup.add(buttonDel, button0, buttonDot)

    return numberMarkup