Fix issues in mongod & Set client as discord in /setup & add Message model & integrate messageManager
This commit is contained in:
		
							parent
							
								
									32d18716cb
								
							
						
					
					
						commit
						1559faeeb7
					
				|  | @ -17,10 +17,10 @@ module.exports.initMongoDBInstance = async (client,config,callback) => { | |||
|             }) | ||||
|         }, | ||||
| 
 | ||||
|         list: async (table , callback) => { | ||||
|         list: async (table , data, callback) => { | ||||
|             var collection = db.collection(table); | ||||
| 
 | ||||
|             var found_data = await collection.find(data); | ||||
|             var found_data = await collection.find(data).toArray(); | ||||
| 
 | ||||
|             callback(found_data); | ||||
|         }, | ||||
|  |  | |||
|  | @ -22,9 +22,10 @@ module.exports = { | |||
|             if(data == null){ | ||||
|                 interaction.client.database.insert("xan.guilds" , { | ||||
|                     serverId : interaction.guild.id, | ||||
|                     channelId : channel.id | ||||
|                     channelId : channel.id, | ||||
|                     client: "discord" | ||||
|                 }, async (c) => { | ||||
|                     await interaction.reply(`Saved Channel as #${channel.name} in Database`); | ||||
|                     await interaction.reply(`Saved Channel as #${channel.name} in Database as Discord Client`); | ||||
|                 }) | ||||
|             }else{ | ||||
|                 await interaction.reply(`Guild is already saved into Database`); | ||||
|  |  | |||
|  | @ -43,6 +43,8 @@ async function initMessageManager(database) { | |||
| 	client.database = database; | ||||
| 	 | ||||
| 	database.build(); | ||||
| 
 | ||||
| 	require("./messageManager/messageManager")(database , client); | ||||
| } | ||||
| 
 | ||||
| client.commands = new Collection(); | ||||
|  |  | |||
|  | @ -0,0 +1,50 @@ | |||
| class Message { | ||||
|     /** | ||||
|      * @typedef {Object} MessageFields | ||||
|      * @property {import('crypto').UUID} uuid | ||||
|      * @property {import('discord.js').Snowflake} serverId | ||||
|      * @property {string|null} serverName | ||||
|      * @property {import('discord.js').Snowflake} authorId | ||||
|      * @property {string|null} authorName | ||||
|      * @property {string|null} message | ||||
|      */ | ||||
| 
 | ||||
|     constructor(){ | ||||
|         this.uuid = require('crypto').randomUUID(); | ||||
|         this.serverId = 1; | ||||
|         this.serverName = "[No Server]"; | ||||
|         this.authorId = 1; | ||||
|         this.authorName = "[No Author]"; | ||||
|         this.message = "[No Message]"; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Fill Product fields with new values | ||||
|      * @param {MessageFields} newFields - Object containing new values for Category fields | ||||
|      */ | ||||
|     fill(newFields) { | ||||
|         for (let field in newFields) { | ||||
|             if (this.hasOwnProperty(field) && newFields.hasOwnProperty(field)) { | ||||
|                 if (this[field] !== 'undefined') { | ||||
|                     this[field] = newFields[field]; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         return this.toArray(); | ||||
|     } | ||||
| 
 | ||||
|     toArray(){ | ||||
|         return { | ||||
|             uuid : this.uuid, | ||||
|             serverId : this.serverId, | ||||
|             serverName : this.serverName, | ||||
|             authorId : this.authorId, | ||||
|             authorName: this.authorName, | ||||
|             message: this.message | ||||
|         }; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| module.exports = Message; | ||||
|  | @ -0,0 +1,27 @@ | |||
| const { Client } = require("discord.js"); | ||||
| const Message = require("../../Message"); | ||||
| const { EmbedBuilder } = require("@discordjs/builders"); | ||||
| 
 | ||||
| /** | ||||
|  *  | ||||
|  * @param {Message} message | ||||
|  * @param {Client} discord  | ||||
|  */ | ||||
| const send = (message, database, channelId , discord) => { | ||||
|     discord.channels.cache?.get(channelId).send({ | ||||
|         embeds: [ | ||||
|             new EmbedBuilder() | ||||
|                 .setAuthor({ | ||||
|                     name: message.authorName, | ||||
|                     iconURL: discord.user.displayAvatarURL() | ||||
|                 }) | ||||
|                 .setDescription(message.message) | ||||
|                 .setFooter({ | ||||
|                     text: message.serverName, | ||||
|                     iconURL: discord.user.displayAvatarURL() | ||||
|                 }) | ||||
|         ] | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| module.exports = send; | ||||
|  | @ -0,0 +1,44 @@ | |||
| const { Client, Events } = require("discord.js"); | ||||
| const Message = require("./Message"); | ||||
| const discordSend = require("./client/discord/send"); | ||||
| const { data } = require("../commands/servers/setup"); | ||||
| /** | ||||
|  *  | ||||
|  * @param {Client} discord  | ||||
|  */ | ||||
| const initMessageManager = async ( | ||||
|     database, | ||||
|     discord | ||||
| ) => { | ||||
|     function postMessage(message){ | ||||
|         database.list("xan.guilds" , {} , (list) => { | ||||
|            for(var element of list){ | ||||
| 
 | ||||
|             if(element.client == "discord") discordSend(message , data , element.channelId , discord); | ||||
|            }  | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     discord.on(Events.MessageCreate , (message) => { | ||||
|         if(message.author.bot) return; | ||||
|         database.search("xan.guilds" , { | ||||
|             serverId : message.guild.id | ||||
|         } , async (data) => { | ||||
|             if(data !== null){ | ||||
|                 var _message = new Message(); | ||||
|                 _message.authorId = message.author.id; | ||||
|                 _message.authorName = message.author.username; | ||||
|                 _message.serverId = message.guild.id; | ||||
|                 _message.serverName = message.guild.name, | ||||
|                 _message.message = message.content; | ||||
| 
 | ||||
|                 delete _message.uuid; | ||||
| 
 | ||||
|                 postMessage(_message.toArray()); | ||||
|             } | ||||
|         }); | ||||
|     }); | ||||
| } | ||||
| 
 | ||||
| module.exports = initMessageManager; | ||||
		Loading…
	
		Reference in New Issue