Как в CallbackData передать айди пользователя?

У меня есть код, который даёт мут новым пользователям, и что бы снять его нужно написать команду "Принять пользователя 123", я хотел бы заменить это на inline кнопку, что бы при нажатии например кнопки "Принять", с пользователя снимался мут, если нажать "Отказать", то банить пользователя, но не знаю как передать айди нового участника в CallbackData, как это можно сделать? Код:

@dp.message_handler(content_types=["new_chat_members"])
async def handler_new_member(message):
    safe_text = md.quote_html(message.chat.title)
    await bot.restrict_chat_member(message.chat.id, message.new_chat_members[0].id, can_send_messages=False)
    await message.reply(f'Уважаемый {message.new_chat_members[0].full_name}, Вы вступили в беседу "{safe_text}", \
вам выдан мут, в целях защиты беседы. Подождите, пожалуйста, пока прибудет администратор...\n⏰ | Срок наказания: Навсегда\n⭐\
Немного информации об участнике:\n? Никнейм: ' + str(message.new_chat_members[0].full_name) + '\n⏰ Дата входа: '\
+ str(message.date) + '\nПриятно провести время!')

            
    admins = await bot.get_chat_administrators(message.chat.id)
    await bot.send_message(message.chat.id, f'?‍? В беседу вступил новый участник {message.new_chat_members[0].full_name}\nКоманда для принятия:\n"<code>Принять пользователя {message.new_chat_members[0].id}</code>"\n' + "".join([f'<a href="tg://user?id={admin.user.id}">ᅠ</a>' for admin in admins]), parse_mode='html')

Ответы (1 шт):

Автор решения: Дима Абдукаримов
@dp.message_handler(content_types=['new_chat_members'])
def capcha_handler(message):
    db = sqlite3.connect("server.db")
    cur = db.cursor()
    cur.execute("CREATE TABLE IF NOT EXISTS new_members(ID TEXT)")
    db.commit()
    cur.execute("INSERT INTO new_members VALUES (?)", (message.new_chat_members[0].id,))
    db.commit()
    
    dp.restrict_chat_member(message.chat.id, message.new_chat_members[0].id, can_send_messages=False)
    markup = types.InlineKeyboardMarkup()
    button1 = types.InlineKeyboardButton(text="Кикнуть", callback_data='not_yes')
    button2 = types.InlineKeyboardButton(text="Принять", callback_data='yes')
    if message.new_chat_members[0].id == {айди твоего бота}:
        pass
    else:
        dp.send_message(message.chat.id, f"Уважаемый {message.new_chat_members[0].full_name}, Вы вступили в беседу '{safe_text}', \
    вам выдан мут, в целях защиты беседы. Подождите, пожалуйста, пока прибудет администратор...\n⏰ | Срок наказания: Навсегда\n⭐\
    Немного информации об участнике:\n? Никнейм: ' + str(message.new_chat_members[0].full_name) + '\n⏰ Дата входа: '\
    + str(message.date) + '\nПриятно провести время!", reply_markup=markup)

@dp.callback_query_handler(func=lambda call: True)
def callback_query(call):
    db = sqlite3.connect("server.db")
    cur = db.cursor()
    db.commit()
    ids = ""
    for uid in cur.execute("SELECT ID FROM new_members"):
        ids += f"{uid[0]}"
    admins = dp.get_chat_administrators(call.message.chat.id)
 
    if call.data == 'yes':
        if call.from_user.id in admins:
            cur.execute(f"DELETE FROM new_members WHERE ID = {ids}")
            db.commit()
            dp.edit_message_text("Добро пожаловать!", call.message.chat.id, call.message.message_id)
            dp.restrict_chat_member(call.message.chat.id, int(ids),
                                                can_send_messages=True,
                                                can_send_media_messages=True,
                                                can_add_web_page_previews=True,
                                                can_send_polls=True,
                                                can_send_other_messages=True,
                                                can_invite_users=True)
    elif call.data == 'not_yes':
        if call.from_user.id in admins:
            cur.execute(f"DELETE FROM new_members WHERE ID = {ids}")
            db.commit()
            dp.kick_chat_member(call.message.chat.id, int(ids))
→ Ссылка