Вы ищете помощь с кодом на языке Python?

Ошибка:
NameError: имя 'chat' не определено

Код:
import telebot
from currency_converter import CurrencyConverter
from telebot import types

bot = telebot.TeleBot("Api ключ поставлен")
currency = CurrencyConverter()
amount = 0

@bot.message_handler(commands=['start'])
def start(message):
	bot.send_message(message.chat.id, 'Привет, введите сумму')
	bot.register_next_step_handler(message, summa)

def summa(message):
	global amount
	try:
		amount = int(message.text.strip())

	except ValueError:
		bot.send_message(message.chat.id, 'Неверный формат. Впишите сумму')
		bot.register_next_step_handler(message, summa)
		return

if amount > 1:
	markup = types.InlineKeyboardMarkup(row_width=2)
	btn1 = types.InlineKeyboardButton('USD/EUR', callback_data='usd/eur')
	btn2 = types.InlineKeyboardButton('EUR/USD', callback_data='eur/usd')
	btn3 = types.InlineKeyboardButton('USD/GBP', callback_data='usd/gbp')
	btn4 = types.InlineKeyboardButton('Другое значение', callback_data='else')
	markup.add(btn1, btn2, btn2, btn3, btn4)
	bot.send_message(message.chat.id, 'Выберите пару валют', reply_markup=markup)
else:
	bot.send_message(message.chat.id, "Число должно быть больше 1. Введите число")
	bot.register_next_step_handler (message, summa)

bot.polling(none_stop=True)
Изображение к вопросу
Изображение к вопросу
  • 22 ноября 2023 г. 18:50
Ответы на вопрос 2
Ошибка `NameError: имя 'chat' не определено` возникает из-за того, что вы используете переменную `message` вне функции `summa`. 

Чтобы исправить эту ошибку, вы можете переместить код, который использует переменную `message`, внутрь функции `summa()`. Вот исправленный код:

```python
import telebot
from currency_converter import CurrencyConverter
from telebot import types

bot = telebot.TeleBot("Api ключ поставлен")
currency = CurrencyConverter()
amount = 0

@bot.message_handler(commands=['start'])
def start(message):
    bot.send_message(message.chat.id, 'Привет, введите сумму')
    bot.register_next_step_handler(message, summa)

def summa(message):
    global amount
    try:
        amount = int(message.text.strip())
    except ValueError:
        bot.send_message(message.chat.id, 'Неверный формат. Впишите сумму')
        bot.register_next_step_handler(message, summa)
        return
    
    if amount > 1:
        markup = types.InlineKeyboardMarkup(row_width=2)
        btn1 = types.InlineKeyboardButton('USD/EUR', callback_data='usd/eur')
        btn2 = types.InlineKeyboardButton('EUR/USD', callback_data='eur/usd')
        btn3 = types.InlineKeyboardButton('USD/GBP', callback_data='usd/gbp')
        btn4 = types.InlineKeyboardButton('Другое значение', callback_data='else')
        markup.add(btn1, btn2, btn2, btn3, btn4)
        bot.send_message(message.chat.id, 'Выберите пару валют', reply_markup=markup)
    else:
        bot.send_message(message.chat.id, "Число должно быть больше 1. Введите число")
        bot.register_next_step_handler(message, summa)

bot.polling(none_stop=True)
```

Этот исправленный код должен избавить вас от ошибки `NameError: имя 'chat' не определено`.
В коде измените выражение "message.chat.id" на "chat.id". Это произошло в моменте, когда вы отправили сообщение об ошибке. Вам нужно обязательно указать, что число должно быть больше 1 и просить пользователя ввести число.
Похожие вопросы