ВК бот не отвечает на сообщения
Бот не отвечает на сообщения.
Зарегистрировал бота как сообщество, Long Poll включил, права администратора в беседе дал, при создании ключа также выдал полный доступ. В терминале приходит сообщение "тест", то есть он получает сообщения, но не отвечает.
Также добавил работу с Google таблицами, в терминале всё также работает.
Код:
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import vk_api
from datetime import datetime
import random
import time
import data
import httplib2
import apiclient.discovery
from oauth2client.service_account import ServiceAccountCredentials
CREDENTIALS_FILE = 'creds.json'
spreadsheet_id = ''
credentials = ServiceAccountCredentials.from_json_keyfile_name(
CREDENTIALS_FILE,
['https://www.googleapis.com/auth/spreadsheets',
'https://www.googleapis.com/auth/drive'])
httpAuth = credentials.authorize(httplib2.Http())
service = apiclient.discovery.build('sheets', 'v4', http = httpAuth)
vk_session = vk_api.VkApi(token='')
session_api = vk_session.get_api()
longpoll = VkBotLongPoll(vk_session, 193738804)
def send_message(session_api, peer_id, message=None):
session_api.messages.send(peer_id=event.obj.peer_id, message=message, random_id=random.randint(-2147483648, +2147483648))
while True:
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW:
print('тест')
if event.from_chat:
if event.obj.text == '/рн':
send_message(session_api,peer_id=event.obj.peer_id, message='test')
values_week = service.spreadsheets().values().get(
spreadsheetId=spreadsheet_id,
range='AW2:AW36',
majorDimension='COLUMNS'
).execute()
send_message(session_api,peer_id=event.obj.peer_id, message=values_week)
Ответы (1 шт):
Автор решения: nomnoms12
→ Ссылка
В функции send_message Вы игнорируете аргумент peer_id, который к тому же неправильно получаете.
peer_id хранится в event.obj['message']['peer_id'].
Long Poll v5.103
Пример:
from vk_api.utils import get_random_id
def send_message(api, peer_id, message):
api.messages.send(
peer_id=peer_id,
message=message,
random_id=get_random_id(),
)
...
send_message(api, peer_id=event.obj['message']['peer_id'], message='Test message')