- 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()