Я получаю сообщение об ошибке, введя команду snipe, которая показывает последнее удаленное сообщение - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь создать команду, когда при вводе, например, z!snipe она показывает последнее удаленное сообщение с автором сверху, сообщение посередине. но это не работает на youtube не так много учебников о том, как это сделать.

Мне удалось найти один, но он не работает. проблема в следующем: TypeError: Cannot read property 'get' of undefined

Мой код:

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

module.exports ={
    name: "snipe",
    category: "info",
    description: "Shows the most recent deleted message.",
    usage: "z!snipe",
    run: async(client, message, args) => {
        const msg = client.snipes.get(message.channel.id);
        if(!msg) return message.reply("There are no recently deleted messages!");

        const embed = new RichEmbed()
            .setAuthor(`Deleted by ${msg.author.tag}`, msg.author.displayAvatarURL())
            .setDescription(msg.content);
    }
} 

парень из учебного пособия не показывает, как он получает эту штуковину ... поэтому она не работает для меня. Я не знаю, что еще добавить, так что я в тупике.

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

Вы определили Map() или Discord#Collection (класс, расширяющий Map ()) для снайперов? Идентификатор канала, который вы пытаетесь получить, должен быть ключом указанного Map

0 голосов
/ 21 апреля 2020

Вот простой способ сделать .snipes для вашего клиента. Он буквально хранит каждое удаленное сообщение с идентификатором канала. Вы можете добавить больше функций, но этого должно быть достаточно, чтобы ответить на ваш вопрос: D

client.snipes = function(){
   get(ChannelId){
       return this[ChannelId];
   }
   set(msg){
      this[msg.channel.id] = msg;
   }
}
client.on('messageDelete',function(msg){
   client.snipes.set(msg); 
}
...