0

0

如何在Node.js Discord机器人中获取并提及消息发送者

碧海醫心

碧海醫心

发布时间:2025-11-20 20:45:21

|

735人浏览过

|

来源于php中文网

原创

如何在Node.js Discord机器人中获取并提及消息发送者

本教程将详细讲解如何在node.js discord机器人开发中,准确获取到发送消息的用户信息,并利用这些信息在机器人回复中正确地提及(ping)该用户。我们将重点介绍`message.author`属性的用法,并演示如何使用用户的唯一id来构建有效的提及语法,从而实现机器人与用户的精准互动。

获取消息发送者的用户信息

在Discord.js库中,当机器人接收到一条消息时,message对象包含了关于这条消息的丰富信息,其中就包括发送者的信息。要获取消息的发送者,我们可以使用message.author属性。

message.author返回的是一个User对象,它代表了Discord上的一个用户。这个对象包含了用户的多种属性,例如:

  • id: 用户的唯一标识符(ID)。
  • username: 用户的Discord用户名。
  • discriminator: 用户的四位数字标识符(例如#1234)。
  • tag: 完整的用户标签(例如Username#1234)。

通常,id是进行用户操作和提及最重要的属性。

在Discord消息中正确提及用户

Discord的提及(ping)机制并非简单地在用户名加上@符号。为了确保能够正确地提及到某个用户,Discord要求使用该用户的唯一ID。正确的提及格式是:。

例如,如果一个用户的ID是123456789012345678,那么在消息中提及该用户的语法就是。Discord客户端会自动将这个格式渲染成一个可点击的用户提及。

VisualizeAI
VisualizeAI

用AI把你的想法变成现实

下载

因此,当我们需要在机器人回复中提及发送消息的用户时,应该从message.author对象中提取出id属性,并将其嵌入到提及格式中。

示例代码

以下是一个修改后的Discord机器人代码片段,演示了如何获取消息发送者的ID并在回复中提及他们:

const Discord = require('discord.js');
// 假设prefix和token存储在config.json中
const { prefix, token } = require('./config.json'); 
const client = new Discord.Client();

// 机器人上线时触发
client.once('ready', () => {
    console.log('机器人已上线并准备就绪!');
});

// 监听所有收到的消息
client.on('message', message => {
    // 避免机器人回复自己的消息,形成无限循环
    if (message.author.bot) return;

    // 假设我们监听特定的消息内容
    if (message.content === `[ done ] the @? gold ? succes`) {
        // 获取消息发送者的ID
        const authorId = message.author.id;

        // 构建包含用户提及的回复消息
        // 使用模板字符串方便地插入变量
        message.channel.send(`!addinvites <@${authorId}> 50`);
        console.log(`已向用户 <@${authorId}> 发送邀请:50`);
    }

    // 您可以在这里添加其他命令处理逻辑,例如:
    // if (message.content.startsWith(`${prefix}hello`)) {
    //     message.channel.send(`你好,<@${message.author.id}>!`);
    // }
});

// 使用您的机器人令牌登录Discord
client.login(token);

在上述代码中:

  1. message.author.id用于获取发送消息用户的唯一ID。
  2. 模板字符串 `!addinvites 50` 被用来构建最终的回复消息,其中会正确地渲染为对消息发送者的提及。

注意事项

  • message.author vs message.member: message.author始终返回一个User对象,代表Discord上的一个通用用户。而message.member(如果消息是在服务器(Guild)中发送的)则返回一个GuildMember对象,它包含了该用户在特定服务器中的更多信息,例如昵称、角色、加入时间等。在大多数情况下,如果你只是需要提及用户,message.author.id就足够了。
  • 机器人权限: 确保您的Discord机器人在其所在的频道拥有发送消息的权限,否则它将无法发送任何回复,包括提及用户的消息。
  • 用户ID的稳定性: 用户的ID是永久且唯一的,不会改变。这是Discord内部识别用户的核心方式。
  • 避免无限循环: 在client.on('message', ...)事件监听器中,务必添加if (message.author.bot) return;来阻止机器人响应自己的消息,这可以有效避免机器人之间或机器人与自身之间产生无限回复循环。

总结

通过本教程,我们学习了如何在Node.js Discord机器人中获取消息发送者的用户信息,并掌握了使用message.author.id结合特定格式来正确提及用户的方法。理解并应用这些技巧,能够让您的Discord机器人更加智能和互动,为用户提供更个性化的体验。在开发过程中,请始终注意代码的健壮性和权限管理,以确保机器人的稳定运行。

相关专题

更多
if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

738

2023.08.22

mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

180

2023.12.04

Python标识符有哪些
Python标识符有哪些

Python标识符有变量标识符、函数标识符、类标识符、模块标识符、下划线开头的标识符、双下划线开头、双下划线结尾的标识符、整型标识符、浮点型标识符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

277

2024.02.23

java标识符合集
java标识符合集

本专题整合了java标识符相关内容,想了解更多详细内容,请阅读下面的文章。

253

2025.06.11

c++标识符介绍
c++标识符介绍

本专题整合了c++标识符相关内容,阅读专题下面的文章了解更多详细内容。

121

2025.08.07

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

256

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

208

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1465

2023.10.24

Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

8

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 8.3万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号