@motoblok1

Нужна помощь с тг ботом, нужно чтобы else не срабатывал на каждое сообщение пользователя, что делаю не так?

import random
import telebot
from telebot import types
import requests
from bs4 import BeautifulSoup
from datetime import datetime

today = datetime.today()
today = today.strftime('%d/%m/%Y')
url = 'http://www.cbr.ru/scripts/XML_daily.asp?'
payload = {'date_req': today}
token = 'токен'
bot = telebot.TeleBot(token)


def get_curse(id):
    response = requests.get(url, params=payload)
    xml = BeautifulSoup(response.content, 'html.parser')
    return xml.find('valute', {'id': id}).value.text.replace(',', '.')


@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    button1 = types.KeyboardButton('Во что поиграть?')
    button2 = types.KeyboardButton('Рандомное число')
    button3 = types.KeyboardButton('Узнать курс валют')
    button4 = types.KeyboardButton('Викторина')
    markup.add(button1, button2, button3, button4)
    bot.send_message(message.chat.id, 'Привет!', reply_markup=markup)
@bot.message_handler(content_types=['text'])
def bot_tg(message):
    if message.chat.type == 'private':
        if message.text == 'Во что поиграть?':
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
            button2 = types.KeyboardButton('Стратегия')
            button3 = types.KeyboardButton('Шутер')
            button4 = types.KeyboardButton('Выживание')
            back = types.KeyboardButton('Назад')
            markup.add(button2, button3, button4, back)
            bot.send_message(message.chat.id, 'Во что поиграть?', reply_markup=markup)

    if message.text == 'Стратегия':
        bot.send_message(message.chat.id, 'Dota 2')

    elif message.text == 'Выживание':
        bot.send_message(message.chat.id, 'Dayz')

    elif message.text == 'Шутер':
        bot.send_message(message.chat.id, 'Apex')

    if message.text == 'Назад':
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        button1 = types.KeyboardButton('Во что поиграть?')
        button2 = types.KeyboardButton('Рандомное число')
        button3 = types.KeyboardButton('Узнать курс валют')
        button4 = types.KeyboardButton('Викторина')
        markup.add(button1, button2, button3, button4)
        bot.send_message(message.chat.id, 'Главное меню', reply_markup=markup)

    if message.text == 'Рандомное число':
        bot.send_message(message.chat.id, 'Ваше число: ' + str(random.randint(0, 100)))

    if message.text == 'Узнать курс валют':
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        button1 = types.KeyboardButton('Доллар')
        button2 = types.KeyboardButton('Тенге')
        button3 = types.KeyboardButton('Евро')
        button4 = types.KeyboardButton('Китайский юань')
        back = types.KeyboardButton('Назад')
        markup.add(button1, button2, button3, button4, back)
        bot.send_message(message.chat.id, 'Главное меню', reply_markup=markup)
    elif message.text == 'Доллар':
        bot.send_message(message.chat.id, get_curse('R01235'))
    elif message.text == 'Тенге':
        bot.send_message(message.chat.id, get_curse('R01335'))
    elif message.text == 'Евро':
        bot.send_message(message.chat.id, get_curse('R01239'))
    elif message.text == 'Китайский юань':
        bot.send_message(message.chat.id, get_curse('R01375'))
    if message.text == 'Викторина':
        bot.send_message(message.chat.id, 'Вопрос N1:\nСколько месяцев в году имеют 28 дней?')
    elif message.text.lower() == 'все' or message.text.lower() == '12' or message.text.lower() == '12 месяцев' or message.text.lower() == 'все месяцы':
        bot.send_message(message.from_user.id, 'Верно.')
        bot.send_message(message.from_user.id, 'Вопрос N2:\nСколько лет длилась 100-летняя война?')

    elif message.text.lower() == '116' or message.text.lower() == '116 лет' or message.text.lower() == 'сто шестнадцать':
        bot.send_message(message.from_user.id, 'Верно.')
        bot.send_message(message.from_user.id, 'Вопрос N3:\nЧто изучает уфология?')
    elif message.text.lower() == 'нло' or message.text.lower() == 'летающие тарелки' or message.text.lower() == 'инопланетян':
        bot.send_message(message.from_user.id, 'Верно.')
        bot.send_message(message.from_user.id, 'Это был последний вопрос.')

#тот самый else
    else:
        bot.send_message(message.from_user.id, 'неверно, вы можете попробовать ещё раз :)')
  • Вопрос задан
  • 135 просмотров
Ответы на вопрос 1
@Jonhef
Так else: и не будет срабатывать на любое сообщение, он будет срабатывать на все, которые не соответствуют if-elif конструкциям.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы