Python telebot | Настройка обработчиков

floppov

Участник
Автор темы
85
18
Подскажите пожалуйста че делать если у меня багнулся код? При запуске бота нажимая на кнопку он отправляет сообщение которое вообще не должен, его нет в коде. Все сообщения такого типа у меня через query. По нажатию на кнопку назад он должен возвращать старое меню выбора панели но он пишет что у меня нет доступа и одновременно пишет что я вернулся в админ панель.
Python:
import telebot
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton

bot = telebot.TeleBot('6085288264:AAE3pTGI_y2g3EHG4tEBGaICyaw27sC0hl0')


films = []
films_panel_message_id = None  # Идентификатор сообщения с админ панелью "Управление фильмами"

# Команда /start
@bot.message_handler(commands=['start'])
def start(message):
    bot.send_message(message.chat.id, "Отправьте мне код из видео, и я скажу вам, что это за фильм.")

# Команда /admin
@bot.message_handler(commands=['admin'])
def admin_panel(message):
    if message.from_user.id not in [5194125239, 635457750]:
        bot.answer_callback_query(call.id, text="У вас нет доступа для админ панели.")
        return

    keyboard = InlineKeyboardMarkup(row_width=1)
    buttons = [
        InlineKeyboardButton("Управление рекламой", callback_data="advertising"),
        InlineKeyboardButton("Управление фильмами", callback_data="films")
    ]
    keyboard.add(*buttons)

    bot.send_message(message.chat.id, "Админ панель:", reply_markup=keyboard)

@bot.callback_query_handler(func=lambda call: True)
def admin_panel_callback(call):
    if call.data == "advertising":
        advertising_panel(call.message)
    elif call.data == "films":
        films_panel(call.message)
    elif call.data == "back":
        admin_panel(call.message)  # Исправленный код: передача message в admin_panel
        bot.answer_callback_query(call.id, text="Вы вернулись к выбору админ панели.")
        return


    bot.answer_callback_query(call.id)

def advertising_panel(message):
    keyboard = InlineKeyboardMarkup(row_width=1)
    buttons = [
        InlineKeyboardButton("Добавить рекламу", callback_data="add_film_button"),
        InlineKeyboardButton("« Назад", callback_data="back")
    ]
    keyboard.add(*buttons)

    send_admin_message(message.chat.id, "Управление рекламой:", reply_markup=keyboard)

def films_panel(message):
    keyboard = InlineKeyboardMarkup(row_width=2)
    
    # Ряд с кнопкой "Добавить фильм"
    add_film_button_row = [InlineKeyboardButton("Добавить канал", callback_data="add_channel_button")]
    keyboard.add(*add_film_button_row)

    # Ряд с кнопкой "« Назад"
    back_button_row = [InlineKeyboardButton("« Назад", callback_data="back")]
    keyboard.add(*back_button_row)

    # Добавление кнопок фильмов
    for film in films:
        keyboard.add(InlineKeyboardButton(film['title'], callback_data=f"film_{film['code']}"))

    send_admin_message(message.chat.id, "Управление фильмами:", reply_markup=keyboard)

# Отправка сообщения в админ панель
def send_admin_message(chat_id, message_text, reply_markup=None):
    global films_panel_message_id  # Используем глобальную переменную

    if films_panel_message_id is not None:
        # Обновление сообщения
        bot.edit_message_text(chat_id=chat_id, message_id=films_panel_message_id, text=message_text, reply_markup=reply_markup, parse_mode="HTML")
    else:
        # Отправка нового сообщения
        msg = bot.send_message(chat_id, message_text, reply_markup=reply_markup, parse_mode="HTML")
        films_panel_message_id = msg.message_id

def add_film_button(title, code, description, poster): 
    films.append({'title': title, 'code': code, 'description': description, 'poster': poster})

def find_film_by_code(code):
    for film in films:
        if film['code'] == code:
            return film
    return None

@bot.callback_query_handler(func=lambda call: call.data.startswith("film_"))
def film_callback(call):
    film_code = call.data.split("_")[1]
    film = find_film_by_code(film_code)
    if film is not None:
        bot.answer_callback_query(call.id, f"Фильм: {film['title']}")
    else:
        bot.answer_callback_query(call.id, "Фильм не найден")

@bot.callback_query_handler(func=lambda call: call.data == "add_film_button")
def add_film_callback(call):
    msg = bot.send_message(call.message.chat.id, "Введите название фильма:")
    bot.register_next_step_handler(msg, process_film_title_step)

def process_film_title_step(message):
    title = message.text
    msg = bot.send_message(message.chat.id, "Введите код для поиска фильма:")
    bot.register_next_step_handler(msg, process_film_code_step, title)

def process_film_code_step(message, title):
    code = message.text
    msg = bot.send_message(message.chat.id, "Введите описание фильма:")
    bot.register_next_step_handler(msg, process_film_description_step, title, code)

def process_film_description_step(message, title, code):
    description = message.text
    msg = bot.send_message(message.chat.id, "Пришлите постер фильма:")
    bot.register_next_step_handler(msg, process_film_poster_step, title, code, description)

def process_film_poster_step(message, title, code, description):
    poster_url = "https://example.com/poster.jpg"
    add_film_button(title, code, description, poster_url)
    bot.send_message(message.chat.id, "Фильм успешно добавлен!")

bot.polling()
 

Python_newbie

Новичок
12
6
Переписал немного код, проблема была в том что ты использовал message.from_user.id и message.chat.id, наверно предполагая что это один и тот-же id. Так-же немного переписал админ панель, что-бы при нажатии на клавишу не отправлялось новое сообщение с настройками, а изменялось старое сообщнее.

Python:
import telebot
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton

bot = telebot.TeleBot('6085288264:AAE3pTGI_y2g3EHG4tEBGaICyaw27sC0hl0')


films = []
films_panel_message_id = None  # Идентификатор сообщения с админ панелью "Управление фильмами"


def get_admin_panel_keyboard() -> InlineKeyboardMarkup:
    keyboard = InlineKeyboardMarkup(row_width=1)
    buttons = [
        InlineKeyboardButton("Управление рекламой", callback_data="advertising"),
        InlineKeyboardButton("Управление фильмами", callback_data="films")
    ]
    keyboard.add(*buttons)
    return keyboard

def get_advertising_keyboard() -> InlineKeyboardMarkup:
    keyboard = InlineKeyboardMarkup(row_width=1)
    buttons = [
        InlineKeyboardButton("Добавить рекламу", callback_data="add_film_button"),
        InlineKeyboardButton("« Назад", callback_data="back")
    ]
    keyboard.add(*buttons)
    return keyboard


def get_films_keyboard() -> InlineKeyboardMarkup:
    keyboard = InlineKeyboardMarkup(row_width=2)
   
    # Ряд с кнопкой "Добавить фильм"
    add_film_button_row = [InlineKeyboardButton("Добавить канал", callback_data="add_channel_button")]
    keyboard.add(*add_film_button_row)

    # Ряд с кнопкой "« Назад"
    back_button_row = [InlineKeyboardButton("« Назад", callback_data="back")]
    keyboard.add(*back_button_row)

    # Добавление кнопок фильмов
    for film in films:
        keyboard.add(InlineKeyboardButton(film['title'], callback_data=f"film_{film['code']}"))

    return keyboard

# Команда /start
@bot.message_handler(commands=['start'])
def start(message):
    bot.send_message(message.chat.id, "Отправьте мне код из видео, и я скажу вам, что это за фильм.")

# Команда /admin
@bot.message_handler(commands=['admin'])
def admin_panel(message: telebot.types.Message):
    if message.chat.id not in [5194125239, 635457750]:
        bot.send_message(message.chat.id, text="У вас нет доступа для админ панели.")
        return

    keyboard = get_admin_panel_keyboard()

    bot.send_message(message.chat.id, "Админ панель:", reply_markup=keyboard)


@bot.callback_query_handler(func=lambda call: True)
def admin_panel_callback(call):
    if call.data == "advertising":
        keyboard = get_advertising_keyboard()
        bot.edit_message_text("Управление рекламой:", call.message.chat.id, call.message.message_id, reply_markup=keyboard)
    elif call.data == "films":
        keyboard = get_films_keyboard()
        bot.edit_message_text("Управление фильмами:", call.message.chat.id, call.message.message_id, reply_markup=keyboard)
    elif call.data == "back":
        if call.message.chat.id not in [5194125239, 635457750]:
            bot.send_message(call.message.chat.id, text="У вас нет доступа для админ панели.")
            return
        keyboard = get_admin_panel_keyboard()
        bot.edit_message_text("Админ панель:", call.message.chat.id, call.message.message_id, reply_markup=keyboard)
        bot.answer_callback_query(call.id, text="Вы вернулись к выбору админ панели.")

    bot.answer_callback_query(call.id)


# def advertising_panel(message):
#     keyboard = InlineKeyboardMarkup(row_width=1)
#     buttons = [
#         InlineKeyboardButton("Добавить рекламу", callback_data="add_film_button"),
#         InlineKeyboardButton("« Назад", callback_data="back")
#     ]
#     keyboard.add(*buttons)

#     send_admin_message(message.chat.id, "Управление рекламой:", reply_markup=keyboard)

# def films_panel(message):
#     keyboard = InlineKeyboardMarkup(row_width=2)
   
#     # Ряд с кнопкой "Добавить фильм"
#     add_film_button_row = [InlineKeyboardButton("Добавить канал", callback_data="add_channel_button")]
#     keyboard.add(*add_film_button_row)

#     # Ряд с кнопкой "« Назад"
#     back_button_row = [InlineKeyboardButton("« Назад", callback_data="back")]
#     keyboard.add(*back_button_row)

#     # Добавление кнопок фильмов
#     for film in films:
#         keyboard.add(InlineKeyboardButton(film['title'], callback_data=f"film_{film['code']}"))

#     send_admin_message(message.chat.id, "Управление фильмами:", reply_markup=keyboard)

# Отправка сообщения в админ панель
def send_admin_message(chat_id, message_text, reply_markup=None):
    global films_panel_message_id  # Используем глобальную переменную

    if films_panel_message_id is not None:
        # Обновление сообщения
        bot.edit_message_text(chat_id=chat_id, message_id=films_panel_message_id, text=message_text, reply_markup=reply_markup, parse_mode="HTML")
    else:
        # Отправка нового сообщения
        msg = bot.send_message(chat_id, message_text, reply_markup=reply_markup, parse_mode="HTML")
        films_panel_message_id = msg.message_id

def add_film_button(title, code, description, poster):
    films.append({'title': title, 'code': code, 'description': description, 'poster': poster})

def find_film_by_code(code):
    for film in films:
        if film['code'] == code:
            return film
    return None

@bot.callback_query_handler(func=lambda call: call.data.startswith("film_"))
def film_callback(call):
    film_code = call.data.split("_")[1]
    film = find_film_by_code(film_code)
    if film is not None:
        bot.answer_callback_query(call.id, f"Фильм: {film['title']}")
    else:
        bot.answer_callback_query(call.id, "Фильм не найден")

@bot.callback_query_handler(func=lambda call: call.data == "add_film_button")
def add_film_callback(call):
    msg = bot.send_message(call.message.chat.id, "Введите название фильма:")
    bot.register_next_step_handler(msg, process_film_title_step)

def process_film_title_step(message):
    title = message.text
    msg = bot.send_message(message.chat.id, "Введите код для поиска фильма:")
    bot.register_next_step_handler(msg, process_film_code_step, title)

def process_film_code_step(message, title):
    code = message.text
    msg = bot.send_message(message.chat.id, "Введите описание фильма:")
    bot.register_next_step_handler(msg, process_film_description_step, title, code)

def process_film_description_step(message, title, code):
    description = message.text
    msg = bot.send_message(message.chat.id, "Пришлите постер фильма:")
    bot.register_next_step_handler(msg, process_film_poster_step, title, code, description)

def process_film_poster_step(message, title, code, description):
    poster_url = "https://example.com/poster.jpg"
    add_film_button(title, code, description, poster_url)
    bot.send_message(message.chat.id, "Фильм успешно добавлен!")

bot.polling()
 
  • Нравится
Реакции: By.Egorka

floppov

Участник
Автор темы
85
18
Переписал немного код, проблема была в том что ты использовал message.from_user.id и message.chat.id, наверно предполагая что это один и тот-же id. Так-же немного переписал админ панель, что-бы при нажатии на клавишу не отправлялось новое сообщение с настройками, а изменялось старое сообщнее.

Python:
import telebot
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton

bot = telebot.TeleBot('6085288264:AAE3pTGI_y2g3EHG4tEBGaICyaw27sC0hl0')


films = []
films_panel_message_id = None  # Идентификатор сообщения с админ панелью "Управление фильмами"


def get_admin_panel_keyboard() -> InlineKeyboardMarkup:
    keyboard = InlineKeyboardMarkup(row_width=1)
    buttons = [
        InlineKeyboardButton("Управление рекламой", callback_data="advertising"),
        InlineKeyboardButton("Управление фильмами", callback_data="films")
    ]
    keyboard.add(*buttons)
    return keyboard

def get_advertising_keyboard() -> InlineKeyboardMarkup:
    keyboard = InlineKeyboardMarkup(row_width=1)
    buttons = [
        InlineKeyboardButton("Добавить рекламу", callback_data="add_film_button"),
        InlineKeyboardButton("« Назад", callback_data="back")
    ]
    keyboard.add(*buttons)
    return keyboard


def get_films_keyboard() -> InlineKeyboardMarkup:
    keyboard = InlineKeyboardMarkup(row_width=2)
  
    # Ряд с кнопкой "Добавить фильм"
    add_film_button_row = [InlineKeyboardButton("Добавить канал", callback_data="add_channel_button")]
    keyboard.add(*add_film_button_row)

    # Ряд с кнопкой "« Назад"
    back_button_row = [InlineKeyboardButton("« Назад", callback_data="back")]
    keyboard.add(*back_button_row)

    # Добавление кнопок фильмов
    for film in films:
        keyboard.add(InlineKeyboardButton(film['title'], callback_data=f"film_{film['code']}"))

    return keyboard

# Команда /start
@bot.message_handler(commands=['start'])
def start(message):
    bot.send_message(message.chat.id, "Отправьте мне код из видео, и я скажу вам, что это за фильм.")

# Команда /admin
@bot.message_handler(commands=['admin'])
def admin_panel(message: telebot.types.Message):
    if message.chat.id not in [5194125239, 635457750]:
        bot.send_message(message.chat.id, text="У вас нет доступа для админ панели.")
        return

    keyboard = get_admin_panel_keyboard()

    bot.send_message(message.chat.id, "Админ панель:", reply_markup=keyboard)


@bot.callback_query_handler(func=lambda call: True)
def admin_panel_callback(call):
    if call.data == "advertising":
        keyboard = get_advertising_keyboard()
        bot.edit_message_text("Управление рекламой:", call.message.chat.id, call.message.message_id, reply_markup=keyboard)
    elif call.data == "films":
        keyboard = get_films_keyboard()
        bot.edit_message_text("Управление фильмами:", call.message.chat.id, call.message.message_id, reply_markup=keyboard)
    elif call.data == "back":
        if call.message.chat.id not in [5194125239, 635457750]:
            bot.send_message(call.message.chat.id, text="У вас нет доступа для админ панели.")
            return
        keyboard = get_admin_panel_keyboard()
        bot.edit_message_text("Админ панель:", call.message.chat.id, call.message.message_id, reply_markup=keyboard)
        bot.answer_callback_query(call.id, text="Вы вернулись к выбору админ панели.")

    bot.answer_callback_query(call.id)


# def advertising_panel(message):
#     keyboard = InlineKeyboardMarkup(row_width=1)
#     buttons = [
#         InlineKeyboardButton("Добавить рекламу", callback_data="add_film_button"),
#         InlineKeyboardButton("« Назад", callback_data="back")
#     ]
#     keyboard.add(*buttons)

#     send_admin_message(message.chat.id, "Управление рекламой:", reply_markup=keyboard)

# def films_panel(message):
#     keyboard = InlineKeyboardMarkup(row_width=2)
  
#     # Ряд с кнопкой "Добавить фильм"
#     add_film_button_row = [InlineKeyboardButton("Добавить канал", callback_data="add_channel_button")]
#     keyboard.add(*add_film_button_row)

#     # Ряд с кнопкой "« Назад"
#     back_button_row = [InlineKeyboardButton("« Назад", callback_data="back")]
#     keyboard.add(*back_button_row)

#     # Добавление кнопок фильмов
#     for film in films:
#         keyboard.add(InlineKeyboardButton(film['title'], callback_data=f"film_{film['code']}"))

#     send_admin_message(message.chat.id, "Управление фильмами:", reply_markup=keyboard)

# Отправка сообщения в админ панель
def send_admin_message(chat_id, message_text, reply_markup=None):
    global films_panel_message_id  # Используем глобальную переменную

    if films_panel_message_id is not None:
        # Обновление сообщения
        bot.edit_message_text(chat_id=chat_id, message_id=films_panel_message_id, text=message_text, reply_markup=reply_markup, parse_mode="HTML")
    else:
        # Отправка нового сообщения
        msg = bot.send_message(chat_id, message_text, reply_markup=reply_markup, parse_mode="HTML")
        films_panel_message_id = msg.message_id

def add_film_button(title, code, description, poster):
    films.append({'title': title, 'code': code, 'description': description, 'poster': poster})

def find_film_by_code(code):
    for film in films:
        if film['code'] == code:
            return film
    return None

@bot.callback_query_handler(func=lambda call: call.data.startswith("film_"))
def film_callback(call):
    film_code = call.data.split("_")[1]
    film = find_film_by_code(film_code)
    if film is not None:
        bot.answer_callback_query(call.id, f"Фильм: {film['title']}")
    else:
        bot.answer_callback_query(call.id, "Фильм не найден")

@bot.callback_query_handler(func=lambda call: call.data == "add_film_button")
def add_film_callback(call):
    msg = bot.send_message(call.message.chat.id, "Введите название фильма:")
    bot.register_next_step_handler(msg, process_film_title_step)

def process_film_title_step(message):
    title = message.text
    msg = bot.send_message(message.chat.id, "Введите код для поиска фильма:")
    bot.register_next_step_handler(msg, process_film_code_step, title)

def process_film_code_step(message, title):
    code = message.text
    msg = bot.send_message(message.chat.id, "Введите описание фильма:")
    bot.register_next_step_handler(msg, process_film_description_step, title, code)

def process_film_description_step(message, title, code):
    description = message.text
    msg = bot.send_message(message.chat.id, "Пришлите постер фильма:")
    bot.register_next_step_handler(msg, process_film_poster_step, title, code, description)

def process_film_poster_step(message, title, code, description):
    poster_url = "https://example.com/poster.jpg"
    add_film_button(title, code, description, poster_url)
    bot.send_message(message.chat.id, "Фильм успешно добавлен!")

bot.polling()
Пока ответил, я уже почти дописал. Правда все равно осталась одна ошибка. Не поможешь?
 

Python_newbie

Новичок
12
6
Переписал немного код, проблема была в том что ты использовал message.from_user.id и message.chat.id, наверно предполагая что это один и тот-же id. Так-же немного переписал админ панель, что-бы при нажатии на клавишу не отправлялось новое сообщение с настройками, а изменялось старое сообщнее.

Python:
import telebot
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton

bot = telebot.TeleBot('6085288264:AAE3pTGI_y2g3EHG4tEBGaICyaw27sC0hl0')


films = []
films_panel_message_id = None  # Идентификатор сообщения с админ панелью "Управление фильмами"


def get_admin_panel_keyboard() -> InlineKeyboardMarkup:
    keyboard = InlineKeyboardMarkup(row_width=1)
    buttons = [
        InlineKeyboardButton("Управление рекламой", callback_data="advertising"),
        InlineKeyboardButton("Управление фильмами", callback_data="films")
    ]
    keyboard.add(*buttons)
    return keyboard

def get_advertising_keyboard() -> InlineKeyboardMarkup:
    keyboard = InlineKeyboardMarkup(row_width=1)
    buttons = [
        InlineKeyboardButton("Добавить рекламу", callback_data="add_film_button"),
        InlineKeyboardButton("« Назад", callback_data="back")
    ]
    keyboard.add(*buttons)
    return keyboard


def get_films_keyboard() -> InlineKeyboardMarkup:
    keyboard = InlineKeyboardMarkup(row_width=2)
  
    # Ряд с кнопкой "Добавить фильм"
    add_film_button_row = [InlineKeyboardButton("Добавить канал", callback_data="add_channel_button")]
    keyboard.add(*add_film_button_row)

    # Ряд с кнопкой "« Назад"
    back_button_row = [InlineKeyboardButton("« Назад", callback_data="back")]
    keyboard.add(*back_button_row)

    # Добавление кнопок фильмов
    for film in films:
        keyboard.add(InlineKeyboardButton(film['title'], callback_data=f"film_{film['code']}"))

    return keyboard

# Команда /start
@bot.message_handler(commands=['start'])
def start(message):
    bot.send_message(message.chat.id, "Отправьте мне код из видео, и я скажу вам, что это за фильм.")

# Команда /admin
@bot.message_handler(commands=['admin'])
def admin_panel(message: telebot.types.Message):
    if message.chat.id not in [5194125239, 635457750]:
        bot.send_message(message.chat.id, text="У вас нет доступа для админ панели.")
        return

    keyboard = get_admin_panel_keyboard()

    bot.send_message(message.chat.id, "Админ панель:", reply_markup=keyboard)


@bot.callback_query_handler(func=lambda call: True)
def admin_panel_callback(call):
    if call.data == "advertising":
        keyboard = get_advertising_keyboard()
        bot.edit_message_text("Управление рекламой:", call.message.chat.id, call.message.message_id, reply_markup=keyboard)
    elif call.data == "films":
        keyboard = get_films_keyboard()
        bot.edit_message_text("Управление фильмами:", call.message.chat.id, call.message.message_id, reply_markup=keyboard)
    elif call.data == "back":
        if call.message.chat.id not in [5194125239, 635457750]:
            bot.send_message(call.message.chat.id, text="У вас нет доступа для админ панели.")
            return
        keyboard = get_admin_panel_keyboard()
        bot.edit_message_text("Админ панель:", call.message.chat.id, call.message.message_id, reply_markup=keyboard)
        bot.answer_callback_query(call.id, text="Вы вернулись к выбору админ панели.")

    bot.answer_callback_query(call.id)


# def advertising_panel(message):
#     keyboard = InlineKeyboardMarkup(row_width=1)
#     buttons = [
#         InlineKeyboardButton("Добавить рекламу", callback_data="add_film_button"),
#         InlineKeyboardButton("« Назад", callback_data="back")
#     ]
#     keyboard.add(*buttons)

#     send_admin_message(message.chat.id, "Управление рекламой:", reply_markup=keyboard)

# def films_panel(message):
#     keyboard = InlineKeyboardMarkup(row_width=2)
  
#     # Ряд с кнопкой "Добавить фильм"
#     add_film_button_row = [InlineKeyboardButton("Добавить канал", callback_data="add_channel_button")]
#     keyboard.add(*add_film_button_row)

#     # Ряд с кнопкой "« Назад"
#     back_button_row = [InlineKeyboardButton("« Назад", callback_data="back")]
#     keyboard.add(*back_button_row)

#     # Добавление кнопок фильмов
#     for film in films:
#         keyboard.add(InlineKeyboardButton(film['title'], callback_data=f"film_{film['code']}"))

#     send_admin_message(message.chat.id, "Управление фильмами:", reply_markup=keyboard)

# Отправка сообщения в админ панель
def send_admin_message(chat_id, message_text, reply_markup=None):
    global films_panel_message_id  # Используем глобальную переменную

    if films_panel_message_id is not None:
        # Обновление сообщения
        bot.edit_message_text(chat_id=chat_id, message_id=films_panel_message_id, text=message_text, reply_markup=reply_markup, parse_mode="HTML")
    else:
        # Отправка нового сообщения
        msg = bot.send_message(chat_id, message_text, reply_markup=reply_markup, parse_mode="HTML")
        films_panel_message_id = msg.message_id

def add_film_button(title, code, description, poster):
    films.append({'title': title, 'code': code, 'description': description, 'poster': poster})

def find_film_by_code(code):
    for film in films:
        if film['code'] == code:
            return film
    return None

@bot.callback_query_handler(func=lambda call: call.data.startswith("film_"))
def film_callback(call):
    film_code = call.data.split("_")[1]
    film = find_film_by_code(film_code)
    if film is not None:
        bot.answer_callback_query(call.id, f"Фильм: {film['title']}")
    else:
        bot.answer_callback_query(call.id, "Фильм не найден")

@bot.callback_query_handler(func=lambda call: call.data == "add_film_button")
def add_film_callback(call):
    msg = bot.send_message(call.message.chat.id, "Введите название фильма:")
    bot.register_next_step_handler(msg, process_film_title_step)

def process_film_title_step(message):
    title = message.text
    msg = bot.send_message(message.chat.id, "Введите код для поиска фильма:")
    bot.register_next_step_handler(msg, process_film_code_step, title)

def process_film_code_step(message, title):
    code = message.text
    msg = bot.send_message(message.chat.id, "Введите описание фильма:")
    bot.register_next_step_handler(msg, process_film_description_step, title, code)

def process_film_description_step(message, title, code):
    description = message.text
    msg = bot.send_message(message.chat.id, "Пришлите постер фильма:")
    bot.register_next_step_handler(msg, process_film_poster_step, title, code, description)

def process_film_poster_step(message, title, code, description):
    poster_url = "https://example.com/poster.jpg"
    add_film_button(title, code, description, poster_url)
    bot.send_message(message.chat.id, "Фильм успешно добавлен!")

bot.polling()
Пиши, помогу