[英]how to make dm command with role ? / Discord js V12
我想知道如何制作 dm 命令但有一个角色,所以我制作了这段代码,
const { Client, Message, MessageEmbed } = require('discord.js');
//const { join } = require('path');
module.exports = {
name: 'dm-role',
/**
* @param {Client} client
* @param {Message} message
* @param {String[]} args
*/
run: async(client, message, args) => {
if(!args[0]) return message.channel.send("who do you want to send a message to?")
const role = message.mentions.roles.first() || message.guild.roles.cache.get(args[0]);
if(!user) return message.channel.send("no user found?")
const reason = args.slice(1).join(" ")
if(!reason) return message.channel.send("what's the message?");
try {
await user.send(reason);
return message.channel.send("done");
} catch {
return message.channel.send("i cant send the dm");
}
}
}
好的,所以我尝试了这段代码,但机器人说“我无法发送 dm”,这意味着机器人有错误
我尝试这个代码“https://stackoverflow.com/a/61618962/16849847”代码是:
const { Client, Message, MessageEmbed } = require('discord.js');
const { join } = require('path');
module.exports = {
name: 'dm-role',
/**
* @param {Client} client
* @param {Message} message
* @param {String[]} args
*/
run: async(client, message, args) => {
if (!args[0]) return message.reply('you need to provide a role')
if (!args[1]) return message.reply('you need to provide a message')
const role = message.mentions.roles.first()
message.guild.roles.cache.get(role.id).members.forEach(member => member.send(args[1]))
}
}
是的,这段代码有效,但只发送了 1 句话,下一句没有发送,就像这样
我希望你们能帮助我,这取决于你们,你们想修复第一个代码或第二个代码谢谢,伙计们!
问题与您发送消息的方式有关
您通过发送args[1]
来发送消息,这意味着您只会发送第一个单词。
要解决此问题,请在第一个代码段中发送消息内容:
// Replace args[1] with args.slice(1).join(" ")
message.guild.roles.cache.get(role.id).members.forEach(member => member.send(args.slice(1).join(" ")))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.