import telebot
from telebot import types
from btn import token, text48, text49, text50, text53, text54, text55, text51, cancel_btn, join_dialog_btn
bot = telebot.TeleBot(token)
operators_id = [тут ид]
operator_mode = {}
user_mode = {}
def supportConnect(bot, message):
global user_help_id
user_help_id = message.chat.id
print('user_help_id = message.chat.id', user_help_id)
remove_keyboard = types.ReplyKeyboardRemove()
keyboard = types.InlineKeyboardMarkup()
keyboard.add(cancel_btn)
bot.send_message(message.chat.id, text=text48, reply_markup=remove_keyboard)
bot.send_message(message.chat.id, text=text49, reply_markup=keyboard)
bot.register_next_step_handler(message, lambda msg: supportWait(bot, msg))
def supportWait(bot, message):
for operator_id in operators_id:
keyboard = types.InlineKeyboardMarkup()
keyboard.add(join_dialog_btn)
bot.send_message(operator_id, f"Поступило новое сообщение в службу поддержки.\n\nUser ID: {message.from_user.id}\nUsername: @{message.from_user.username}\n\nВопрос клиента:\n<b>{message.text}</b>", parse_mode="HTML", reply_markup=keyboard)
bot.send_message(message.chat.id, text=text50)
@bot.callback_query_handler(func=lambda call: call.data == 'join_dialog_btn')
def join_dialog(call):
print('def join_dialog(call)')
# Получаем идентификатор оператора и пользователя
global operator
operator = call.message.chat.id
print('operator_id = call.message.chat.id', operator)
global user_help_id
print('global user_help_id', user_help_id)
# Проверяем, наличие и состояние оператора
if operator not in operator_mode:
print('operator_mode', operator_mode)
operator_mode[operator] = "not_in_dialog"
print("дали нот ин")
if operator in operator_mode:
match operator_mode[operator]:
case 'not_in_dialog':
print('if')
# Отправляем сообщение оператору о подключении к диалогу
bot.send_message(operator, text53)
# Отправляем сообщение пользователю о подключении оператора
bot.send_message(user_help_id, text51)
# Устанавливаем состояние оператора как "в диалоге"
print('operator_mode[operator]', operator_mode[operator])
operator_mode[operator] = 'in_dialog'
print('operator_mode', operator_mode)
# Добавляем пользователя в user_mode
print('user_help_id', user_help_id)
user_mode[user_help_id] = 'in_dialog'
print('user_mode', user_mode)
case 'in_dialog':
print('elif')
# Отправляем сообщение оператору о том, что он уже в диалоге
bot.send_message(operator, text54)
elif user_help_id in user_mode:
match user_mode[user_help_id]:
case 'in_dialog':
print('elif2')
# Отправляем сообщение оператору о том, что кто-то уже подключился
bot.send_message(operator, text55)
# Обработчик сообщений от пользователя
@bot.message_handler(func=lambda message: user_mode[user_help_id] and operator_mode[operator] == 'in_dialog')
def dialog_message(message):
if operator is not None:
bot.send_message(operator, message.text)
else:
bot.send_message(user_help_id, "Оператор не подключен.")
if user_help_id is not None:
bot.send_message(user_help_id, message.text)
else:
bot.send_message(operator, "User Help ID не установлен.")