Discord.js Bot 上的 DM 特定用户 ID

Posted

技术标签:

【中文标题】Discord.js Bot 上的 DM 特定用户 ID【英文标题】:DM Specific User ID on Discord.js Bot 【发布时间】:2021-10-26 00:45:01 【问题描述】:

我是编码机器人的新手,我需要有关如何添加命令以向某个人发送自定义消息的帮助。这就是我到目前为止所拥有的。我该怎么办?

const Discord = require('discord.js');

const config = require("./Data/config.json")

const client = new Discord.Client( intents: ["GUILDS", "GUILD_MESSAGES"] )

client.once('ready', () => 
    console.log('Ready!');
);

client.login('TOKEN');


client.on('message', async message => 
    if (message.author.bot) return;
    let prefix = '??'
    if (!message.content.startsWith(prefix)) return;

    let args = message.content.slice(prefix.length).trim().split("/ +/g");
    let msg = message.content.toLowerCase();
    let cmd = args.shift().toLowerCase();

    if (msg.startsWith(prefix + 'ping')) 
        message.channel.send('pong');
    

    if (msg.startsWith(prefix + 'hello')) 
        message.channel.send('hewwo uwu');
    
);

【问题讨论】:

【参考方案1】:

要通过 id 获取用户,可以使用bot.users.fetch()

要直接向用户发送消息,您可以使用User.send()

const user = await client.users.fetch(userId);
user.send("This is a DM!");

【讨论】:

我如何为特定的用户 ID 制作它? 我已更新我的答案以更正确地回答您的问题 添加该代码后,如何提示它发送该 dm?我也猜它应该属于clients.on吧? 是的,这应该用在你的一个命令中,在.on("message")监听器中 如果用户禁用了 DM,这将引发错误。【参考方案2】:

这个简单的函数可以轻松解析用户(你可以提供一个用户对象用户ID,非常有用)

async function DMUser(resolvable, content, client) 
  const user = client.users.resolve(resolvable)
  return user.send(content)

//returns: message sent, or error
//usage: DMUser(UserResolvable, "content", client)

相关链接:

UserManager.resolve User.send UserResolvable

【讨论】:

在哪里插入用户名和消息内容? 执行时。在您想要的任何回调中,只需执行DMUser(userid, content, client)

以上是关于Discord.js Bot 上的 DM 特定用户 ID的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 discord.js 从 discord bot 向特定用户发送消息

在 Discord.js 和 MySQL 中注册命令

Discord.js 服务器欢迎

在特定频道中重定向 Discord DM

每个用户的 Discord bot 特定字数计数器

向每个对 discord.js 中的消息做出反应的用户发送 dm