import telebot
from telebot import types
from db.database import create_account
from config import TOKEN
bot = telebot.TeleBot(TOKEN)
sub = 'default'
id = ''
@bot.message_handler(commands=['start'])
def start_cmd(message):
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton("Регестрация", callback_data = 'register')
btn2 = types.InlineKeyboardButton("Для чего нужна регестрация? Что нужно для неё?⁉", callback_data = 'faq')
markup.add(btn1, btn2)
bot.send_message(message.from_user.id, f"Привет, я бот который скачивает видео с YouTube!\n Для начало работы нажми на кнопку <b>'Регестрация'</b>.",
parse_mode="html", reply_markup=markup)
@bot.callback_query_handler(func = lambda callback: True)
def register(callback):
id_user = callback.message.chat.id
if callback == 'register':
try:
create_account(id_user, sub)
bot.send_message(callback.message.chat.id, "Вы успешно зарегестрировались!")
except:
bot.send_message(callback.message.chat.id, "Произошла ошибка, попробуйте позже.")
@bot.callback_query_handler(func = lambda callback: True)
def faq(callback):
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton('Назад', callback = 'back')
markup.add(btn1)
if callback == 'faq':
bot.send_message(callback.message.chat.id, '1. При регестрации мы получаем ваш <b>ID</b>, он не несёт ни какой конфиденциальной информациию\n'
'2. Наш сервис абсолютно бесплатен, Мы сохроняем ваш id для подписки, так как id - уникальный ключ.',
parse_mode='html', reply_markup='back')
@bot.message_handler(content_types=['text'])
def get_audio(message):
if message.text == "Привет":
bot.send_message(message.from_user.id, "Привет, чем я могу тебе помочь?")
elif message.text == "/help":
bot.send_message(message.from_user.id, "Напиши привет")
else:
bot.send_message(message.from_user.id, "Я тебя не понимаю. Напиши /help.")
bot.polling(none_stop=True, interval=0)
@bot.callback_query_handler(func = lambda callback: True)
func = lambda callback: True
). Но у тебя в коде ДВЕ функции-обработчика, и обе говорят, что их надо вызывать для любых кнопок. Бот в таком случае вызывает только одну из них.func = lambda callback: callback.data == 'register'
, то только кнопка, отдающая строку "register", будет вызывать срабатывание этой функции. func = lambda callback: callback.data in ('faq', 'register')
, тогда функция ниже будет вызвана при нажатии любой из двух кнопок, и тебе нужно будет внутри функции выбрать один из двух вариантов.