Задать вопрос
@eeeeeeeeee

Как сделать так, чтобы когда участник возвращался на главную страницу, ему писало не first_name чат бота, а first_name пользователя?

import telebot
from telebot import types

bot = telebot.TeleBot('')

SUPPORT_CHAT_ID = -4589411721
user_support_map = {}

@bot.message_handler(commands=["start"])
def main(message):
    markup_one = types.InlineKeyboardMarkup()
    btn_one = types.InlineKeyboardButton("‍Зв'язок з службою підтримки", callback_data='new_site')
    markup_one.row(btn_one)
    btn = types.InlineKeyboardButton("Відновити пароль до акаунта", url='https://www.youtube.com/')
    markup_one.row(btn)
    btn_two = types.InlineKeyboardButton("Сайт", url='https://www.youtube.com/')
    btn_three = types.InlineKeyboardButton("Форум", url='https://www.youtube.com/')
    btn_four = types.InlineKeyboardButton("Магазин", url='https://www.youtube.com/')
    markup_one.row(btn_two, btn_three, btn_four)
    file = open('image/5926747860378960618_120.jpg', 'rb')
    bot.send_photo(message.chat.id, file,
                   caption=f'Вітаю, {message.from_user.first_name}!\n\n Я — твій віртуальний помічник у світі UKRAINE '
                           f'GTA.\n\n Для початку, обери бажану дію:', reply_markup=markup_one)


@bot.callback_query_handler(func=lambda callback: True)
def callback_message(callback):
    if callback.data == 'new_site':
        bot.delete_message(callback.message.chat.id, callback.message.message_id)
        markup_one = types.InlineKeyboardMarkup()
        btn_one = types.InlineKeyboardButton("Підключити оператора", callback_data='contact_support')
        markup_one.row(btn_one)
        btn_two = types.InlineKeyboardButton("◀️Назад", callback_data='go_back')
        markup_one.row(btn_two)
        file = open('image/5926747860378960618_120.jpg', 'rb')
        bot.send_photo(callback.message.chat.id, file,
                       caption=f"Вітаю, {callback.from_user.first_name}!\n\n Якщо у вас виникли питання або проблема яка пов'язана з нашим "
                               f"проектом, ви завжди можете звернутись до нашої служби підтримки.\n\nГрафік роботи:\nз "
                               f"12:00 до 23:00\n\nДля зв'язку з агентом підтримки натисніть кнопку:\n'Підключити "
                               f"оператора'.", reply_markup=markup_one)
    elif callback.data == 'contact_support':
        bot.send_message(callback.message.chat.id, "Ви підключені до оператора. Напишіть ваше запитання.")
        user_support_map[callback.message.chat.id] = (callback.from_user.username, None)
        bot.send_message(SUPPORT_CHAT_ID, f"Користувач @{callback.from_user.username} подав запит до техпідтримки.")
    elif callback.data == 'go_back':
        bot.delete_message(callback.message.chat.id, callback.message.message_id)
        main(callback.message)


@bot.message_handler(func=lambda message: message.chat.id in user_support_map)
def forward_user_message(message):
    sent_message = bot.send_message(SUPPORT_CHAT_ID, f"Запитання  від @{message.from_user.username}:\n{message.text}")
    user_support_map[message.chat.id] = (message.from_user.username, sent_message.message_id)


@bot.message_handler(func=lambda message: message.chat.id == SUPPORT_CHAT_ID and message.reply_to_message)
def handle_support_response(message):
    original_message_id = message.reply_to_message.message_id
    user_chat_id = None

    for chat_id, (username, msg_id) in user_support_map.items():
        if msg_id == original_message_id:
            user_chat_id = chat_id
            break

    if user_chat_id:
        if message.text.lower() == "/end":
            del user_support_map[user_chat_id]
            main(bot.send_message(user_chat_id, "Дякуємо за звернення до тех.підтримки!"))
        else:
            bot.send_message.original_user_message(user_chat_id, f"{message.text}")
    else:
        bot.send_message(message.chat.id, "Помилка: не вдалося знайти користувача.")


bot.polling(non_stop=True)
  • Вопрос задан
  • 54 просмотра
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@GreenAleex
Попробуй должно помочь!

import telebot
from telebot import types

bot = telebot.TeleBot('твой токен')

SUPPORT_CHAT_ID = -4589411721
user_support_map = {}

@bot.message_handler(commands=["start"])
def main(message):
    markup_one = types.InlineKeyboardMarkup()
    btn_one = types.InlineKeyboardButton("‍Зв'язок з службою підтримки", callback_data='new_site')
    markup_one.row(btn_one)
    btn = types.InlineKeyboardButton("Відновити пароль до акаунта", url='https://www.youtube.com/')
    markup_one.row(btn)
    btn_two = types.InlineKeyboardButton("Сайт", url='https://www.youtube.com/')
    btn_three = types.InlineKeyboardButton("Форум", url='https://www.youtube.com/')
    btn_four = types.InlineKeyboardButton("Магазин", url='https://www.youtube.com/')
    markup_one.row(btn_two, btn_three, btn_four)
    file = open('image/5926747860378960618_120.jpg', 'rb')
    bot.send_photo(message.chat.id, file,
                   caption=f'Вітаю, {message.from_user.first_name}!\n\n Я — твій віртуальний помічник у світі UKRAINE '
                           f'GTA.\n\n Для початку, обери бажану дію:', reply_markup=markup_one)


@bot.callback_query_handler(func=lambda callback: True)
def callback_message(callback):
    if callback.data == 'new_site':
        bot.delete_message(callback.message.chat.id, callback.message.message_id)
        markup_one = types.InlineKeyboardMarkup()
        btn_one = types.InlineKeyboardButton("Підключити оператора", callback_data='contact_support')
        markup_one.row(btn_one)
        btn_two = types.InlineKeyboardButton("◀️Назад", callback_data='go_back')
        markup_one.row(btn_two)
        file = open('image/5926747860378960618_120.jpg', 'rb')
        user_first_name = callback.from_user.first_name if callback.from_user.first_name else "Користувач"
        bot.send_photo(callback.message.chat.id, file,
                       caption=f"Вітаю, {user_first_name}!\n\n Якщо у вас виникли питання або проблема яка пов'язана з нашим "
                               f"проектом, ви завжди можете звернутись до нашої служби підтримки.\n\nГрафік роботи:\nз "
                               f"12:00 до 23:00\n\nДля зв'язку з агентом підтримки натисніть кнопку:\n'Підключити "
                               f"оператора'.", reply_markup=markup_one)
    elif callback.data == 'contact_support':
        bot.send_message(callback.message.chat.id, "Ви підключені до оператора. Напишіть ваше запитання.")
        user_support_map[callback.message.chat.id] = (callback.from_user.username, None)
        bot.send_message(SUPPORT_CHAT_ID, f"Користувач @{callback.from_user.username} подав запит до техпідтримки.")
    elif callback.data == 'go_back':
        bot.delete_message(callback.message.chat.id, callback.message.message_id)
        main(callback.message)


@bot.message_handler(func=lambda message: message.chat.id in user_support_map)
def forward_user_message(message):
    sent_message = bot.send_message(SUPPORT_CHAT_ID, f"Запитання  від @{message.from_user.username}:\n{message.text}")
    user_support_map[message.chat.id] = (message.from_user.username, sent_message.message_id)


@bot.message_handler(func=lambda message: message.chat.id == SUPPORT_CHAT_ID and message.reply_to_message)
def handle_support_response(message):
    original_message_id = message.reply_to_message.message_id
    user_chat_id = None

    for chat_id, (username, msg_id) in user_support_map.items():
        if msg_id == original_message_id:
            user_chat_id = chat_id
            break

    if user_chat_id:
        if message.text.lower() == "/end":
            del user_support_map[user_chat_id]
            main(bot.send_message(user_chat_id, "Дякуємо за звернення до тех.підтримки!"))
        else:
            bot.send_message(user_chat_id, f"{message.text}")
    else:
        bot.send_message(message.chat.id, "Помилка: не вдалося знайти користувача.")


bot.polling(non_stop=True)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы