Как реализовать работу ВК бота и в ЛС, и в беседах?
Необходимо написать бота, который умеет работать и в ЛС, и в беседах. Поначалу я использовал вот такой код:
import vk_api
from vars import main_token
from vk_api.longpoll import VkLongPoll, VkEventType
def sender(id, text):
vk_session.method ('messages.send', {'user_id' : id, 'message' : text, 'random_id' : 0})
def peer_sender(id, text):
vk_session.method ('messages.send', {'peer_id' : id, 'message' : text, 'random_id' : 0})
# Авторизация как сообщество
vk_session = vk_api.VkApi(token = main_token)
session_api = vk_session.get_api()
longpoll = VkLongPoll(vk_session)
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW:
if event.to_me and event.from_user:
msg = event.text.lower()
id = event.user_id
if msg in ('привет','hello','hi','start','старт','команды'):
sender(id, commands)
elif msg == 'тест':
sender(id, 'Тест прошел успешно, бот работает!')
else:
sender(id, 'К сожалению, я не знаю такой команды... ')
elif event.to_me and event.from_chat:
idz = event.peer_id
msg = event.text.lower()
if msg == 'тест':
peer_sender(idz, 'Тест прошел успешно, бот работает в чате!')
Этот код хорошо работал в ЛС, но совсем не реагировал на сообщения в беседе (админка выдана ) После я выяснил, что при авторизации как сообщество нужно использовать VkBotLongPoll
Я создал другой вариант кода:
from vk_api import VkApi
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
from vk_api.utils import get_random_id
vk_session = VkApi(token=main_token)
longpoll = VkBotLongPoll(vk_session, 'id сообщества')
vk = vk_session.get_api()
def sender(id, text):
vk_session.method ('messages.send', {'user_id' : id, 'message' : text, 'random_id' : 0})
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW and event.from_chat:
vk.messages.send(random_id=get_random_id(), peer_id=event.obj['peer_id'], message='Test message')
elif event.type == VkBotEventType.MESSAGE_NEW and event.from_user:
sender(id, 'Test message')
К сожалению, этот код работает в беседе, но не работает в ЛС
Отсюда, в итоге, вопрос: как запустить бота в ЛС и беседе одновременно?
Ответы (1 шт):
Автор решения: xExnderxMxanx
→ Ссылка
Для отправки сообщения в ЛС, используй такой же метод, как и для бесед. В данном случаи разницы нет, так как peer_id это id диалога