pycharm Telegram Bot不会将对管理员的响应返回给用户

wbrvyc0a  于 2023-03-02  发布在  PyCharm
关注(0)|答案(1)|浏览(126)
from telebot import types
import telebot

token = 'token'
bot = telebot.TeleBot(token)

admin_id = 12345678
user_id = None

@bot.message_handler(commands=['start'])
def start(message):
    if message.chat.id == admin_id:
        bot.send_message(message.chat.id, "Привет, администратор!")
    else:
        m1 = f'Привет, {message.from_user.first_name}. В этом боте можно оплатить участие в викторине. Нажми кнопку, чтобы получить реквизиты.'
        markup = types.InlineKeyboardMarkup()
        markup.add(types.InlineKeyboardButton('Получить реквизиты', callback_data = 'yes'))
        bot.send_message(message.chat.id, m1, reply_markup=markup)

@bot.callback_query_handler(func=lambda call: True)
def callback_query_handler(call):
    chat_id = call.message.chat.id
    m2 = 'Реквизиты для оплаты: 5555 5555 4444 4444. ' \
         'После оплаты прикрепите скриншот оплаты для проверки.'
    if call.data == 'yes':
        bot.send_message(chat_id, m2)

@bot.message_handler(content_types=['text', 'photo', 'audio', 'video', 'document', 'location', 'contact', 'sticker', 'poll'])
def handler_photo(message):
    global user_id
    content_type = message.content_type
    chat_id = message.chat.id
    if message.from_user.id != admin_id:
        if content_type == 'photo':
            if content_type == 'photo':
                m3 = 'Спасибо, фотография получена. Нам необходимо немного времени, чтобы проверить оплату'
                bot.send_message(chat_id, m3)
                user_id = message.from_user.id
                photo_file_id = message.photo[-1].file_id
                markup = types.InlineKeyboardMarkup(row_width=2)
                approve_button = types.InlineKeyboardButton('Подтвердить', callback_data='approve')
                reject_button = types.InlineKeyboardButton('Отклонить', callback_data='reject')
                markup.add(approve_button, reject_button)
                bot.send_photo(chat_id=admin_id, photo=photo_file_id, reply_markup=markup)
        else:
            m4 = 'Пожалуйста, прикрепите скриншот оплаты в виде фотографии. Спасибо!'
            bot.send_message(chat_id, m4)

@bot.callback_query_handler(func=lambda call: True)
def handle_callback_query(call):
    global user_id
    if call.data == 'approve':
        m5 = 'Ваша оплата принята! Ссылка на канал: https://t.me/'
        bot.send_message(chat_id=user_id, text=m5)
    elif call.data == 'reject':
        m6 = 'Оплата не была подтверджена. Отправьте квитанцию повторно или свяжитесь с '
        bot.send_message(chat_id=user_id, text=m6)
    bot.answer_callback_query(callback_query_id=call.id)

bot.polling(none_stop=True, interval=0)`

我期望管理员点击其中一个按钮后,用户会收到响应,一切正常,但直到管理员点击按钮的那一刻,管理员点击按钮后什么都没有发生。

h43kikqp

h43kikqp1#

我删除了最后一个处理程序,并将其中的代码放入了第一个处理程序。这很有帮助!

@bot.callback_query_handler(func=lambda call: True)
def handle_callback_query(call):
    global user_id
    if call.from_user.id == admin_id:  # перевірка, чи це адміністратор
        if call.data == 'approve':
            m5 = 'Ваша оплата принята! Ссылка на канал: https://t.me/'
            bot.send_message(chat_id=user_id, text=m5)
        elif call.data == 'reject':
            m6 = 'Оплата не была подтверджена. Отправьте квитанцию повторно или свяжитесь с '
            bot.send_message(chat_id=user_id, text=m6)
        bot.answer_callback_query(callback_query_id=call.id)
    elif call.data == 'yes':
        chat_id = call.message.chat.id
        m2 = 'Реквизиты для оплаты: 5555 5555 4444 4444. ' \
        'После оплаты прикрепите скриншот оплаты для проверки.'
        bot.send_message(chat_id, m2)

相关问题