Vk бот на Python не видит сообщения в беседах
Вечер добрый. Сегодня дорабатывая своего бота, столкнулся с такой проблемой, что он не замечает сообщения в сторонних беседах, где сообщество не является создателем ( без синей галки ). Начал изучать данный вопрос более подробно, наткнулся на библиотеку vk_api.bot_longpool, переписал код под неё, и если при библиотеке vk_api.longpool бот не отвечал на сообщения чисто в беседах, то при vk_api.bot_longpool он перестал отвечать везде, даже в личных сообщениях. Ниже приложу код с библиотекой vk_api.longpool и с vk_api.bot_longpool
Код с библиотекой vk_api.longpool:
# -*- coding: utf8 -*-
import vk_api
import time
import random2
import json
from config import config_pass
from vk_api.longpoll import VkLongPoll, VkEventType
from vk_api.keyboard import VkKeyboard, VkKeyboardColor
from enum import Enum
token = config_pass
bh = vk_api.VkApi(token=token)
give = bh.get_api()
longpoll = VkLongPoll(bh)
def send(id, text):
bh.method('messages.send', {'user_id' : id, 'message' : text, 'random_id': 0})
def sendchat(id, text):
bh.method('messages.send', {'peer_id' : id, 'message' : text, 'random_id': 0})
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW:
if event.to_me:
message = event.text.lower()
id = event.user_id
chat_id = event.peer_id
if message == 'начать':
send(id, '123')
if message == '!бот':
sendchat(chat_id, '123')
Код с библиотекой vk_api.bot_longpool:
# -*- coding: utf8 -*-
import vk_api
import time
import random2
import json
from config import config_pass
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
from vk_api.keyboard import VkKeyboard, VkKeyboardColor
from enum import Enum
token = config_pass
bh = vk_api.VkApi(token=token)
give = bh.get_api()
longpoll = VkBotLongPoll(bh, group_id='айди моей группы')
def send(id, text):
bh.method('messages.send', {'user_id' : id, 'message' : text, 'random_id': 0})
def sendchat(id, text):
bh.method('messages.send', {'peer_id' : id, 'message' : text, 'random_id': 0})
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW:
if event.to_me:
message = event.text.lower()
id = event.user_id
chat_id = event.peer_id
if message == 'начать':
send(id, '123')
if message == '!бот':
sendchat(chat_id, '123')
При использовании первого варианта кода - бот не отвечает только в беседах, при использовании второго варианта - бот не отвечает нигде. Надеюсь на любой фидбек :D
Ответы (1 шт):
хоть и поздновато, но скажу:
event.text
меняется на
event.obj['message']['text']
то же самое с пир_ид, там будет event.obj['message']['peer_id']