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

基于aiogram框架,能否识别Telegram Bot消息的发送者身份?

使用aiogram识别消息发送者并实现身份差异化操作

完全可以通过aiogram实现识别消息发送者身份,并根据用户身份执行不同操作,核心是利用框架提供的用户信息对象和权限判断能力。

1. 获取消息发送者的基础信息

aiogram的Message对象中包含from_user属性,该属性存储了发送者的核心身份信息,常用字段包括:

  • message.from_user.id:用户的唯一数字ID(最可靠的身份标识)
  • message.from_user.username:用户的Telegram用户名(可选,可能为空)
  • message.from_user.full_name:用户的昵称/全名

示例代码:

@dp.message(commands=['myinfo'])
async def send_user_info(message: types.Message):
    user = message.from_user
    info = f"你的ID:{user.id}\n用户名:{user.username or '未设置'}\n昵称:{user.full_name}"
    await message.answer(info)

2. 基于用户ID的权限控制

可以预先维护一个允许执行特定操作的用户ID列表,通过判断发送者ID是否在列表中,实现差异化操作。

示例代码:

# 预设有权限的用户ID列表
AUTHORIZED_USERS = [123456789, 987654321]

@dp.message(commands=['vip_action'])
async def vip_only_action(message: types.Message):
    if message.from_user.id in AUTHORIZED_USERS:
        await message.answer("执行VIP专属操作...")
        # 此处编写VIP操作的具体逻辑
    else:
        await message.answer("你没有权限执行此操作")

3. 群组中识别管理员身份

在群组场景中,可以通过bot.get_chat_member方法获取用户在群组中的身份,判断其是否为管理员或群主,进而执行对应操作。

示例代码:

@dp.message(commands=['admin_action'])
async def admin_only_action(message: types.Message):
    chat_member = await bot.get_chat_member(message.chat.id, message.from_user.id)
    # 判断是否为群主或管理员
    if chat_member.status in ['creator', 'administrator']:
        await message.answer("执行管理员操作...")
        # 此处编写管理员操作的具体逻辑
    else:
        await message.answer("仅管理员可执行此命令")

核心逻辑总结

通过message.from_user获取用户唯一标识,结合预设权限列表或群组身份校验,即可轻松实现根据用户身份执行不同操作的功能,这是aiogram开发中非常常见的权限控制手段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:35:20