Баг в телеграмме боте на pytelegrambotapi

hifany

Новичок
Пользователь
Авг 21, 2023
7
0
1
Mac OS
python 3.10.6
pytelegrambotapi

Python:
import telebot
import webbrowser

bot = telebot.TeleBot('TOKEN')

user_queries = {}

@bot.message_handler(commands=['contacts'])
def contacts(message):
    webbrowser.open('https://hemophilia.ru')

@bot.message_handler(commands=["start"])
def start(message):
    mess = f'Здравствуйте, <b>{message.from_user.first_name}</b>!'
    bot.send_message(message.chat.id, mess, parse_mode='HTML')

@bot.message_handler(commands=["help"])
def start(message):
    mess = f'Здравствуйте, <b>{message.from_user.first_name}</b>!'
    bot.send_message(message.chat.id, mess, parse_mode='HTML')

@bot.message_handler(commands=['hotline'])
def request_support(message):
    user_id = message.chat.id
    bot.send_message(user_id, "Напишите вашу проблему:")
    user_queries[user_id] = {"original_user_id": user_id, "query": ""}

@bot.message_handler(func=lambda message: message.text and message.chat.id in user_queries)
def user_message(message):
    user_id = message.chat.id
    if user_id in user_queries:
        user_queries[user_id]["query"] += message.text + "\n"
        bot.send_message(user_id, "Благодарим Вас за сообщение. Оператор поможет Вам.")
        notify_support(user_id)
    else:
        bot.send_message(user_id, "Для взаимодействия с ботом используйте команды /start.")

    
def notify_support(user_id):
    support_chat_id = "CHAT ID"  # Replace with the actual support chat ID
    query = user_queries[user_id]["query"]
    bot.send_message(support_chat_id, f"Новое обращение от {user_id}:\n\n{query}")
    bot.send_message(user_id, "Ваше обращение направлено оператору")

# Command to respond to a user's query (for support agents)
@bot.message_handler(commands=['respond'])
def respond(message):
    user_id = message.chat.id
    markup = telebot.types.ForceReply(selective=False)
    bot.send_message(user_id, "Напишите ответ:", reply_markup=markup)
    bot.register_next_step_handler(message, support_response)

# Handler for support agent responses
def support_response(message):
    user_id = message.chat.id
    if user_id in user_queries:
        responding_to = user_id
        user_id = responding_to
        query_user_id = user_id
        user_id = user_queries[query_user_id]["original_user_id"]
        
        bot.send_message(user_id, "Ответ поддержки:\n" + message.text)
        markup = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)
        markup.add(telebot.types.KeyboardButton("/resolve"), telebot.types.KeyboardButton("/escalate"))
        bot.send_message(user_id, "Ваш вопрос решен? Вы можете набрать /resolve или /escalate.", reply_markup=markup)
    else:
        bot.send_message(user_id, "В настоящее время вы не отвечаете на запрос.")



@bot.message_handler(commands=['resolve'])
def resolve(message):
    user_id = message.chat.id
    bot.send_message(user_id, "Ваш вопрос был отмечен как решенный. Если у вас есть дополнительные вопросы, не стесняйтесь их задавать.")

@bot.message_handler(commands=['escalate'])
def escalate(message):
    user_id = message.chat.id
    bot.send_message(user_id, "Ваш вопрос был передан на более высокий уровень поддержки.")



if __name__ == '__main__':
    try:
        print('Start...')
        bot.polling(none_stop=True)
    except KeyboardInterrupt:
        print('Stop')

когда оператор отвечает на вопрос, почему то сообщение не отправляется пользователю, а пишет: В настоящее время вы не отвечаете на запрос.
пытался спрашивать chat gpt, но он не помог, надеюсь вы разберётесь :)

Видео проблемы - https://disk.yandex.ru/i/O6eQwegJTbtjkA
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
419
113
43
responding_to = user_id
user_id = responding_to
Интересно, а что это за шаманство такое?

почему то сообщение не отправляется пользователю, а пишет: В настоящее время вы не отвечаете на запрос.
Значит в функции support_response по условию программа попадает в блок else. Смотрим в дебагере и выясняем что есть user_id и user_queries, подправляем под свои нужды.
 

hifany

Новичок
Пользователь
Авг 21, 2023
7
0
1
Интересно, а что это за шаманство такое?


Значит в функции support_response по условию программа попадает в блок else. Смотрим в дебагере и выясняем что есть user_id и user_queries, подправляем под свои нужды.
этот код писал чат джипити 🤦 чего он только не нашаманил, спасибо снова
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 650
472
83
этот код писал чат джипити 🤦 чего он только не нашаманил, спасибо снова
а может питон поучить?
ботописание без asyncio, как у вас, осваивается недели за две интенсивного чтения
 
  • Мне нравится
Реакции: 4olshoy_blen

Форум IT Специалистов