Бот не видит сообщения в бeседе

Я хочу сделать чат-бота. В сообщениях группы всё работает корректно, а при добавлении в беседу, даже сообщения не видит.

import vk_api
import re
from bs4 import BeautifulSoup
import requests
from vk_api import VkUpload, VkApi
from vk_api.longpoll import VkLongPoll, VkEventType
from random import randint
from bs4 import BeautifulSoup
import requests

vk = VkApi(token=token)
upload = VkUpload(vk)
session = requests.Session()
longpoll = VkLongPoll(vk)

def write_msg(user_id, message):
    vk.method('messages.send', {'user_id': user_id, 'message': message,'random_id':randint(1e16, 1e18)})
    
def write_msg_to_chat(chat_id, message):
    vk.method('messages.send', {'chat_id': chat_id, 'message': message,'random_id':randint(1e16, 1e18)})



for event in longpoll.listen():
    if event.type == VkEventType.MESSAGE_NEW:
        if event.text == 'привет':
            if event.to_me: 
                write_msg(event.user_id,'хай')
            elif event.from_chat:
                vk.messages.send(peer_id=event.obj.peer_id or event.message.peer_id, message='хай')
                
        print(event.text)

Ответы (1 шт):

Автор решения: Komedik

Извиняюсь за выражение, но у Вас довольно неудачный код. Возможно, Вы не очень хорошо знаете Python или не до конца поняли vk-api.

Сейчас я Вам расскажу

Ну, во-первых, в функции send_msg_to_chat нужно указать: "peer_id" : chat_id, но не "chat_id" : chat_id".

Условие "от кого" лучше указывать первее, а проверку сообщения внутри него.

Также Вы не указали user_id и chat_id

Сейчас напишу код, который расписан по правилам:

    while True: #Нужно, чтобы функция была вечной
         try:
             for event in longpoll.listen(): #Смотрим все возможные события
                  if event.type == VkEventType.MESSAGE_NEW:
                      if event.to_me: #Это условие обозначает не что сообщение пришло в лс, а если отправлено сообществу, а не от него. 
                          msg = event.text #Получение сообщения
                          msg_l = msg.lower() #Получаем сообщение в нижнем регистре, чтобы можно было ставить на него условие
                          user_id = event.user_id #id пользователя
                          chat_id = event.chat_id (event.peer_id) #Попробуйте 2 варианта, точно их не помню. id беседы

                          if event.from_user or event.from_chat: #Если отправлено в лс или из беседы:
                             if msg_l == "привет": #Проверка сообщения
                                  if event.from_user: #Если в лс
                                      write_msg(user_id, "Хай!") #Пишем в лс
                                  if event.from_chat: #Если в беседе:
                                      write_msg_to_chat(chat_id, "Хай!" #Пишем в беседе   
          except Exception as error:
              print(error) #Вывод ошибки, если она появляется

Извиняюсь за табуляцию, пришлось писать с телефона.

Должно Вам помочь

→ Ссылка