Бот не видит сообщения в б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) #Вывод ошибки, если она появляется
Извиняюсь за табуляцию, пришлось писать с телефона.
Должно Вам помочь