@fjiegs

Как сделать логгер вк в дс?

Сделал логгер для вконтакте который перекидывает сообщения на канал дискорда, только проблема в том что логгер не видит мои сообщения а только сообщения собеседника и работает только в лс. Как можно сделать его для определенное беседы чтобы другие не затрагивал?
const { VK } = require('vk-io');
const requst = require('request');
const moment = require('moment');

const vk = new VK({
    token: 'Токен вк'
});

const bot = async ctx => {
    const userdata = await vk.api.users.get({user_ids: ctx.senderId, fields: "photo_50"});
    const data = ctx.message.date;
    const time = moment(data * 1000).utc().format('YYYY-MM-DDTHH:mm:ss.SSS');
    return {
        "username": "Имя бота",
        "embeds": [
            {
                "title": "Название записи",
                "url": "https://vk.com/write" + ctx.senderId,
                "color": 2451211,
                "timestamp": `${time}Z`,
                "author": {
                    "name": userdata[0].first_name + ' ' + userdata[0].last_name,
                    "url": "https://vk.com/gim191140619?sel=" + ctx.senderId,
                    "icon_url": userdata[0].photo_50
                },
                "fields": [
                    {
                        "name": "Сообщение",
                        "value": ctx.text
                    }
                ]
            }
        ]
    }
}
vk.updates.on('message', async ctx => {
    if(ctx.isOutbox || !ctx.is('message')) return;
    if(!ctx.isChat || ctx.isFromGroup) {
        let req = requst({
                method: "POST",
                uri: 'Вебхук дискорд бота',
                body: await bot(ctx),
                json: true
            },
            function (err, req1, resp) {
                if(!resp) return;
                console.log(resp);
            }
        )
        }
    });


vk.updates.start()
    .then(() => console.log('Bot has been started'));

62ebe964eef84146898877.png
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
Ostrovsky_Miroslav
@Ostrovsky_Miroslav
Понравился ответ? Отметь решением!
Юзайте событие / ивент - message_new, во первых.

Во вторых, isOutbox - проверяет, написал ли сообщение отправитель.

В третьих, зачем ставить !ctx.isChat, если вам нужно что-бы работало на определенную беседу?

Существует «chatId - узнать ID беседы или для других целей». Что-бы проверить в какой беседе должно отправляться, сделайте условие на это:

if (ctx.chatId !== CHATID) return;

Где CHATID - вставьте ID беседы.

const { VK } = require('vk-io');
const requst = require('request');
const moment = require('moment');

const vk = new VK({
    token: 'Токен вк'
});

const bot = async ctx => {
    const userdata = await vk.api.users.get({user_ids: ctx.senderId, fields: "photo_50"});
    const data = ctx.message.date;
    const time = moment(data * 1000).utc().format('YYYY-MM-DDTHH:mm:ss.SSS');
    return {
        "username": "Имя бота",
        "embeds": [
            {
                "title": "Название записи",
                "url": "https://vk.com/write" + ctx.senderId,
                "color": 2451211,
                "timestamp": `${time}Z`,
                "author": {
                    "name": userdata[0].first_name + ' ' + userdata[0].last_name,
                    "url": "https://vk.com/gim191140619?sel=" + ctx.senderId,
                    "icon_url": userdata[0].photo_50
                },
                "fields": [
                    {
                        "name": "Сообщение",
                        "value": ctx.text
                    }
                ]
            }
        ]
    }
}
vk.updates.on('message_new',  async ctx => {
    if(ctx.isOutbox || !ctx.is('message')) return;
    if(ctx.chatId === CHATID || ctx.isFromGroup) {
        let req = requst({
                method: "POST",
                uri: 'Вебхук дискорд бота',
                body: await bot(ctx),
                json: true
            },
            function (err, req1, resp) {
                if(!resp) return;
                console.log(resp);
            }
        )
        }
    });


vk.updates.start()
    .then(() => console.log('Bot has been started'));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы