-
Автор темы
- #1
Всем привет,это уже наш второй урок,в которым мы будем разбирать ветки сообщений и кнопки!
Давай припустим что-бы бот вел диалог с пользователем,как же это сделать? Для этого нам нужен будет метод egister_next_step_handler
Сам примерный код:
И так на данные о самом пользователе,у нас составляются. Лучше конечно все делать через БД,но сейчас у нас всего 2 урок :3
Теперь можно сделать "confirm" кнопками,как это все мы любим :0 Для этого мы почти полностью переписываем get_age
Ну что? Клавиатура работает,но если на ее нажать ничего не будет. Предлагаю написать "свой" метод обработчик
Все отлично работает. До новых встреч :)
P.S: Мало обьяснений,ну бывает. В следующем уроке исправлюсь
Все таки мы тут не маленький калькулятор пишем,а серьезного бота
Давай припустим что-бы бот вел диалог с пользователем,как же это сделать? Для этого нам нужен будет метод egister_next_step_handler
Сам примерный код:
Python:
NickName = '';
status = '';
age = 0;
@bot.message_handler(content_types=['text'])
def start(message):
if message.text == '/reg':
bot.send_message(message.from_user.id, "Какой у тебя ник на yougame.biz?");
bot.register_next_step_handler(message, get_NickName); #следующий шаг – функция get_NickName
else:
bot.send_message(message.from_user.id, 'Напиши /reg');
def get_stus(message): #получаем статус
global NickName;
NickName = message.text;
bot.send_message(message.from_user.id, 'Какой у тебя статус?');
bot.register_next_step_handler(message, get_status);
def get_surname(message):
global status;
status = 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, 'Цифрами, пожалуйста');
bot.send_message(message.from_user.id, 'Тебе '+str(age)+' лет, твой ник '+name+' '+status+'?')
Теперь можно сделать "confirm" кнопками,как это все мы любим :0 Для этого мы почти полностью переписываем get_age
Python:
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='Yes', callback_data='yes'); #кнопка «Да»
keyboard.add(key_yes); #добавляем кнопку в клавиатуру
key_no= types.InlineKeyboardButton(text='No', callback_data='no');
keyboard.add(key_no);
question = 'Тебе '+str(age)+' лет, тебя зовут '+NickName+' '+status+'?';
bot.send_message(message.from_user.id, text=question, reply_markup=keyboard)
Python:
@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
if call.data == "yes": #call.data это callback_data, которую мы указали при объявлении кнопки
.... #код сохранения данных, или их обработки
bot.send_message(call.message.chat.id, 'Запомню : )');
elif call.data == "no":
... #переспрашиваем
P.S: Мало обьяснений,ну бывает. В следующем уроке исправлюсь
Все таки мы тут не маленький калькулятор пишем,а серьезного бота

Последнее редактирование: