You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Discord.Net:如何让Bot通过@提及并提醒用户

解决Discord Bot实现用户@提及提醒的问题

其实你遇到的问题核心是:Discord的有效提及不是单纯打个@用户名就行,得用它识别的特殊格式才能触发通知。我来给你讲具体怎么弄:

核心原理

Discord 只会把包含用户ID的特定格式字符串解析为可触发提醒的提及,格式有两种:

  • <@用户ID>:基础格式,适用于所有用户
  • <@!用户ID>:兼容昵称的格式,推荐用这个,不管用户有没有设置昵称都能正确提及

不过主流的Discord Bot开发库都已经帮你封装好了直接获取提及字符串的方法,不用自己手动拼ID。

具体实现(分主流库举例)

1. 使用 discord.py(Python)

如果你用的是discord.py,命令发起者的用户对象是ctx.author,直接调用它的mention属性就能得到可触发提醒的字符串:

@bot.command(name="search")
async def search_images(ctx, *search_params):
    # 这里写你的图片检索逻辑,比如根据search_params获取图片列表
    image_results = get_images(search_params)  # 假设这是你的检索函数
    
    # 回复时带上用户提及
    await ctx.send(f"{ctx.author.mention} 你的图片检索结果如下:\n{image_results}")

2. 使用 discord.js(JavaScript/TypeScript)

如果是discord.js,消息对象里的message.author就是发起者用户对象,直接把它嵌入到消息字符串里就行(因为它的toString()方法会自动返回正确的提及格式):

client.on('messageCreate', async (message) => {
    if (message.content.startsWith('!search')) {
        const searchParams = message.content.slice(7).trim(); // 提取搜索参数
        // 你的图片检索逻辑
        const imageResults = await fetchImages(searchParams);
        
        // 发送带提及的回复
        await message.channel.send(`${message.author} 已找到你的图片检索结果:\n${imageResults}`);
    }
});

为什么纯文本@没用?

你之前发的纯文本@用户名只是普通字符串,Discord不会把它识别为用户提及,自然不会触发通知。只有用<@ID>这种特殊格式,Discord才会解析为指向该用户的可点击链接,同时触发用户的消息提醒。

额外注意事项

  • 确保你的Bot有在对应频道发送消息的权限,不然提及也发不出去
  • 别频繁滥用提及,不然可能被服务器当成垃圾消息处理

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

火山引擎 最新活动