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)`
我期望管理员点击其中一个按钮后,用户会收到响应,一切正常,但直到管理员点击按钮的那一刻,管理员点击按钮后什么都没有发生。
1条答案
按热度按时间h43kikqp1#
我删除了最后一个处理程序,并将其中的代码放入了第一个处理程序。这很有帮助!