javascript - 如何通过 USER ID 和@Mention 发送 DM 消息?
问题描述
如何让机器人通过指定的USER ID给用户写私信,并提及
例子:
!private 660033203473743873 Hello
!private @User Hello
我的代码
client.on('message', message => {
if (!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).trim().split(' ');
const command = args.shift().toLowerCase();
const member = message.mentions.members.first() || message.guild.members.cache.get(args[0]);
if (command === 'private') {
member.send({
content: `${args[1]}`,
});
}
});
解决方案
看来您使用args
不正确。
args
是整个消息的数组,因此args[0]
将!private
在您的情况下返回。
工作示例:
client.on('message', async message => {
if (!message.content.startsWith(prefix) || message.author.bot) return; //If message is sent by a bot or does not start with the prefix
const args = message.content.slice(prefix.length).trim().split(/ +/g); //Getting the message arguments
const command = args.shift().toLowerCase(); //Receiving the command
if (!args[1]) return message.channel.send("Please provide a user to message."); //If user was not provided
const member = message.mentions.members.first() || message.guild.members.cache.get(args[1]); //Get the member
if (!member) return message.channel.send("I could not find the user you provided"); //If the member was not found
if (!member.id || !member.tag) member = member.user; //Making sure the user is correct
try {
member = await message.guild.members.fetch(user); //Getting the guild member
} catch() {
member = null;
}
if (!member) return message.channel.send("The user you mentioned is not in this server."); //Double checking the user is in the server
if (command.toLowerCase() == "private") { //Command is equal to private
member.send(args.slice(1).join(" ")); //Send the member a message
}
});
推荐阅读
- authorization - 基于声明的授权是否适合单个资源
- java - 需要帮助来理解字符串长度逻辑
- unit-testing - GitLab 中的代码覆盖率始终未知
- apache-kafka - 有没有办法使用千分尺在电报中获取卡夫卡流和骆驼指标
- javascript - div 内的 javascript 选项丢失(在 div 刷新后)
- javascript - 是否使用 AJAX 检查登录状态?
- git - 为已删除的引用保留 reflog
- winforms - 当 != 检查时,2 个相同类型的对象返回 true
- php - PHP 检查一个数组中的值是否存在于另一个数组中
- linux - 在Linux中未经许可的tail命令