有一个小代码,我需要它,以便当按下内联按钮时,机器人不会响应 PM 中的参与者,而是响应对话,如何做到这一点?编码:
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from aiogram.types import ReplyKeyboardRemove, ReplyKeyboardMarkup, KeyboardButton, InlineKeyboardMarkup, InlineKeyboardButton
bot = Bot(token=token)
dp = Dispatcher(bot)
@dp.message_handler(content_types='text')
async def new_message(message: types.Message):
if message.text == 'Бот дуэль':
player_1 = f'<a href="t.me/{message.from_user.username}">{message.from_user.first_name}</a>'
player_2 = f'<a href="t.me/{message.reply_to_message.from_user.username}">{message.reply_to_message.from_user.first_name}</a> '
if message.from_user.id == message.reply_to_message.from_user.id:
await message.reply(f'{player_1}, к сожалению, невозможно предложить играть самому себе...', parse_mode='HTML', disable_web_page_preview=True)
else:
inline_kb_full = InlineKeyboardMarkup(row_width=2)
inline_btn_1 = InlineKeyboardButton('Дуэль да', callback_data='btn1')
inline_btn_2 = InlineKeyboardButton('Дуэль нет', callback_data='btn2')
inline_kb_full.add(inline_btn_1, inline_btn_2)
await message.reply(f'{player_2}, минуточку внимания...\n{player_1} предложил вам дуэль\nВыберите ниже "Дуэль да" или "Дуэль нет", что бы принять вызов или отказаться', parse_mode='HTML', disable_web_page_preview=True, reply_markup=inline_kb_full)@dp.callback_query_handler(lambda c: c.data == 'btn1')
@dp.callback_query_handler(lambda c: c.data == 'btn1')
async def new_message(message: types.Message):
await bot.send_message(message.from_user.id, f'Игрок принял вызов')
if __name__ == '__main__':
executor.start_polling(dp)
像这样