You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在aiogram中实现类似PremiumBot的分享个人资料按钮?

在aiogram中实现分享个人资料按钮

这个功能完全可行,对应的是Telegram Bot API里的request_user参数,aiogram已经封装了这个能力,下面是具体实现步骤:

1. 导入依赖类

从aiogram中导入所需的键盘相关类:

from aiogram.types import KeyboardButton, ReplyKeyboardMarkup, ContentType
from aiogram import types, Dispatcher

2. 创建分享资料按钮

使用KeyboardButton的request_user参数定义按钮,其中request_id是自定义标识,用于区分不同的请求按钮:

share_profile_btn = KeyboardButton(
    text="分享我的个人资料",
    request_user={"request_id": 1}
)

3. 组装回复键盘

把按钮添加到回复键盘中,设置自适应大小:

profile_keyboard = ReplyKeyboardMarkup(
    keyboard=[[share_profile_btn]],
    resize_keyboard=True
)

4. 发送带键盘的消息

在命令或消息处理器中,给用户发送带这个键盘的提示消息:

@dp.message_handler(commands=['start'])
async def start_handler(message: types.Message):
    await message.answer("请点击下方按钮分享你的个人资料", reply_markup=profile_keyboard)

5. 处理用户分享的资料

监听USER_SHARED类型的消息,获取用户分享的ID:

@dp.message_handler(content_types=ContentType.USER_SHARED)
async def handle_shared_profile(message: types.Message):
    shared_user_id = message.user_shared.user_id
    trigger_request_id = message.user_shared.request_id
    
    # 可根据request_id判断是哪个按钮触发的请求,再进行后续逻辑处理
    await message.answer(f"你分享的用户ID是:{shared_user_id}")

注意事项

  • aiogram 2.x及以上版本均支持该功能,建议使用最新稳定版
  • 用户点击按钮后会弹出确认窗口,仅在用户确认后,bot才能获取到用户ID,不会泄露其他隐私信息

内容的提问来源于stack exchange,提问作者Ewtizzz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 02:53:10