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

如何制作可@指定用户的Discord机器人?

解决Discord机器人无法@指定用户的问题

你当前代码里直接写@Someone只是普通文本,Discord不会把它识别为有效的@用户指令,所以没法触发@提醒。下面给几种实用的实现方式:

1. @发送指令的用户

如果要@触发这条命令的用户,直接用消息对象里的用户属性就行:

if message.channel.name == "general":
    if user_message.lower() == "do it jeff":
        await message.channel.send(f"My name is Jeff {message.author.mention}")
        return

message.author.mention会自动生成Discord能识别的@格式,直接@发消息的人。

2. @固定ID的指定用户

要是你想固定@某一个特定用户,先右键该用户复制ID(得先开启Discord的开发者模式),然后用下面的代码:

# 把这里的数字换成目标用户的真实ID
target_user_id = 123456789012345678
if message.channel.name == "general":
    if user_message.lower() == "do it jeff":
        target_user = message.guild.get_member(target_user_id)
        if target_user:
            await message.channel.send(f"My name is Jeff {target_user.mention}")
        else:
            await message.channel.send("目标用户不在当前服务器里")
        return

先获取服务器里的成员对象,确认用户在服务器内,再用.mention生成@格式。

3. 通过用户名查找并@用户

如果想通过用户名(比如"Someone")匹配用户并@,可以这么写:

target_username = "Someone"
if message.channel.name == "general":
    if user_message.lower() == "do it jeff":
        # 遍历服务器成员找匹配的用户名
        target_user = next((member for member in message.guild.members if member.name == target_username), None)
        if target_user:
            await message.channel.send(f"My name is Jeff {target_user.mention}")
        else:
            await message.channel.send(f"找不到用户{target_username}")
        return

注意如果服务器里有同名用户,只会匹配第一个找到的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:35:25