【问题标题】:Message dm in chat Discord.js聊天 Discord.js 中的消息 dm
【发布时间】:2018-05-27 18:14:37
【问题描述】:

我似乎无法找到一种方法让某人说 !dm 并让它只发送给指定的玩家。这是一个例子:

CoolGuy 的讯息: "!dm Moogstir 你好"

接收者(Moogstir): “-很酷的家伙 你好”

这是我的代码:

const Discord = require('discord.js');
const bot = new Discord.Client();
const Player = new Discord.Client();

bot.on('ready', () => {
    console.log(`It's an owl! It's a Bagel! NO It's a ${bot.user.tag}`) 
 });

Player.on('message', (message) => {



    if (message.author.bot) return;
    const args = message.content.split(/ +/g);
    const command = args.shift().toLowerCase();

    if(command === `!dm ` + `${player.user.tag}` + `${message.content}`) {
        message.Player.sendMessage(`-${message.author}` + "\n" + 
`${message.content}`);
    }

 });

【问题讨论】:

  • 运行代码时会发生什么?尝试将sendMessage 替换为send。因为sendMessage 现在已弃用。

标签: javascript node.js discord.js


【解决方案1】:

要向消息的作者发送消息,请使用message.reply(``);

如果您希望邮件发送给作者以外的其他人,您需要获取收件人 ID/用户名并将其传递给集合以找到他们。例如:collection.find('username', 'myUsername');

此外,sendMessage 已折旧,如果您要发送到服务器中的频道,则应该只是 message.channel.send

您应该通读documentation 以了解基础知识。其中一些一开始可能会让人感到困惑,但随着你玩得越多,它就会开始变得有意义。

编辑:我不确定您为什么将客户命名为 player 而不是 clientbot,但我建议您更改它以避免以后混淆。

【讨论】:

  • 谢谢,这对很多人都有帮助! :D
【解决方案2】:

有很多方法可以解决这个问题,但这里是最简单的一种。

//command: !dm @user <message>
let user = message.mentions.users.first(); //grabbing the user mention
user.send(<message here>);

运行您的命令!dm 后,代码会找到用户提及,然后向用户发送dm message

旁注:为什么还要使用两个不同的客户端?要么使用bot,要么使用player

【讨论】:

  • 谢谢!我还在努力解决这个问题,谢谢!
  • 没问题,但我犯了一个错误。应该是message.mentions.members.first();
【解决方案3】:

//dm 命令

bot.on('message', function(message){
  if(message.content.startsWith("!ddm")){

    var user = message.mentions.users.first();
    var text = message.content.split(' ').slice(2).join(' ');

    message.delete();

    if(message.author.bot) return;
    if(!message.member.hasPermission("ADMINISTRATOR")){
      message.channel.send("Du hast leider keine Rechte dafür!")
      return;
    }

    if(message.author.id == "ID hier"){
      message.reply("Tja da hast du wohl keine Rechte für! Du stehst für diesen Command leider auf der Blacklist!")
      return;
    }

    if(!user) return message.channel.send("Du hast keinen User angegeben.");
    if(!text) return message.channel.send("Du hast keine Nachricht angegeben.")

    user.send(`**${message.guild.name}:**`)
    user.send(text)
  }
})

【讨论】:

  • 如果您能解释您的建议如何帮助解决问题,那就太好了。
  • 这很可能解决了 OP 的问题,但添加一些 cmets 或解释会改善这个答案。
猜你喜欢
  • 2020-08-27
  • 2018-12-02
  • 2021-12-16
  • 2018-07-21
  • 1970-01-01
  • 2021-11-09
  • 2021-10-17
  • 2021-10-28
  • 2020-10-18
相关资源
最近更新 更多