Skip to content

Instantly share code, notes, and snippets.

@dmp40
Last active May 15, 2022 06:33
Show Gist options
  • Save dmp40/c6ce4d0fd8cc153ea62ef5aca7ff0267 to your computer and use it in GitHub Desktop.
Save dmp40/c6ce4d0fd8cc153ea62ef5aca7ff0267 to your computer and use it in GitHub Desktop.
рыба бота 15,05,22
# версия от 14 мая 22 делаю рыбу для отработки перехода по клавиатуре бота
import telebot
import time
from telebot import types #для работы клавиатуры
from datetime import datetime
import gspread
from telebot.types import ReplyKeyboardMarkup
from settings import googlesheet_id, token, googlesheet_cluc
bot = telebot.TeleBot(token)
@bot.message_handler( commands = [ 'start', 'help' ])
def send_welcome(message ):
bot.reply_to(message, 'Привет, здесь можно пройти тест на гибкость. ')
keyboard = types.InlineKeyboardMarkup()
key_yes = types.InlineKeyboardButton(text='Да', callback_data= 'yes')
key_no = types.InlineKeyboardButton(text='Нет', callback_data='no')
keyboard.add(key_yes,key_no)
bot.send_message(message.chat.id, 'Готовы пройти тест на гибкость?', reply_markup=keyboard)
@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
if call.data == 'yes':
print('Вывести видео')
bot.send_message(call.message.chat.id, 'Здесь будет видео')
bot.send_message(call.message.chat.id, 'Достали до колен - 1, до щиколоток - 2, до пола - 3')
elif call.data == 'no':
print('Нажато Далее')
else:
bot.send_message(call.message.chat.id, 'https://www.youtube.com/watch?v=wDtqkdamyBM')
key_ball = types.ReplyKeyboardMarkup(resize_keyboard= True)
item_1 = types.KeyboardButton('1')
item_2 = types.KeyboardButton('2')
item_3 = types.KeyboardButton('3')
key_ball.add(item_1,item_2,item_3)
bot.send_message(call.message.chat.id, 'Выберите 1, 2 или 3', reply_markup=key_ball)
@bot.message_handler(content_types=['text'])
def bot_message(message):
if message.text == '1':
bot.send_message(message.chat.id, "Вы получили " + str(message.text)+ " баллов")
elif message.text == '2':
bot.send_message(message.chat.id, "Вы получили " + str(message.text) + " баллов")
elif message.text == '3':
bot.send_message(message.chat.id, "Вы получили " + str(message.text) + " баллов")
key_continue = types.ReplyKeyboardMarkup(resize_keyboard=True)
item = types.KeyboardButton('ДАЛЕЕ')
key_continue.add(item)
bot.send_message(message.chat.id, "Для продолжения нажмите ДАЛЕЕ ", reply_markup=key_continue)
@bot.message_handler(content_types=['text'])
def bot_message2(message):
if message.text == "ДАЛЕЕ":
print('Показать видео 2')
bot.polling(none_stop=True)
@dmp40
Copy link
Author

dmp40 commented May 14, 2022

Спасибо, большое за ответ!
Разобрался через дебаггер, что кнопка "Далее" handlerom text уже не обрабатывается.
А вот обработчик @bot.callback_query_handler(func=lambda call: True) ее смог обработать. Переделал кнопку на InlineKeyboardMarkup() и заработало.
Видимо теперь можно, постваить какой-то счетчик и по нему показывать соответствующее видео.

@dmp40
Copy link
Author

dmp40 commented May 15, 2022

Нашел решение через метод register_next_step_handler

Принимает два обязательных аргументы первый это message, а второй это function.
Работает таким образом, он ждёт сообщение пользователя и потом вызывает указанную функцию с аргументом message

import telebot
from settings import googlesheet_id, token, googlesheet_cluc

bot = telebot.TeleBot(token)
@bot.message_handler(commands=['help', 'start'])
def start(message):
msg = bot.send_message(message.chat.id, 'Введите первое значение')
bot.register_next_step_handler(msg, start_2)

def start_2(message):
msg = bot.send_message(message.chat.id, 'Введите второе значение')
bot.register_next_step_handler(msg, start_3, message.text)

def start_3(message, value):
print(message.text, value)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment