Как сделать из этого кода, бота для беседы в вк?
Написал код, но этот бот отвечает если только в лс группы писать. Чего не хватает для беседы?
import vk_api, vk
from vk_api.keyboard import VkKeyboard, VkKeyboardColor
from vk_api.utils import get_random_id
from vk_api.longpoll import VkLongPoll, VkEventType
vk_session = vk_api.VkApi(token='*********')
Lslongpoll = VkLongPoll(vk_session)
Lsvk = vk_session.get_api()
print("Bot ready!")
for event in Lslongpoll.listen():
if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:
if event.text == "тест":
if event.from_user:
Lsvk.messages.send(
user_id = event.user_id,
message = 'Тест',
random_id = get_random_id()
)
Ответы (1 шт):
Автор решения: xExnderxMxanx
→ Ссылка
Для создания ботов, используется другой Longpoll сервер, поэтому замени
from vk_api.longpoll import VkLongPoll, VkEventType
Lslongpoll = VkLongPoll(vk_session)
На
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
vk_session = vk_api.VkApi(token='*********', api_version='5.120')
Lslongpoll = VkBotLongPoll(vk=vk_session, group_id=*id группы виде числа*)
Longpoll сервер для ботов возвращает другой вид событий, чем обычный Longpoll, поэтому для того, чтобы бот мог отвечать и в лс и в беседы, нужно при отправке сообщения указывать не id пользователя, а id диалога, поэтому исправь
for event in Lslongpoll.listen():
if (event.type == VkBotEventType.MESSAGE_NEW and event.message.text):
if event.message.text.lower() == 'тест':
vk_session.method(
"messages.send", {
"peer_id": event.message.peer_id,
"message": 'Text',
"random_id": 0
}
)