Java [NodeJS VK API] Вопрос

кис кис кис мяу гав

Новичок
Автор темы
4
0
Всем привет!
Вопрос следующий: как грамотно написать обработчик входящих сообщений в ЛС сообщества?

Есть функция, которая инициализирует ID пользователя по ссылке:
Код:
async function getterUser (user) {
    const resource = await resolveResource({
        access_token: db.user,
       api: vk.api,
      resource: user
    });
    if(resource.type == 'user') return resource.id
    else return 'err';
    
    }

Нужно сделать так, чтобы бот реагировал на входящие сообщения, в которых пользователь отправил ссылку на пользователя. Как это правильно впихнуть сюда?
Код:
vk.updates.on('message_new', async msg =>{
    if(msg.chatId) return
          
    
    
})
 

Hideme Flow

Известный
573
199
Попробуй так
JavaScript:
const { resolveResource } = require('vk-io'); // Подключаем функцию resolveResource из vk-io

vk.updates.on('message_new', async (msg) => {
    if (msg.isChat) return; // Пропускаем сообщения из чатов

    const messageText = msg.text;

    // Регулярное выражение для поиска ссылок на пользователей
    const userLinkPattern = /(?:https?:\/\/)?(?:vk\.com\/)([a-zA-Z0-9_]+)/i;
    const found = messageText.match(userLinkPattern);

    if (found) {
        const userLink = found[1]; // Получаем часть после "vk.com/"
       
        try {
            const userId = await getterUser(userLink); // Используем функцию getterUser для получения ID
           
            if (userId !== 'err') {
                msg.send(`ID пользователя: ${userId}`);
            } else {
                msg.send('Не удалось найти пользователя по данной ссылке.');
            }
        } catch (error) {
            console.error('Ошибка при обработке ссылки на пользователя:', error);
            msg.send('Произошла ошибка при обработке ссылки.');
        }
    } else {
        msg.send('Ссылка на пользователя не найдена.');
    }
});

// Функция для получения ID пользователя по ссылке
async function getterUser(user) {
    try {
        const resource = await resolveResource({
            access_token: db.user,
            api: vk.api,
            resource: user
        });
        if (resource.type === 'user') return resource.id;
        else return 'err';
    } catch (error) {
        console.error('Ошибка при получении ресурса:', error);
        return 'err';
    }
}
Мы добавляем обработчик для входящих сообщений, проверяем текст на наличие ссылки, и если ссылка присутствует, вызываем getterUser.
В этом примере предполагается, что ссылки на пользователей могут быть в формате https://vk.com/id12345 или https://vk.com/username.