0

0

Node.js Discord Bot开发:获取消息发送者并正确提及用户

聖光之護

聖光之護

发布时间:2025-11-20 23:06:05

|

263人浏览过

|

来源于php中文网

原创

Node.js Discord Bot开发:获取消息发送者并正确提及用户

本教程旨在指导node.js discord机器人开发者如何获取消息发送者的用户信息,并以正确的方式在回复中提及(ping)该用户。我们将探讨`discord.js`库中`message.author`对象的用法,并强调在discord api中提及用户时需使用用户id而非用户名,通过具体代码示例展示实现细节。

在开发Discord机器人时,经常需要识别与机器人交互的用户,并在回复中动态地引用或提及(ping)他们。discord.js库为我们提供了便捷的方式来访问这些信息。本文将详细介绍如何获取消息发送者的用户数据,并演示如何在机器人回复中正确地提及该用户。

获取消息发送者信息

当机器人接收到一条消息时,message对象中包含了关于这条消息的各种元数据,其中就包括消息的发送者信息。message.author属性返回一个User对象,该对象包含了发送消息的用户的详细数据。

User对象的一些常用属性包括:

  • id: 用户的唯一标识符。
  • username: 用户的显示名称。
  • tag: 用户的完整标签(例如 username#discriminator)。
  • bot: 一个布尔值,指示该用户是否为机器人。

通过访问message.author,我们可以轻松获取到发送消息的用户的id、username等信息,从而在机器人逻辑中进行相应的处理。

正确提及(Ping)用户

在Discord中,要提及一个用户,并不仅仅是简单地在消息中插入他们的用户名。Discord API要求使用特定的格式来创建可点击的提及链接,该格式依赖于用户的唯一ID。正确的提及格式是 。

这意味着,即使我们知道用户的username,也不能直接使用@username来保证在所有情况下都能成功提及用户(例如,当用户名包含特殊字符或有多个同名用户时)。因此,最佳实践是始终使用用户的id来构建提及字符串。

析稿Ai写作
析稿Ai写作

科研人的高效工具:AI论文自动生成,十分钟万字,无限大纲规划写作思路。

下载

结合message.author.id,我们可以轻松构建出正确的提及格式。

示例代码

让我们通过一个具体的代码示例来展示如何获取消息发送者并正确提及他们。假设我们的机器人需要在一个特定命令触发时,回复并提及发送该命令的用户,同时附带一些额外信息。

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

client.once('ready', () => {
    console.log('Bot is Ready!');
});

client.on('message', message => {
    // 避免机器人回复自己的消息,或处理不符合前缀的消息
    if (message.author.bot) return;

    // 假设我们有一个特定的触发消息,例如 "[ done ] the @? gold ? succes"
    // 注意:原始问题中的匹配字符串可能需要更灵活的正则匹配,这里为简化教程使用硬编码
    if (message.content === `[ done ] the @? gold ? succes`) {
        // 获取消息发送者的ID
        const authorId = message.author.id;
        // 构建提及字符串
        const userMention = `<@${authorId}>`;

        // 发送回复,并正确提及用户
        message.channel.send(`!addinvites ${userMention} 50`);
    }

    // 另一个更通用的例子:如果用户发送 "!hello",机器人回复 "Hello @用户!"
    if (message.content === `${prefix}hello`) {
        const userMention = `<@${message.author.id}>`;
        message.channel.send(`Hello ${userMention}!`);
    }
});

client.login(token);

在上述代码中:

  1. 我们监听message事件。
  2. 在消息处理逻辑内部,通过 message.author.id 获取到发送者的用户ID。
  3. 然后,我们将这个ID嵌入到 模板字符串中,生成正确的用户提及格式。
  4. 最后,使用 message.channel.send() 将包含用户提及的回复发送到消息所在的频道。

注意事项

  • 用户ID的稳定性: 用户ID是用户在Discord中的唯一且永久的标识符,即使用户名或标签发生变化,ID也保持不变,这使得它成为提及用户的可靠方式。
  • 机器人自身消息: 在处理message事件时,通常需要添加 if (message.author.bot) return; 来避免机器人响应自己的消息,或陷入无限循环。
  • 权限: 确保你的Discord机器人拥有在频道中发送消息的权限。
  • 其他提及类型: 除了提及用户,Discord还支持提及角色()和频道(),它们的原理与提及用户类似,都是通过ID进行。

总结

通过discord.js库,获取消息发送者的信息并正确提及用户是一个直接且关键的操作。核心在于理解message.author对象及其id属性,并掌握Discord API中提及用户的特定格式 。遵循这些指导原则,开发者可以构建出更具交互性和用户友好性的Discord机器人应用。

相关专题

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

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

751

2023.08.22

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

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

182

2023.12.04

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

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

280

2024.02.23

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

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

254

2025.06.11

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

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

121

2025.08.07

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

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

258

2023.08.03

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

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

209

2023.09.04

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

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

1468

2023.10.24

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

3

2026.01.20

热门下载

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

精品课程

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

共101课时 | 8.4万人学习

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号