Aiogram Bot проблема с клавиатурными кнопками
всем привет, у меня проблема, я хотел сделать так, чтобы клавитурные кнопки исчезали, когда пользователь нажимал на клавиатурную кнопку службу поддержки, но не Inline, а прям клавитурные кнопки, помогите пожалуйста
P.s не обращайте внимания на язык P.ss еще чтобы они потом возвращались(кнопки)
import asyncio
from aiogram import Bot, Dispatcher, types
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton, InlineKeyboardMarkup, InlineKeyboardButton, ReplyKeyboardRemove
from aiogram.filters import Command
import logging
from aiogram import Router, F, types
import time
from datetime import datetime, timedelta
from middlewares import ThrottlingMiddleware
from aiogram.types import Message
router = Router()
logging.basicConfig(level=logging.INFO)
TOKEN = 'Your_token'
GROUP_CHAT_ID = '?'
bot = Bot(token=TOKEN)
dp = Dispatcher()
dp.include_router(router)
dp.update.middleware(ThrottlingMiddleware(rate_limit=5))
# Словарь для хранения времени последней отправки фото пользователем
last_photo_time = {}
# Словари для отслеживания кулдаунов
cooldown_course_selection = {}
cooldown_payment_photo = {}
COOLDOWN_TIME = timedelta(hours=1) # Кулдаун на 1 час
# Словарь для отслеживания кулдауна сообщений пользователей
message_cooldowns = {} # словарь для отслеживания времени последнего сообщения каждого пользователя
MESSAGE_COOLDOWN = timedelta(minutes=5) # Кулдаун для отправки сообщений на 5 минут
# Таймеры ожидания службы підтримки
support_timers = {}
last_bot_message = {}
pending_requests = {}
# Клавіатура для стартової відповіді
start_markup = ReplyKeyboardMarkup(
keyboard=[
[KeyboardButton(text='? Служба підтримки ?')],
[KeyboardButton(text='? Оплатити курс ?')],
[KeyboardButton(text='ℹ️ Що включає курс? ℹ️')]
],
resize_keyboard=True
)
# Обработчик нажатия на кнопку "Служба підтримки"
@router.message(F.text == '? Служба підтримки ?')
async def support_service(message: types.Message):
if message.chat.type != 'private':
logging.info("Сообщение пришло не из личного чата, игнорируем.")
return
logging.info("Запрос на службу поддержки получен.")
try:
sent_message = await message.answer(
"✍️ Напишіть своє питання цьому боту, щоб отримати відповідь нашої служби підтримки."
"\nЩоб завершити розмову, натисніть 'Закінчити розмову ❌'.\n"
"Ваше повідомлення буде надіслано в службу підтримки. Якщо вам не дадуть відповідь протягом 15 хвилин, "
"ви зможете написати нашому оператору:",
reply_markup=InlineKeyboardMarkup(
inline_keyboard=[
[InlineKeyboardButton(text="Написати оператору ❌", callback_data="write_operator_disabled")],
[InlineKeyboardButton(text="Закінчити розмову ❌", callback_data="end_support")]
]
)
)
last_bot_message[message.from_user.id] = sent_message.message_id
support_timers[message.from_user.id] = datetime.now() + timedelta(minutes=15)
asyncio.create_task(wait_and_enable_operator(message.from_user.id))
except Exception as e:
logging.error(f"Помилка при надсиланні повідомлення в службу підтримки: {e}")
await message.answer("Сталася помилка при надсиланні повідомлення в службу підтримки.")
async def wait_and_enable_operator(user_id):
await asyncio.sleep(15 * 60)
if user_id in support_timers and datetime.now() >= support_timers[user_id]:
markup = InlineKeyboardMarkup(
inline_keyboard=[[InlineKeyboardButton(text="Написати оператору ✅", url="https://t.me/@znomaximum")]]
)
await bot.send_message(user_id, "Тепер ви можете написати оператору.", reply_markup=markup)
del support_timers[user_id]
@router.message(F.text == '? Служба підтримки ?')
async def support_service(message: types.Message):
# Удаляем текущие кнопки и показываем только одну кнопку "Завершити розмову"
await message.answer(
"✍️ Напишіть своє питання цьому боту, щоб отримати відповідь нашої служби підтримки."
"\nЩоб завершити розмову, натисніть 'Закінчити розмову ❌'.\n"
"Ваше повідомлення буде надіслано в службу підтримки. Якщо вам не дадуть відповідь протягом 15 хвилин, "
"ви зможете написати нашому оператору:",
reply_markup=end_support_markup
)
support_timers[message.from_user.id] = datetime.now()
# Обработчик завершения разговора
@router.message(F.text == 'Завершити розмову❌')
async def end_support_session(message: types.Message):
user_id = message.from_user.id
if user_id in support_timers:
del support_timers[user_id]
await message.answer(
"Розмову завершено. Якщо у вас є додаткові запитання, звертайтеся знову.",
reply_markup=ReplyKeyboardRemove()
)
else:
await message.answer(
"У вас немає активного звернення до служби підтримки.",
reply_markup=ReplyKeyboardRemove()
)
# Обработчик вопросов пользователя, отправка в группу поддержки
def escape_markdown(text: str) -> str:
escape_chars = r"_*[]()~`>#+-=|{}.!"
return ''.join(f'\\{char}' if char in escape_chars else char for char in text)