Пишу телеграм бота по урокам на хабре, но возникли некоторые сложности с запуском кода на сервере. выдаёт следующую ошибку: File "A:\Users\Чип и Дейл\Desktop\telegram\test_bot.py", line 43, in bot.send_message(message.from_user.id, text = question,reply_markup = keyboard) NameError: name 'message' is not defined
def get_name(message): global name; name = message.text; bot.send_message(message.from_user.id, 'какая у тебя фамилия?'); bot.register_next_step_handler(message, get_surname);
Вроде бы message это функция а не одна из глобальных переменных, в чём подвох, где я затупил кто подскажет?)
Дополнен 3 года назад
n̉ͯ̀͊̀́̈͆̾̈ͩͧ̇̍̑ͧ҉̶̵̢̙̠͙͙̙̯̥̤͔͖̯̥͝, File "A:\Users\Чип и Дейл\Desktop\telegram\bot.py", line 58, in get_surname bot.send_message('Сколько тебе лет?'); TypeError: TeleBot.send_message() missing 1 required positional argument: 'text'
Запустил я его код, всё работает но теперь другая ошибка вылезла, где то пропущен аргумент, text. Я изначально его в content_types указывал. Теперь куда его вставлять ?
но разве bot.send_message() это не обращение бота на ваше сообщение ? Если нет то как я могу объявить переменную которую применят бот в качестве аргумента ?
Zigerson, в переменную нужно перемести константу соответствующего типа, затем объявить фукцию для перехода в спящий режим
выдаёт следующую ошибку:
File "A:\Users\Чип и Дейл\Desktop\telegram\test_bot.py", line 43, in
bot.send_message(message.from_user.id, text = question,reply_markup = keyboard)
NameError: name 'message' is not defined
import telebot
import configs
from telebot import types
bot = telebot.TeleBot(configs.mytoken)
name = "";
surname = "";
age = 0;
@bot.message_handler(content_types=['text'])
def start(message):
bot.send_message(message.from_user.id, 'как тебя зовут?')
bot.resister_next_step_handler(message, get_name);
def get_name(message):
global name;
name = message.text;
bot.send_message(message.from_user.id, 'какая у тебя фамилия?');
bot.register_next_step_handler(message, get_surname);
def get_surname(message):
global surname;
surname - message.text;
bot.send_message('Сколько тебе лет?');
bot.register_next_step_handler(message, get_age);
def get_age(message):
global age;
while age == 0:
try:
age = int(message.text)
except Exception:
bot.send_message(message.from_user.id, 'цифрами, пожалуйста')
keyboard = types.InlineKeyboardMarkup(); #Наша клавиаткра
key_yes = types.InlineKeyboardButton(text='Да',callback_data= 'yes'); #кнопка «Да»
keyboard.add(key_yes); #"Добавляем кнопку в клавиатуру"
key_no = types.InlineKeyboardButton(text= "Нет", callback_data= 'no');
keyboard.add(key_no);
question = 'Тебе' +str(age)+ 'лет, тебя зовут' +name+ ''+surname+ '?'
bot.send_message(message.from_user.id, text = question,reply_markup = keyboard)
bot.send_message(message.from_user.id, "тебе" +str(age)+ 'лет, тебя зовут ' +name+ '' +surname+ '?')
@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
if call.data == 'yes': #типо callback_dataы
bot.send_message(call_message.chat.id, "Запомню:)");
elif call.data == 'no':
bot.send_message(message.from_user.id, text = question,reply_markup = keyboard)
#переспрашиваем
bot.polling(none_stop = True, interval = 0)
Вроде бы message это функция а не одна из глобальных переменных, в чём подвох, где я затупил кто подскажет?)