[英]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
Year, Month 和 Day 只是用來對生日進行排序,birthdayString = Day of Month
我也使用時刻時區(UTC)
const dateTime = moment.utc().format(`DD MM YYYY, hh:mm:ss`);
我的目標是使用像 /next-birthdays 這樣的斜線逗號嵌入中的數據應該看起來像
${birthdayString} ${Year}\n${User}
(這 10 次,所以即將到來的 10 個用戶的生日)
如果生日和時刻時區 (UTC) 中的實際日期和時間匹配。 然后 Bot 應該使用標題(生日快樂)和描述( Today is ${User}'s Birthday, blah blah blah
)進行新的嵌入,最后它應該給該用戶在此服務器上的生日角色。
希望可以有人幫幫我 :)
我有類似的東西可以幫助你:) 這是通過使用mongoose 庫(我猜你可能正在使用)來實現的。
在我的代碼中,我引用了保存我的架構的 JS 文件:
const Messages = require("../models/benSchema2");
然后,您可以有一個變量並將數據庫中的所有條目以數組形式存儲在其中,如下所示:
const messageOrdered = await Messages.find({}).sort({ messages: -1 });
(就我而言,我從數據庫中獲取所有條目,按消息的降序排序。也許您可以根據生日字符串對其進行排序?)
然后你可以有一個 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)
然后最后發送。 我希望這有所幫助:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.