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
相关产品推荐
相关产品推荐

