我在 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最后它應該給該用戶在此服務器上的生日角色。
希望可以有人幫幫我 :)
uj5u.com熱心網友回復:
我有類似的東西可以幫助你:) 這是通過使用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)
然后最后發送。我希望這有所幫助:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/482944.html
標籤:javascript mongodb 约会时间 不和谐 不和谐.js
下一篇:創建后使用資料庫物件
