chat_id как я понимаю один, поэтому храните message_id, пока кто то не возьмет заказ. Далее зовите editMessageText chat_id message_id и нужным text
upd...Если чаты разные, можно реализовать подобным способом:
var Offer = function(_chats, _task){
this.sendedTo = [];
this.user = '';
this.task = _task;
this.tMsg = `Заказ #${_task.id}\n${_task.info}\nСтоимость: ${_task.cost}`;
for (chat of _chats){
bot.sendMessage({
chat_id: chat,
text: this.tMsg,
reply_markup: {
text: 'беру',
callback_data: _task.id
}
}).then((result)=>this.sendedTo.push({id: result.chat, msg: result.message_id}));
}
}
bot.addUpdateListener((upd)=>{
function offerComplete(chat, msg){
bot.editMessageText({
chat_id: chat.id,
message_id: chat.msg,
text: msg,
reply_markup: null
});
}
if ('callback_data_id' in upd){
if (let offer = offers.find(i=>i.task.id === upd.data)){
if (offer.user === '' || upd.time < offer.time){
offer.user = upd.from.id;
offer.time = upd.time;
db.updateOfferInfo({telegramUserId: upd.from.id});
let msg = `\nЗаказ принял: @${upd.from.username}`;
if (/Заказ принял/i.test(offer.tMsg)) offer.tMsg=offer.tMsg.replace(/Заказ принял:\s@.*/i, msg);
else offer.tMsg += msg;
for (chat of offer.sendedTo){
offerComplete(chat, offer.tMsg);
}
}
else {
let chat = offer.sendedTo.find(i=>i.id === upd.chat);
offerComplete(chat, offer.tMsg);
}
}
}
});
var offers = [];
offers.push(new Offer([
...chats_id
],{
info: "Some offer for sales",
cost: 1000,
id: id_from_db
}));
очевидно, что реализация бота мне не известна, поэтому написал согласно
api.telegram