Задать вопрос
@maksimpythonn

Где в моём коде ошибка?

Учу библиотеку pytelegtamBotAPI. Написал тестовый бот, но выходит ошибка. Помогите пожалуйста

@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btnn1 = types.KeyboardButton("Проверка")
    markup.add(btnn1)
    bot.send_message(message.chat.id, text="Здравствуйте!", reply_markup=markup)

@bot.message_handler(content_types=['text'])
def func(message):
    if(message.text == "Проверка"):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btnn1 = types.KeyboardButton("Да, мне есть 18")
        btnn2 = types.KeyboardButton("Нет, мне нету 18")
        markup.add(btnn1, btnn2)
        bot.send_message(message.chat.id, text="Вам есть 18?", reply_markup=markup)
        if(message.text == "Да, мне есть 18"):
            bot.send_message(message.chat.id, text='Вы прошли проверку!'
        elif(message.text == "Нет, мне нету 18"):
            bot.send_message(message.chat.id, text='Вы не прошли проверку'
bot.polling()
  • Вопрос задан
  • 226 просмотров
Подписаться 1 Простой 7 комментариев
Решения вопроса 1
Keffmen
@Keffmen
Изучаю Python , C# , HTML и многое другое
import telebot
from telebot import types

BOT_TOKEN = твой токен
bot = telebot.TeleBot(BOT_TOKEN)

@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btnn1 = types.KeyboardButton("Проверка")
    markup.add(btnn1)
    bot.send_message(message.chat.id, text="Здравствуйте!", reply_markup=markup)

@bot.message_handler(content_types=['text'])
def func(message):
    if message.text == "Проверка":
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btnn1 = types.KeyboardButton("Да, мне есть 18")
        btnn2 = types.KeyboardButton("Нет, мне нету 18")
        markup.add(btnn1, btnn2)
        bot.send_message(message.chat.id, text="Вам есть 18?", reply_markup=markup)
    elif message.text == "Да, мне есть 18":
            bot.send_message(message.chat.id, text='Вы прошли проверку!')
    elif message.text == 'Нет, мне нету 18':
            bot.send_message(message.chat.id, text='Вы не прошли проверку')

bot.polling()

так или так
import telebot
from telebot import types

BOT_TOKEN = твой токен
bot = telebot.TeleBot(BOT_TOKEN)

@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btnn1 = types.KeyboardButton("Проверка")
    markup.add(btnn1)
    bot.send_message(message.chat.id, text="Здравствуйте!", reply_markup=markup)

@bot.message_handler(content_types=['text'])
def func(message):
    if message.text == "Проверка":
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btnn1 = types.KeyboardButton("Да, мне есть 18")
        btnn2 = types.KeyboardButton("Нет, мне нету 18")
        markup.add(btnn1, btnn2)
        msg = bot.send_message(message.chat.id, text="Вам есть 18?", reply_markup=markup)
        bot.register_next_step_handler(msg,vosrat)
def vosrat(message):
    if message.text == "Да, мне есть 18":
            bot.send_message(message.chat.id, text='Вы прошли проверку!')
    elif message.text == 'Нет, мне нету 18':
            bot.send_message(message.chat.id, text='Вы не прошли проверку')

bot.polling()

Если нужна помощь пиши в телеграм @Keffmen
Отметь ответ если тебе помог
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
shurshur
@shurshur
Сисадмин, просто сисадмин...
И не будет работать. После отправки сообщения "Вам есть 18?" в переменной message не появится нового сообщения. И вообще, надо привыкать, что боты работают по событиям. Нажатие на кнопку - это новое событие, которое сделает новый вызов обработчика.

Для таких задач лучше использовать FSM пример https://github.com/eternnoir/pyTelegramBotAPI/blob...
Ответ написан
Комментировать
@DMITRY1234455
скобки закройте
62bb46f249a93878387063.jpeg
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы