Как я могу редактировать встроенное сообщение с интервалом? - PullRequest
0 голосов
/ 05 августа 2020
var dateTime = time+' '+date;

 const boosterembed = new Discord.RichEmbed()
            .setTitle("Boosters")
            .setColor('#ff0000')
            .setDescription("Last Time updated: " + dateTime)
            .setTimestamp()
setInterval(function(){guild.channels.get('740327839177375765').message.channel.fetchMessages('740327893103673466').edit(boosterembed)}, 1000)

Почему это не работает? Не могу добавить больше (похоже, ваш пост - это в основном код)

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Я предполагаю, что вы используете Discord. js v11.

Во-первых, fetchMessages предназначен для получения нескольких сообщений из канала. Вместо этого вы захотите использовать fetchMessage. Во-вторых, вы используете edit для редактирования сообщения. В-третьих, канал не имеет свойства message, поэтому guild.channels.get(...).message.channel вызовет ошибку.

setInterval(
  () =>
    guild.channels.get('740327839177375765').fetchMessage('740327893103673466')
      .then(message => message.edit(boosterembed))
      // This catches all errors and logs them to stop unhandled promise rejections
      .catch(console.error),
  1000
)

// Or with async/await:
setInterval(
  async () => {
    try {
      const message = await guild.channels.get('740327839177375765').fetchMessage('740327893103673466')
      await message.edit(boosterembed)
    } catch (error) {
      console.error(error)
    }
  },
  1000
)
0 голосов
/ 05 августа 2020

Этот ответ адаптирован из ответа Cherryblossom, убедитесь, что вы проголосовали за него.

function getDate() {
  var today = new Date();
  var date = today.getDate()+'/'+(today.getMonth()+1)+'/'+today.getFullYear();
  var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
  return time + ' ' + date;
}

setInterval(
  () =>
    bot.channels.get('740327839177375765').fetchMessage('740327893103673466')
      .then(message => message.edit(new Discord.RichEmbed(boosterembed).setDescription('Last Time updated: ' + getTime())))
      // This catches all errors and logs them to stop unhandled promise rejections
      .catch(console.error),
  1000
)

// Or with async/await:
setInterval(
  async () => {
    try {
      const message = await bot.channels.get('740327839177375765').fetchMessage('740327893103673466')
      await message.edit(new Discord.RichEmbed(boosterembed).setDescription('Last Time updated: ' + getTime()))
    } catch (error) {
      console.error(error)
    }
  },
  1000
)
...