привет я делаю простой чатик но с одной фишкой что отвечать на сообщения людям можно через telegram бота, так вот такая проблема что когда я пишу ответ с телеграма сообщение отправляется всем пользователям которые соеденины, и я уже многое испробовал но вот что у меня получилось
bot.start((ctx) => {
console.log(ctx.update.message.chat)
ctx.reply('Welcome')
})
wss.on('error', err => {
console.log(err)
})
wss.on('connection', async ws => {
const newConnection = {
uid: uid(16),
connection: ws
}
clients.add(newConnection)
bot.command('send', (ctx) => {
const telegramMessage = ctx.message.text.replace('/send', '')
const queryConnectionUID = telegramMessage.substr(telegramMessage.indexOf('uid: ') + 5, telegramMessage.indexOf(';') - 6)
ctx.reply(queryConnectionUID)
clients.forEach(client => {
if (client.uid === queryConnectionUID) {
client.connection.send(JSON.stringify({
action: 'sendMessage',
agent: 'telegram',
data: {
result: true,
phoneNumber: '+7(777)-777-77-77',
userName: 'Administrator',
message: telegramMessage.substr(telegramMessage.indexOf(';') + 2)
}
}))
} else {
ctx.reply(`uid is wrong; ${client.uid} != ${queryConnectionUID}`)
}
})
})
bot.launch()
ws.on('message', async msg => {
msg = JSON.parse(msg)
const data = msg.data
if (msg.action === 'check') {
bot.telegram.sendMessage('-32432344',
`new message sended from\nuid: ${newConnection.uid}\nname: ${data.userName}\nphone: ${data.phoneNumber}\nmessage:\n ${data.message}`
)
}
else if (msg.action === 'message') {
const result = await mongoMessages.updateOne({ phoneNumber: data.phoneNumber }, {$push: { messages: data.message }})
ws.send(JSON.stringify({
action: 'sendMessage',
agent: 'server',
data: {
result: result,
phoneNumber: data.phoneNumber,
userName: data.userName,
message: data.message
}
}))
}
})
ws.on('close', () => {
clients.delete(ws)
console.log(`deleted: ${ws}`, clients)
})
})
bot.launch()
вот это основной кусок кода, я думаю что я слишком намудрил и думаю что это можно сделать проще, основная проблема в том что при создании соединения я даю ему uid а при disconnect я не знаю какое соединение из массива удалить ведь на сколько я понимаю disconnect ничего не возвращает