Получить сообщение от клиента Discord. js - PullRequest
0 голосов
/ 11 апреля 2020

Я искал этот вопрос, и сотни найденных ответов говорят об этом только в терминах события сообщения EG

client.on('message', message => {
   message.id // <<< I don't think this is the right code for it but that's not the point I'm making so....
});

Однако мне нужно получить доступ к сообщению через его идентификатор без использования события сообщения. В частности, мне нужно разобраться с событием messageReactionAdd, однако я бы предпочел узнать, как получить его от клиента, потому что мне нужно было делать то же самое в прошлом (но вместо этого я был вынужден изменить свои первоначальные планы). Это код, который я пытался использовать, но он просто не будет работать:

client.channels.cache.get("Channel_Id").messages.fetch("Message_Id");

Меня привели к этой строке кода из другого проекта, где я нашел первое сообщение в канале:

client.channels.cache.get("Channel_Id").messages.fetch({ limit: 1 }).then(messages => {var lastMessage = messages.first();});

Возможно ли это вообще? Я нахожу немного странным, что нет простого способа нацелить сообщение напрямую, не перепрыгивая через несколько обручей (например, client.messages.fetch ("Message_Id")). Любая помощь будет высоко ценится.

1 Ответ

1 голос
/ 11 апреля 2020

Первая версия загрузки должна работать. Обратите внимание, что messageReactionAdd событие отправляется только для сообщений, которые кэшируются вашим ботом. Кэшированные сообщения - это те, которые получены после запуска вашего бота, до (по умолчанию) 200 сообщений на канал.

Если вы хотите получить только одно указанное c сообщение для получения событий реакции, это должен работать, пока он находится в канале, о котором вам не нужно беспокоиться о упомянутом ранее ограничении.

Однако , так как вы используете v12, есть функция, которая позволяет получать события для некэшированной структуры, называемые Partials ( здесь - это страница руководства для него). Если вы включите партиалы, вы можете получать события для вашего сообщения без необходимости извлекать его заранее. Просто помните, что вы получаете только идентификаторы таким образом, но с возможностью извлечения при необходимости.

...