@vizions

Что делать если у пользователя стоит запрет на пересылку (ТЕЛЕГРАММ БОТ NODE JS)?

Всем привет, вопрос по тг ботам (у меня есть бот обратной связи, его смысл такой что пользователь пишет боту - сообщение попадает в группу и кто-то из группы может реплаем ответить пользователю (и так пользователь общается с админом) т.е. админы все кто в группе состоит), и проблема такая что у многих пользователей стоит запрет на пересылку сообщений, а из группы пользователю идет как раз эта пересылка и следовательно смс не доходит до пользователя т.к. при пересылке нет нужных полей пользователя (например id, и есть только поле forward_sender_name ) , мне нужно как-то обходить этот момент, id пользователя я получаю только в случае если пользователь пишет в группу (В коде использую библиотеку Telegraf) (прикладываю несколько вложений ответов)

(ПОЛЬЗОВАТЕЛЬ НАПИСАЛ БОТУ) 62a32702e2a61972621312.jpeg
(ИЗ ГРУППЫ ОТВЕТИЛИ ПОЛЬЗОВАТЕЛЮ ЧЕРЕЗ РЕПЛАЙ) 62a3272facdae980334640.jpeg

let isAdmin = userId => {
    return userId === admin;
};
let forwardToAdmin = ctx => {
    if (isAdmin(ctx.message.from.id)) {
        ctx.reply(replyText.replyWrong);
    } else {
        if (ctx.chat.id === admin) {
            return '';
        }
        ctx.forwardMessage(admin, ctx.from.id, ctx.message.id);
    }
};

function addMessageListeners () {
    bot.start(ctx => {
        ctx.reply(isAdmin(ctx.message.from.id) ? replyText.helloAdmin : replyText.helloUser);
    });
    bot.on('message', ctx => {
        if (ctx.message.reply_to_message && ctx.message.reply_to_message.forward_from) {
            ctx.telegram.sendCopy(ctx.message.reply_to_message.forward_from.id, ctx.message);
        } else {
            forwardToAdmin(ctx);
        }
    });
}
  • Вопрос задан
  • 547 просмотров
Пригласить эксперта
Ответы на вопрос 1
@robprane
Единственное универсальное решение - записывать id пользователя вместе с id сообщения. Когда админы будут отвечать на сообщение, сервер будет по его id доставать пользователя и писать ему.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы