diff --git a/app.js b/app.js index 4a8545c..5a5a527 100644 --- a/app.js +++ b/app.js @@ -296,13 +296,18 @@ function sendMessage(e) { onMessageAdded(config.userName, message, config.userAvatar); + let peersPublicKeys = []; + peersPublicKeys.push([...swarm.connections].map(peer => peer.remotePublicKey.toString('hex'))); + peersPublicKeys = peersPublicKeys.flat(1); + peersPublicKeys.push(swarm.keyPair.publicKey.toString('hex')); + const messageObj = JSON.stringify({ type: 'message', name: config.userName, message, avatar: config.userAvatar, topic: b4a.toString(currentRoom.topic, 'hex'), - peers: [...swarm.connections].map(peer => peer.remotePublicKey.toString('hex')), + peers: peersPublicKeys, timestamp: Date.now(), readableTimestamp: new Date().toLocaleString(), // Added human-readable timestamp }); diff --git a/chatBot/bot.js b/chatBot/bot.js index 6417cf4..b2844c3 100644 --- a/chatBot/bot.js +++ b/chatBot/bot.js @@ -42,7 +42,7 @@ loadCommands().then(commands => { if (message.type == "icon") return; console.log(message); - console.log(`Message received from ${message.name}@${peer} at ${new Date(message.timestamp).toLocaleTimeString()}: ${message.message}`); + console.log(`Message received from ${message.name}@${message.topic} at ${new Date(message.timestamp).toLocaleTimeString()}: ${message.message}`); // Check if the message starts with a command prefix if (message.message.startsWith('!')) { @@ -61,7 +61,7 @@ loadCommands().then(commands => { bot.on('onBotJoinRoom', () => { console.log("Bot is ready!"); - bot.sendMessage(process.env.ON_READY_MESSAGE); + bot.sendMessageToAll(process.env.ON_READY_MESSAGE); }); bot.joinChatRoom(process.env.LINKUP_ROOM_ID); diff --git a/chatBot/commands/8ball.js b/chatBot/commands/8ball.js index d9cb238..0fc287f 100644 --- a/chatBot/commands/8ball.js +++ b/chatBot/commands/8ball.js @@ -4,6 +4,6 @@ export default { handler: function(bot, args, message) { const responses = ['It is certain.', 'It is decidedly so.', 'Without a doubt.', 'Yes - definitely.', 'You may rely on it.', 'As I see it, yes.', 'Most likely.', 'Outlook good.', 'Yes.', 'Signs point to yes.', 'Reply hazy, try again.', 'Ask again later.', 'Better not tell you now.', 'Cannot predict now.', 'Concentrate and ask again.', 'Don\'t count on it.', 'My reply is no.', 'My sources say no.', 'Outlook not so good.', 'Very doubtful.']; const randomIndex = Math.floor(Math.random() * responses.length); - bot.sendMessage(responses[randomIndex]); + bot.sendMessage(message.peers, responses[randomIndex]); } }; \ No newline at end of file diff --git a/chatBot/commands/hello.js b/chatBot/commands/hello.js index 8bf16c2..1c0ee81 100644 --- a/chatBot/commands/hello.js +++ b/chatBot/commands/hello.js @@ -3,6 +3,6 @@ export default { description: 'Greet the user', handler: function(bot, args, message) { const userName = message.name; - bot.sendMessage(`Hello, ${userName}! How can I assist you today?`); + bot.sendMessage(message.peers, `Hello, ${userName}! How can I assist you today?`); } }; \ No newline at end of file diff --git a/chatBot/commands/ping.js b/chatBot/commands/ping.js index df71415..16f26a4 100644 --- a/chatBot/commands/ping.js +++ b/chatBot/commands/ping.js @@ -2,6 +2,6 @@ export default { handler: function(bot, args, message) { - bot.sendMessage('Pong!'); + bot.sendMessage(message.peers, 'Pong!'); } }; \ No newline at end of file diff --git a/chatBot/includes/chatroom.js b/chatBot/includes/chatroom.js new file mode 100644 index 0000000..89b2afe --- /dev/null +++ b/chatBot/includes/chatroom.js @@ -0,0 +1,10 @@ +class ChatRoom { + public ChatRoom(topic, peers) { + this.topic = topic; + this.peers = peers; + } + + +} + +export default ChatRoom; \ No newline at end of file diff --git a/chatBot/includes/client.js b/chatBot/includes/client.js index 6df8ff4..09964f5 100644 --- a/chatBot/includes/client.js +++ b/chatBot/includes/client.js @@ -32,10 +32,18 @@ class Client extends EventEmitter { }); } - sendMessage(message) { + sendMessage(roomPeers, message) { console.log('Bot name:', this.botName); const timestamp = Date.now(); // Generate timestamp - const peers = [...this.swarm.connections]; + const peers = [...this.swarm.connections].filter(peer => roomPeers.includes(peer.remotePublicKey.toString('hex'))); // We remove all the peers that arent included in a room + const data = JSON.stringify({name: this.botName, message, timestamp}); // Include timestamp + for (const peer of peers) peer.write(data); + } + + sendMessageToAll(message) { + console.log('Bot name:', this.botName); + const timestamp = Date.now(); // Generate timestamp + const peers = [...this.swarm.connections] const data = JSON.stringify({name: this.botName, message, timestamp}); // Include timestamp for (const peer of peers) peer.write(data); }