如何将 MongoDB 中的值导入到 Discord 嵌入中?

How do I import values ​from MongoDB into a Discord embed?

我在 mongoDB 数据库中拥有我需要的所有数据,我只是不知道如何在 Discord 嵌入中发送部分数据。 例如数据:

new birthdaySchema({
  User: username.username,
  Birthday: birthdayString, 
  Month: showMonth,
  Day: showDay, 
  Year: showYear

年、月和日只是用来对生日进行排序,birthdayString = Day of Month

我也使用 moment-timezone (UTC)

const dateTime = moment.utc().format(`DD MM YYYY, hh:mm:ss`);

我的目标是使用像 /next-birthdays 这样的斜杠命令,嵌入的数据应该看起来像

${birthdayString} ${Year}\n${User}(这 10 次,所以 10 个用户即将到来的生日)

并且 moment-timezones (UTC) 中的生日和实际日期和时间是否匹配。 然后机器人应该使用标题(生日快乐)和描述(Today is ${User}'s Birthday, blah blah blah)制作一个新的嵌入,最后它应该给该用户在此服务器上的生日角色。

希望有人能帮助我:)

我有一些类似的东西可能会对你有所帮助:) 这是通过使用 mongoose library(我猜你可能正在使用)来实现的。

在我的代码中,我引用了保存我的架构的 JS 文件:

const Messages = require("../models/benSchema2");

然后,您可以拥有一个变量,并将数据库中的所有条目以数组形式存储在其中,如下所示:

const messageOrdered = await Messages.find({}).sort({ messages: -1 });

(在我的例子中,我从数据库中获取所有条目,按消息的降序排序。也许你可以根据 birthdayString 对其进行排序?)

然后你可以有一个 for 循环,从 i=0 开始到 9 停止,这应该得到最近的 10 个生日。我在这里有我的代码,但可以重构它以提高效率。此外,我的代码基于存储在数据库中的用户 ID 数据工作,但它应该能够通过改进它以处理用户名来工作。

let content = "";
    for (let i = 0; i < messageOrdered.length; i++) {
      if (i === 5) {
        break;
      }

      const userID = await client.users.fetch(messageOrdered[i].UserID);
      let user = userID.username;

      if (i === 0) {
        content += ` ${i + 1}: ${user} - ${messageOrdered[i].messages}\n`;
      } else if (i === 1) {
        content += ` ${i + 1}: ${user} - ${messageOrdered[i].messages}\n`;
      } else if (i === 2) {
        content += ` ${i + 1}: ${user} - ${messageOrdered[i].messages}\n`;
      } else {
        content += `️ ${i + 1}: ${user} - ${messageOrdered[i].messages}\n`;
      }
    } (bit spaghetti code but oh well :))

一旦你得到最接近的 10 并且它们都被添加到内容字符串中,那么在你的最终 MessageEmbed 中你可以这样做:

.addField("Global Positions (Text):", content)

然后终于发出来了。 我希望这在某种程度上有所帮助 :)