@hmrdze

Aiogram не присылает ответ, если я переделываю сообщение в нижний регистр?

aiogram не присылает ответ на сообщение "купить питомца", но при этом отправляет ответ например на сообщение "мой питомец". Также если message.text.startswith == "купить питомца" он отправит ответ. Как решить эту проблему?

@dp.message_handler(content_types = ["text"])
async def function_pets(message: types.Message):
    user_name = message.from_user.get_mention(as_html=True)
    pet = int(cursor.execute("SELECT pet from users where user_id = ?",(message.from_user.id,)).fetchone()[0])
    pet_name = str(cursor.execute("SELECT pet_name from users where user_id = ?",(message.from_user.id,)).fetchone()[0])
    pet_hp = int(cursor.execute("SELECT pet_hp from users where user_id = ?",(message.from_user.id,)).fetchone()[0])
    pet_eat = int(cursor.execute("SELECT pet_eat from users where user_id = ?",(message.from_user.id,)).fetchone()[0])
    pet_mood = int(cursor.execute("SELECT pet_mood from users where user_id = ?",(message.from_user.id,)).fetchone()[0])
    user_id = message.from_user.id
    balance = round(int(cursor.execute("SELECT balance from users where user_id = ?",(message.from_user.id,)).fetchone()[0]))
    loser = random.choice(['', '', '', '', ''])   

    if message.text.lower() == "купить питомца":
        nomer = int(message.text.split()[2])
        if balance >= int(pets[nomer]["price"]):
            if pet < 1:
                await bot.send_message(message.chat.id, f'{pets[nomer]["emoji"]} | {user_name}, вы успешно купили {pets[nomer]["name"]} за {int(pets[nomer]["price"])}$ ', parse_mode='html')
                cursor.execute(f'UPDATE users SET balance = {balance - int(pets[nomer]["price"])} WHERE user_id = "{user_id}"') 
                cursor.execute(f'UPDATE users SET pet = {nomer} WHERE user_id = "{user_id}"') 
                cursor.execute(f'UPDATE users SET pet_hp = {100} WHERE user_id = "{user_id}"') 
                cursor.execute(f'UPDATE users SET pet_eat = {100} WHERE user_id = "{user_id}"') 
                cursor.execute(f'UPDATE users SET pet_mood = {100} WHERE user_id = "{user_id}"') 
                connect.commit()   
            else:
                await bot.send_message(message.chat.id, f'{user_name}, у вас уже есть питомец {loser}', parse_mode='html')
        else:
            await bot.send_message(message.chat.id, f'{user_name}, у вас недостаточно средств для покупки питомца {loser}', parse_mode='html')

    if message.text.lower() == "мой питомец":        
        if pet == 0:
            await bot.send_message(message.chat.id, f'ℹ️ | {user_name}, у вас нету питомца! {loser}', parse_mode='html')    
        if pet > 0:
            if pet_name == "name":
                await message.bot.send_message(message.chat.id, f'{pets[pet]["emoji"]} | {user_name}, ваш питомец: {pets[pet]["name"]}\n❤️ | ХП: {pet_hp} \n | Сытость: {pet_eat}\n☀️ | Настроение: {pet_mood} \n\n✏ | Питомец имя [имя] - изменить имя питомца\n❤ | Вылечить питомца - вылечить питомца\n | Покормить питомца - покормить питомца\n | Выгулять питомца - поднять настроение питомцу', parse_mode='html')                                         
            else:
                await message.bot.send_message(message.chat.id, f'{pets[pet]["emoji"]} | {user_name}, ваш питомец: {pets[pet]["name"]} \n✏️ | Имя питомца: {pet_name}\n❤️ | ХП: {pet_hp} \n | Сытость: {pet_eat}\n☀️ | Настроение: {pet_mood} \n\n✏ | Питомец имя [имя] - изменить имя питомца\n❤ | Вылечить питомца - вылечить питомца\n | Покормить питомца - покормить питомца\n | Выгулять питомца - поднять настроение питомцу', parse_mode='html')

    if message.text.lower() == "вылечить питомца":  
        c = Decimal((100 - pet_hp) * 10000)
        c2 = (100 - pet_hp) * 10000
        hp = 100 - pet_hp
        if pet == 0:
            await bot.send_message(message.chat.id, f'ℹ️ | {user_name}, у вас нету питомца! {loser}', parse_mode='html')  
        if pet > 0:
            if pet_hp < 100:
                if c <= balance:
                    await bot.send_message(message.chat.id, f'❤ | {user_name}, вы вылечили своего питомца за {c}!', parse_mode='html')
                    cursor.execute(f'UPDATE users SET balance = {balance - c2} WHERE user_id = "{user_id}"') 
                    cursor.execute(f'UPDATE users SET pet_hp = {pet_hp + hp} WHERE user_id = "{user_id}"')
                if c > balance:
                    await bot.send_message(message.chat.id, f' | {user_name}, недостаточно средств! {loser}', parse_mode='html')
            if pet_hp == 100:
                await bot.send_message(message.chat.id, f'❤ | {user_name}, ваш питомец не нуждается в лечении!', parse_mode='html')

    if message.text.lower() == "покормить питомца":  
        c = Decimal((100 - pet_eat) * 10000)
        c2 = (100 - pet_eat) * 10000
        eat = 100 - pet_eat
        if pet == 0:
            await bot.send_message(message.chat.id, f'ℹ️ | {user_name}, у вас нету питомца! {loser}', parse_mode='html')  
        if pet > 0:
            if pet_eat < 100:
                if c <= balance:
                    await bot.send_message(message.chat.id, f' | {user_name}, вы покормили своего питомца за {c}!', parse_mode='html')
                    cursor.execute(f'UPDATE users SET balance = {balance - c2} WHERE user_id = "{user_id}"') 
                    cursor.execute(f'UPDATE users SET pet_eat = {pet_eat + eat} WHERE user_id = "{user_id}"')
                if c > balance:
                    await bot.send_message(message.chat.id, f' | {user_name}, недостаточно средств! {loser}', parse_mode='html')
            if pet_eat == 100:
                await bot.send_message(message.chat.id, f' | {user_name}, ваш питомец не голоден! {loser}', parse_mode='html')

    if message.text.lower() == "выгулять питомца":  
        c = Decimal((100 - pet_mood) * 10000)
        mood = 100 - pet_mood
        if pet == 0:
            await bot.send_message(message.chat.id, f'ℹ️ | {user_name}, у вас нету питомца! {loser}', parse_mode='html')  
        if pet > 0:
            if pet_mood < 100:
                await bot.send_message(message.chat.id, f' {user_name}, вы выгуляли своего питомца!', parse_mode='html')
                cursor.execute(f'UPDATE users SET pet_mood = {pet_mood + mood} WHERE user_id = "{user_id}"')
            if pet_mood == 100:
                await bot.send_message(message.chat.id, f' {user_name}, ваш питомец не хочет гулять!', parse_mode='html')

    if message.text.lower() == "питомец имя": 
        name = str(message.text.split()[2])
        if pet == 0:
            await bot.send_message(message.chat.id, f'ℹ️ | {user_name}, у вас нету питомца! {loser}', parse_mode='html')
        if pet > 0:
            await bot.send_message(message.chat.id, f'✏️ | {user_name}, вы успешно поменяли имя своего питомца на: {name}!', parse_mode='html')
            cursor.execute(f'UPDATE users SET pet_name = \"{name}\" WHERE user_id = "{user_id}"')

    if message.text.lower() == "продать питомца":
        if pet == 0:
            await bot.send_message(message.chat.id, f'ℹ️ | {user_name}, у вас нету питомца! {loser}', parse_mode='html')
        if pet > 0:
            sellprice = int(pets[pet]["price"])
            sellprice = sellprice / 2
            await bot.send_message(message.chat.id, f' | {user_name}, вы успешно продали своего питомца за {sellprice}$', parse_mode='html')
            cursor.execute(f'UPDATE users SET balance = {balance + sellprice} WHERE user_id = "{user_id}"') 
            cursor.execute(f'UPDATE users SET pet = {0} WHERE user_id = "{user_id}"') 
            cursor.execute(f'UPDATE users SET pet_hp = {100} WHERE user_id = "{user_id}"') 
            cursor.execute(f'UPDATE users SET pet_eat = {100} WHERE user_id = "{user_id}"') 
            cursor.execute(f'UPDATE users SET pet_mood = {100} WHERE user_id = "{user_id}"') 

    if message.text.lower() == "питомцы":
        await bot.send_message(message.chat.id, f"{user_name}, доступные питомцы:\n 1. Цыплёнок - 1.000.000$\n 2. Кот - 100.000.000$\n 3. Пёс - 500.000.000$\n 4. Попугай - 1.000.000.000$\n 5. Единорог - 50.000.000.000$\n 6. Ядерный гусь - 100.000.000.000$\n 7. Дельфин - 500.000.000.000$\n 8. Тигр - 10.000.000.000.000$\n 9. Дракон - 100.000.000.000.000$\n\n Для покупки питомца введите: Купить питомца [номер]\nℹ Для просмотра информации о своем питомце введите: Мой питомец", parse_mode='html')
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
@hmrdze Автор вопроса
Решил вопрос добавлением .startswith() после .lower()

if message.text.lower().startswith("купить питомца"):
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы