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

Python开发Discord bot:如何在指令中实现@提及指定成员功能

实现方案

你可以直接用Discord.py内置的message.mentions属性获取被@的成员对象,不需要手动解析消息字符串,修改后的参考代码如下:

if message.content.startswith('!givecookie'):
    # 校验是否有被@的成员
    if not message.mentions:
        await message.channel.send('请在指令后@要赠送饼干的成员')
        return
    # 取第一个被@的成员,需要支持多用户赠送的话可以遍历整个列表
    target_user = message.mentions[0]
    # 额外可选校验:禁止给自己送饼干
    if target_user.id == message.author.id:
        await message.channel.send('不能给自己赠送饼干哦')
        return
    # 推送赠送消息,target_user.mention会自动生成@该用户的格式
    await message.channel.send(f'Hello {target_user.mention}, 这里是你的饼干~ :cookie:')
    # 这里可以补充你的业务逻辑,比如给target_user.id对应的用户累计饼干数量

核心要点

  • message.mentions会返回消息内所有被@用户的Member对象列表,顺序和消息中@的顺序完全一致,无需手动正则匹配用户ID
  • 拿到target_user对象后可以直接读取id、name等属性做后续的持久化存储、权限校验逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:24:02