Реализовать функцию Отзывы. Пользователь может оставить свой отзыв в вкладке Отзывы . После того, как он отправил свой отзыв, его отзыв пересылается в частную группу администрации (как и в функции Тех.Поддержка). На пересланном сообщении появляется 2 кнопки. 1.Отклонить, 2.Принять. При принятии отзыва, он сохраняется во вкладке Отзывы и имеет Тег пользователя, который оставил отзыв и доступен всем, кто откроет вкладку отзывы.
У Администратора ([Айди] @Utkaworlddd) под каждым отзывом появляется кнопка удалить, Администратор может удалить отзыв!
При выборе вкладки "Отзывы ", пользователю предоставляется возможность написать свой отзыв. После отправки отзыва, он пересылается в частную группу администрации. На пересланном сообщении в частной группе администрации появляются две кнопки: "Отклонить" и "Принять". Если администрация принимает отзыв, он сохраняется в словаре reviews и отображается в вкладке "Отзывы " с тегом пользователя. У администратора под каждым отзывом в вкладке "Отзывы " появляется кнопка "Удалить", позволяющая удалять отзывы
Код
Функция Отзывы просто не отоброжается, миллиард методов попробовал, но всё тчетно, помогите пожалуйста!
У Администратора ([Айди] @Utkaworlddd) под каждым отзывом появляется кнопка удалить, Администратор может удалить отзыв!
При выборе вкладки "Отзывы ", пользователю предоставляется возможность написать свой отзыв. После отправки отзыва, он пересылается в частную группу администрации. На пересланном сообщении в частной группе администрации появляются две кнопки: "Отклонить" и "Принять". Если администрация принимает отзыв, он сохраняется в словаре reviews и отображается в вкладке "Отзывы " с тегом пользователя. У администратора под каждым отзывом в вкладке "Отзывы " появляется кнопка "Удалить", позволяющая удалять отзывы
Код
Python:
import telebot
from telebot.types import ReplyKeyboardMarkup, KeyboardButton, InlineKeyboardMarkup, InlineKeyboardButton
from telebot import types
TOKEN = '**Токен сам вставлю**'
bot = telebot.TeleBot(TOKEN)
PRIVATE_GROUP_LINK = 'https://t.me/+tluT95-yWYk2ZmNi'
ADMIN_CHAT_ID = '-1001953216898'
ADMIN_USER_ID = 5406293856
users_in_support_mode = set()
forwarded_messages = {}
reviews = {}
review_message_ids = {}
@bot.message_handler(commands=['start'])
def send_welcome(message):
markup = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
btn1 = types.KeyboardButton('Голда 🏆')
btn2 = types.KeyboardButton('Профиль 👤')
btn3 = types.KeyboardButton('Тех.Поддержка 🛠')
btn4 = types.KeyboardButton('Отзывы ✉️')
markup.add(btn1, btn2, btn3, btn4)
bot.send_message(message.chat.id, "Добро пожаловать! Выберите одну из опций:", reply_markup=markup)
@bot.message_handler(func=lambda message: message.text == 'Отзывы ✉️')
def handle_reviews(message):
user_id = message.chat.id
if user_id == ADMIN_USER_ID:
for review, user_tag in reviews.items():
markup = InlineKeyboardMarkup()
delete_btn = InlineKeyboardButton("Удалить", callback_data=f"delete_{review}")
markup.add(delete_btn)
bot.send_message(user_id, f"{user_tag}: {review}", reply_markup=markup)
else:
markup = ReplyKeyboardMarkup(resize_keyboard=True)
stop_button = KeyboardButton("СТОП")
markup.add(stop_button)
bot.send_message(user_id, "Введите ваш отзыв:", reply_markup=markup)
@bot.message_handler(func=lambda message: True)
def echo_all(message):
user_id = message.chat.id
stop_button = types.KeyboardButton("СТОП")
stop_keyboard = types.ReplyKeyboardMarkup().add(stop_button)
if message.text == 'Тех.Поддержка 🛠':
users_in_support_mode.add(user_id)
bot.send_message(user_id, "Введите сообщение, которое хотите передать администратору.", reply_markup=stop_keyboard)
return
if message.text == 'Главное меню':
markup = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
btn1 = types.KeyboardButton('Голда 🏆')
btn2 = types.KeyboardButton('Профиль 👤')
btn3 = types.KeyboardButton('Тех.Поддержка 🛠')
btn4 = types.KeyboardButton('Отзывы ✉️')
markup.add(btn1, btn2, btn3, btn4)
bot.send_message(user_id, "Вы вернулись в главное меню. Выберите одну из опций:", reply_markup=markup)
return
if user_id in users_in_support_mode:
if message.text == 'СТОП':
users_in_support_mode.remove(user_id)
markup = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
btn1 = types.KeyboardButton('Голда 🏆')
btn2 = types.KeyboardButton('Профиль 👤')
btn3 = types.KeyboardButton('Тех.Поддержка 🛠')
btn4 = types.KeyboardButton('Отзывы ✉️')
markup.add(btn1, btn2, btn3, btn4)
bot.send_message(user_id, "Вы вышли из режима поддержки.", reply_markup=markup)
bot.send_message(user_id, "Для возобновления общения, выберите опцию из главного меню.")
return
forwarded_message = bot.forward_message(ADMIN_CHAT_ID, user_id, message.message_id)
forwarded_messages[forwarded_message.message_id] = user_id
bot.send_message(user_id, "Сообщение передано администратору. Спасибо!", reply_markup=stop_keyboard)
return
if message.reply_to_message and message.reply_to_message.message_id in forwarded_messages:
target_user_id = forwarded_messages[message.reply_to_message.message_id]
bot.send_message(target_user_id, message.text)
if message.text.startswith("Отзыв: "):
review = message.text[8:]
reviews[review] = f"@{message.from_user.username}" if message.from_user.username else str(message.from_user.id)
markup = InlineKeyboardMarkup()
accept_btn = InlineKeyboardButton("Принять", callback_data=f"accept_{review}")
decline_btn = InlineKeyboardButton("Отклонить", callback_data=f"decline_{review}")
markup.add(accept_btn, decline_btn)
sent_message = bot.forward_message(PRIVATE_GROUP_LINK, message.chat.id, message.message_id)
bot.edit_message_reply_markup(chat_id=PRIVATE_GROUP_LINK, message_id=sent_message.message_id, reply_markup=markup)
review_message_ids[sent_message.message_id] = review
@bot.callback_query_handler(func=lambda call: True)
def callback_query(call):
if call.data.startswith("accept_"):
review = call.data[8:]
bot.answer_callback_query(call.id, "Отзыв принят!")
bot.edit_message_reply_markup(chat_id=call.message.chat.id, message_id=call.message.message_id)
elif call.data.startswith("decline_"):
review = call.data[8:]
bot.answer_callback_query(call.id, "Отзыв отклонен!")
bot.edit_message_reply_markup(chat_id=call.message.chat.id, message_id=call.message.message_id)
del reviews[review]
elif call.data.startswith("delete_"):
review = call.data[7:]
bot.answer_callback_query(call.id, "Отзыв удален!")
del reviews[review]
bot.polling()
Функция Отзывы просто не отоброжается, миллиард методов попробовал, но всё тчетно, помогите пожалуйста!