Почему elif invalid syntax?
Всем привет. Почему у меня выдаёт ошибку? Вот код.
import telebot
from telebot import types
bot = telebot.TeleBot('TOKEN')
@bot.message_handler(commands=['start'])
def start(message):
bot.send_message(message.chat.id, 'Привет!✋\n?Мы продаём голду, аккаунты и промокоды по самым сладким ценам!?\nВсегда мечтал стать крутым в стандоффе? Тогда тебе к нам!')
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
accounts = types.KeyboardButton('КУПИТЬ АККАУНТ?')
promo = types.KeyboardButton('КУПИТЬ ПРОМОКОД?')
gold = types.KeyboardButton('КУПИТЬ ГОЛДУ?')
markup.add(accounts, promo, gold)
bot.send_message(message.chat.id, 'Выберите, что хотите купить', reply_markup=markup)
@bot.message_handler()
def get_user_text(message):
if message.text == 'КУПИТЬ АККАУНТ?':
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=1)
buy_account = types.KeyboardButton('АККАУНТ С НОЖОМ И ПЕРЧАТКАМИ - 230₽')
buy_account_1 = types.KeyboardButton('АККАУНТ С ТЫЧКАМИ - 175₽')
back_to_menu = types.KeyboardButton('НАЗАД В МЕНЮ?')
markup.add(buy_account, buy_account_1, back_to_menu)
bot.send_message(message.chat.id, 'Выберите аккаунт, который хотите купить', reply_markup=markup)
elif message.text == 'Назад':
bot.send_message(m.c.i, "Вы вернулись назад", reply_markup=accounts, promo, gold)
bot.polling(none_stop=True)
Ответы (1 шт):
По моему, всё довольно очевидно.
Посмотрите на блок, в котором находится elif
В Питоне блоки выделяются отступами.
у вас после if идет отступ и 4 строки кода. Которые выполняются если условие истинно
А потом у Вас обратный отступ.
С точки зрения языка, те две строки, которые содержат код
markup.add(buy_account, buy_account_1, back_to_menu)
bot.send_message(message.chat.id, 'Выберите аккаунт, который хотите купить', reply_markup=markup)
это то, что будет происходить после закончившегося блока if (и будет выполняться независимо от истинности условия в if)
А потом у вас идет elif. И интерпретатор питона думает "черт побери, откуда он взялся, если if уже давно закончился?"
Как исправить? думаю, добавить отступы у этих двух строк.
Дополнение, дополненное чуть позже
Смотрите, у Вас по ходу работы над программой появляются ошибки. попробуйте прочитать сообщение об ошибке, и, если само сообщение у Вас не вызывает никаких идей - просто погуглить с этим сообщением об ошщибке.
Этот совет звучит очевидно, но он мог бы решить массу вопросов. например, я вижу ваше удаленное сообщение. И ошибка в нём "SyntaxError: positional argument follows keyword argument" говорит о нарушении синтаксиса.
Ну, то есть, при вызове функции есть понятие "positional argument" и "keyword argument". И всегда, вот прямо всегда positional argument должны быть до keyword argument в списке аргументов. Так устроен мир. И это написано много где!