@newbie63

Как боту не прописывать некоторые строчки?

У меня есть бд sqlite3, где хранятся числа пользователя(money; bank; box; lvl; xp) Бот выводит числа данным кодом:
@dp.message_handler(commands=['number'])
async def number(message: types.Message):
    conn = sqlite3.connect('db.db')
    cur = conn.cursor()
    user_id = message.from_user.id
    result = cur.execute("SELECT * FROM users WHERE user_id = ?", (user_id, )).fetchone()
    money = result[5]
    bank = result[6]
    box = result[7]
    lvl = result[8]
    xp = result[9]
    money1 = (f"У вас money: {money}")
    bank1 = (f"У вас bank: {bank}")
    box1 = (f"У вас box: {box}")
    lvl1 = (f"У вас lvl: {lvl}")
    xp1 = (f"У вас xp: {xp}")
    await message.reply(f"{money1}  {bank1}  {box1}  {lvl1}  {xp1}")

Но когда одно или несколько значений = 0, то их показывать не нужно. Например box и xp = 0, то бот должен вывести
await message.reply(f"{money1} {bank1} {lvl1} ")
  • Вопрос задан
  • 60 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Сделай подпрограмму, хотя бы.
def format_non_zero(items):
    message_list = []
    for format, value in items:
        if value != 0:
            message_list.append(format.format(value))
    return message_list

msg_parts = format_non_zero([ #каждый элемент списка - отдельное значение+его формат. Порядок тот же.
    ("У вас money: {0}", money), #обрати внимание на строку формата!
    ("У вас bank: {0}", bank),
    ("У вас brain: {0}", brain),
]) #функция вернёт список строк
await message.reply('\n'.join(msg_parts)) #соединяем строки перед отправкой.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
alternativshik
@alternativshik
прочитать что-то по основам программирования. Хотя бы учебник школьный
Ответ написан
Комментировать
@Afafks123132132165
if(result == 0):
await message.reply(f"{money1} {bank1} {lvl1} ")

Вот так?
Ну что то типо такого.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы