我的讯息编号有很多问题,而且有很多错误

时间:2019-06-20 16:22:17

标签: discord.js

我有一个无法使用的代码。我不知道如何完成。 如果用户在一个通道中编写消息,而在另一通道中发送消息,则我需要管理员在这里接受或拒绝。所以我有很多错误。

let rMember = message.id(message.id.get(args[0]));

const { RichEmbed } = require("discord.js");

module.exports.run = async (client, message, args) => {
  if (message.channel.id !== "someid") return message.delete();
  if(!message.member.hasPermission("KICK_MEMBERS")) return message.delete();
  let rMember = message.id(message.id.get(args[0]));
  if(!rMember) return await message.delete() && message.reply("nope.").then(m => m.delete(3000));

  await message.delete().catch(O_o=>{});

  const co = '1';
  const a = '2';
  const b = '3';
  const c = '4';
  const d = '5';
  const e = '6';

  const prohibited = ['someid'];
  if (!message.member.roles.find(role => prohibited.includes(role.id))) return message.delete().catch(O_o=>{});

  const filter = (reaction, user) => ['?' ,'?', '?', '?', '?', '?'].includes(reaction.emoji.name) && user.id === message.author.id;

  const embed = new RichEmbed()
      .setTitle('nope:')
      .setDescription(`

      ? ${co.toString()}
      ? ${a.toString()}
      ? ${b.toString()}
      ? ${c.toString()}
      ? ${d.toString()}
      ? ${e.toString()}

      `)
      .setColor(0xdd9323)
      .setFooter(`ID: ${rMember}`);

  message.channel.send(embed).then(async msg => {

      await msg.react('?')
      await msg.react('?');
      await msg.react('?');
      await msg.react('?');
      await msg.react('?');
      await msg.react('?');

      msg.awaitReactions(filter, {
          max: 1,
          time: 30000,
           errors: ['time']
      }).then(collected => {

          const reaction = collected.first();

          switch (reaction.emoji.name) {
              case '?':
                  message.client.channels.get(`someid`).send(`${message.member} ${rMember}: **${co}**.`);
                  msg.delete()
                  break;
              case '?':
                  message.client.channels.get(`someid`).send(`${message.member} ${rMember}: **${a}**.`);
                  msg.delete()
                  break;
              case '?':
                  message.client.channels.get(`someid`).send(`${message.member} ${rMember}: **${b}**.`);
                  msg.delete()
                  break;
              case '?':
                  message.client.channels.get(`someid`).send(`${message.member} ${rMember}: **${c}**.`);
                  msg.delete()
                  break;
              case '?':
                  message.client.channels.get(`someid`).send(`${message.member} ${rMember}: **${d}**.`);
                  msg.delete()
                  break;
              case '?':
                  message.client.channels.get(`someid`).send(`${message.member} ${rMember}: **${e}**.`);
                  msg.delete()
                  break;
          }

      }).catch(collected => {
          return message.channel.send(`Error.`).then(m => m.delete(3000))
      });

  });

  try{
    await rMember.send(`${message.member} nope.`)
  }catch(e){
  }
}

module.exports.help = {
  name: "denie"
}

这是工作代码,可以发送嵌入消息

client.on('message', async message => {
  if (message.channel.id == "someid") {
    if (!message.member.roles.find(r => r.name === "role")) return await message.delete();
    if (message.author.bot) return;
    if (!message.content) return;
    const embed = new RichEmbed()
      .setTitle('woops:')
      .setDescription(message.content)
      .setColor(0xdd9323)
      .setFooter(`MessageID: ${message.id}`);

    await message.client.channels.get(`someid`).send(embed)
  }

  try{
  }catch(e){
  }
})
  

(节点:6544)UnhandledPromiseRejectionWarning:TypeError:   message.id.get不是函数

1 个答案:

答案 0 :(得分:0)

  

我需要命令将[a]消息[ID] ....作为[an]参数使用。

要通过其ID检索Message,可以使用TextChannel.fetchMessage()方法。请记住,它返回一个Promise。请考虑以下示例。

// Attaching a 'then()' method...

const id = '189855563893571595';
const channel = message.channel;

channel.fetchMessage(id)
  .then(fetchedMessage => {
    // Use 'fetchedMessage'
  })
  .catch(console.error);
// Using the 'await' keyword (async context required)...

const fetchedMessage = await channel.fetchMessage(id);

// Use 'fetchedMessage'

在您的命令中实现此操作相对简单。

try {
  // Stop if the argument is missing
  if (!args[0]) return await message.channel.send(':x: Provide a message ID.');

  // Define the channel to fetch the message in
  const channel = message.guild.channels.get('idHere');

  // Fetch the message
  const fetchedMessage = await channel.fetchMessage(args[0]);

  // Stop if the message doesn't exist
  if (!fetchedMessage) return await message.channel.send(':x: Invalid message ID.');

  // Insert code using 'fetchedMessage' here...
} catch(err) {
  // Log any errors from rejected promises
  console.error(err);
}