@Vadim_Gornik

Почему бот вк не отвечает в лс?

Бот отвечает в беседе, но не отвечает в лс, в чем проблема? Помогите пожалуйста.
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
from vk_api.utils import get_random_id
token = 'токен'

vk_session = vk_api.VkApi(token = token)
session_api = vk_session.get_api()
longpoll = VkLongPoll(vk_session)

def sender(id, text):
	vk_session.method('messages.send', {'user_id': id, 'message' : text, 'random_id' : get_random_id()})
def sender_chat(peer_id, text):
	vk_session.method('messages.send', {'chat_id': peer_id, 'message' : text, 'random_id' : get_random_id()})


for event in longpoll.listen():
	if event.type == VkEventType.MESSAGE_NEW:
		if event.from_user:

			msg = event.text.lower()
			id = event.user_id
            
			if msg == 'бот лох':
				sender(id, 'bruh')
			if msg == 'тест':
				sender(id, 'и чё ты тестировать собрался?')
for event in longpoll.listen():
	if event.type == VkEventType.MESSAGE_NEW:
		if event.from_chat:

			msg = event.text.lower()
			peer_id = event.chat_id
            
			if msg == 'бот лох':
				sender_chat(chat_id, 'bruh')
			if msg == 'тест':
				sender_chat(chat_id, 'и чё ты тестировать собрался?')
  • Вопрос задан
  • 121 просмотр
Решения вопроса 1
WolfInChains
@WolfInChains
А зачем вы 2 раза слушаете логнпол
Уберите вот эти 2 строки перед прослушиванием лонгпола от чата
for event in longpoll.listen():
  if event.type == VkEventType.MESSAGE_NEW:
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@aveBHS
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
from vk_api.utils import get_random_id
token = 'токен'

vk_session = vk_api.VkApi(token = token)
session_api = vk_session.get_api()
longpoll = VkLongPoll(vk_session)

def sender(id, text):
  vk_session.method('messages.send', {'user_id': id, 'message' : text, 'random_id' : get_random_id()})
def sender_chat(peer_id, text):
  vk_session.method('messages.send', {'chat_id': peer_id, 'message' : text, 'random_id' : get_random_id()})


for event in longpoll.listen():
  if event.type == VkEventType.MESSAGE_NEW:
    if event.from_user:

      msg = event.text.lower()
      id = event.user_id
            
      if msg == 'бот лох':
        sender(id, 'bruh')
      if msg == 'тест':
        sender(id, 'и чё ты тестировать собрался?')

    elif event.from_chat:

      msg = event.text.lower()
      peer_id = event.chat_id
            
      if msg == 'бот лох':
        sender_chat(chat_id, 'bruh')
      if msg == 'тест':
        sender_chat(chat_id, 'и чё ты тестировать собрался?')
Ответ написан
Комментировать
libalex
@libalex
Backend / Android Developer (Java, Kotlin)
Возможно дело в том, что

С 15 февраля 2019 года методы секции messages по умолчанию будут доступны для вызова только с ключом доступа сообщества.

Если Вы планируете начать разработку мессенджера, после 15 февраля 2019 года для этого потребуется получить в Поддержке тестовый доступ, подразумевающий работу методов секции Messages с ключами администраторов Вашего Standalone-приложения.

Для получения полного доступа к пользовательскому Messages API приложению будет необходимо пройти модерацию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы