Longpoll vklongpoll vk ошибка

У Вас сразу несколько ошибок в коде:

  1. Вы пытаетесь импортировать неопределённый класс VkLongPol. Но я не буду заострять на этом внимание, потому что он Вам вообще не нужен.

Вы авторизуетесь по ключу сообщества, поэтому должны использовать модуль vk_api.bot_longpoll.

  1. Вы не передаёте параметр group_id при подключении к
    longPoll серверу.
  2. Вы пытаетесь вызвать несуществующий метод APImesseg.send.
    Скорее всего, Вы опечатались и имели в виду messages.send.

Пример:

from vk_api import VkApi
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
from vk_api.utils import get_random_id


def main() -> None:
    vk_session = VkApi(token='[token]')
    long_poll = VkBotLongPoll(vk_session, '[group_id]')
    vk = vk_session.get_api()

    for event in long_poll.listen():
        if event.type == VkBotEventType.MESSAGE_NEW:
            peer_id = event.obj['peer_id']
            message = event.obj['text'].lower()

            if message == 'привет':
                vk.messages.send(
                    peer_id=peer_id,
                    message='Привет!',
                    random_id=get_random_id(),
                )


if __name__ == '__main__':
    main()

Не забудьте заменить [token] и [group_id] на свои значения!


Данный код отвечает на сообщение привет в любом регистре аналогичным Привет!.

Хотелось бы отметить то, что я использую peer_id для отправки сообщений. Это универсальный идентификатор, который позволяет отвечать как в беседах, так и в ЛС.

Костыль random_id() я заменил аналогичной функцией vk_api.utils.get_random_id.

Также данный код, в отличие от Вашего, следует стандартам PEP-8.

Ошибка:
NameError: name ‘VkLongPoll’ is not defined

Код:

import requests
import vk_api

vk_session = vk_api.VkApi(token='big yellow Cocks')

longpoll = VkLongPoll(vk_session)
vk = vk_session.get_api()
for event in longpoll.listen():
    if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:
        if event.text == 'Первый вариант фразы' or event.text == 'Второй вариант фразы': #Если написали заданную фразу
            if event.from_user: #Если написали в ЛС
                vk.messages.send( #Отправляем сообщение
                    user_id=event.user_id,
                    message='Ваш текст'
		)
            elif event.from_chat: #Если написали в Беседе
                vk.messages.send( #Отправляем собщение
                    chat_id=event.chat_id,
                    message='Ваш текст'
		)

У меня возникла проблема при использовании User Long Poll API.

import vk_api
from vk_api.longpoll import VkLongPoll

login, password = 'login', 'pass'
vk_session = vk_api.VkApi(login, password)
vk_session.auth(token_only=True)

longpoll = VkLongPoll(vk_session)

for event in longpoll.listen():
    print(event.type)

При запуске возникает следующая ошибка:

Traceback (most recent call last):
  File "main.py", line 9, in <module>
    longpoll = VkLongPoll(vk_session)
  File "/usr/local/lib/python3.6/dist-packages/vk_api-11.4.0-py3.6.egg/vk_api/longpoll.py", line 503, in __init__
  File "/usr/local/lib/python3.6/dist-packages/vk_api-11.4.0-py3.6.egg/vk_api/longpoll.py", line 513, in update_longpoll_server
  File "/usr/local/lib/python3.6/dist-packages/vk_api-11.4.0-py3.6.egg/vk_api/vk_api.py", line 636, in method
vk_api.exceptions.ApiError: [15] Access denied: no access to call this method

Проблема в аккаунте или в коде?

Вот код. Вот что выдает. не понимаю что эта ошибка значит и как ее решить.
Причем при ручном подключении без использования модуля vk_api все подключается прекрасно.

from vk_api.longpoll import VkLongPoll
import vk_api
import requests
token = "использован_access_token_странички_пользователя_вк"
v = 5.103
vk_session = vk_api.VkApi(token=token, api_version=v)
session_api = vk_session.get_api()
longpoll = VkLongPoll(vk = session_api)
Traceback (most recent call last):
  File "C:Program FilesJetBrainsPyCharm Community Edition 2020.1pluginspython-cehelperspydevpydevd.py", line 1438, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "C:Program FilesJetBrainsPyCharm Community Edition 2020.1pluginspython-cehelperspydev_pydev_imps_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"n", file, 'exec'), glob, loc)
  File "C:/Users/Иван/PycharmProjects/vk-tg-bot/main.py", line 8, in <module>
    longpoll = VkLongPoll(vk = session_api)
  File "C:UsersИванPycharmProjectsvk-tg-botvenvlibsite-packagesvk_apilongpoll.py", line 517, in __init__
    self.update_longpoll_server()
  File "C:UsersИванPycharmProjectsvk-tg-botvenvlibsite-packagesvk_apilongpoll.py", line 531, in update_longpoll_server
    response = self.vk.method('messages.getLongPollServer', values)
TypeError: __call__() takes 1 positional argument but 3 were given

Process finished with exit code 1

Код бота:

import vk_api

from vk_api.longpoll import VkLongPoll, VkEventType

from vk_api.keyboard import VkKeyboard, VkKeyboardColor

from datetime import datetime, timedelta

import time

# установка токена и id группы

token = ‘vk1.a.JnY25aJ28uh35wTwx3SmvQyxlcTBEYu6xuYnUf6kPC5gNyjo-GkuEjfUoFl9KLGUBN-ZXbD2HjcOL0QMGn_LvBNB8Zr9FEwIcOPk9H3sAcaa3GnldaO-oi95vPvgFCQR_lCpOlKw9E73yIHpp502RzjuA’

group_id = ‘217447654’

try:

vk_session = vk_api.VkApi(token=token)

longpoll = VkLongPoll(vk_session, group_id)

except vk_api.AuthError as error_msg:

print(error_msg)

quit()

# инициализация переменных

users = {}

admin_id = ‘282381901’

# определение функций для отправки сообщений и сохранения информации о пользователе

def send_message(peer_id, text, keyboard=None):

vk_session.method(‘messages.send’, {‘peer_id’: peer_id, ‘message’: text, ‘random_id’: 0, ‘keyboard’: keyboard})

def add_user(user_id, phone, date):

users[user_id] = {‘phone’: phone, ‘date’: date}

# создание клавиатуры

keyboard = VkKeyboard(one_time=True)

keyboard.add_button(‘Записаться’, color=VkKeyboardColor.POSITIVE)

keyboard.add_button(‘Отменить запись’, color=VkKeyboardColor.NEGATIVE)

# цикл обработки сообщений

for event in longpoll.listen():

if event.type == VkEventType.MESSAGE_NEW:

# обработка сообщения от пользователя

if event.text == ‘Начать’:

send_message(event.peer_id, ‘Добро пожаловать! Хотите записаться?’, keyboard=keyboard.get_keyboard())

elif event.text == ‘Записаться’:

send_message(event.peer_id, ‘Введите дату и время в формате ДД.ММ.ГГГГ ЧЧ:ММ’)

users[event.peer_id] = {‘state’: ‘date’}

elif event.text == ‘Отменить запись’:

if event.peer_id in users:

del users[event.peer_id]

send_message(event.peer_id, ‘Ваша запись отменена’)

else:

send_message(event.peer_id, ‘У вас нет активной записи’)

elif event.peer_id in users and users[event.peer_id][‘state’] == ‘date’:

try:

date = datetime.strptime(event.text, ‘%d.%m.%Y %H:%M’)

users[event.peer_id][‘date’] = date

users[event.peer_id][‘state’] = ‘phone’

send_message(event.peer_id, ‘Введите Ваш номер телефона: ‘)

except ValueError:

send_message(event.peer_id, ‘Некорректный формат даты и времени, попробуйте еще раз’)

elif event.peer_id in users and users[event.peer_id][‘state’] == ‘phone’:

try:

phone = int(event.text)

add_user(event.peer_id, phone, users[event.peer_id][‘date’])

send_message(event.peer_id, ‘Вы успешно записались на {} на номер {}’.format(users[event.peer_id][‘date’].strftime(‘%d.%m.%Y %H:%M’), phone))

del users[event.peer_id]

except ValueError:

send_message(event.peer_id, ‘Некорректный формат номера телефона, попробуйте еще раз’)

# обработка сообщения от администратора

elif event.peer_id == admin_id and event.text == ‘Записи’:

if len(users) > 0:

message = ‘Список записей:nn’

for user_id, info in users.items():

message += ‘Пользователь ID {}nДата и время: {}nНомер телефона: {}nn’.format(user_id, info[‘date’].strftime(‘%d.%m.%Y %H:%M’), info[‘phone’])

send_message(admin_id, message)

else:

send_message(admin_id, ‘Список записей пуст’)

# отправка уведомления за день до записи

for user_id, info in users.items():

if (info[‘date’] — datetime.now()).days == 1:

send_message(user_id, ‘Напоминаем, что завтра в {} у вас запись. Номер телефона для связи: {}’.format(info[‘date’].strftime(‘%H:%M’), info[‘phone’]))

Выдает ошибку:

C:Program FilesSublime Text 3Projects>4567.py

Traceback (most recent call last):

File «C:Program FilesSublime Text 3Projects4567.py», line 35, in <module>

for event in longpoll.listen():

File «C:UsersADMINAppDataLocalProgramsPythonPython311Libsite-packagesvk_apilongpoll.py», line 619, in listen

for event in self.check():

^^^^^^^^^^^^

File «C:UsersADMINAppDataLocalProgramsPythonPython311Libsite-packagesvk_apilongpoll.py», line 558, in check

timeout=self.wait + 10

~~~~~~~~~~^~~~

TypeError: can only concatenate str (not «int») to st

Понравилась статья? Поделить с друзьями:
  • Lol ошибка подключения к серверу
  • Lol ошибка невозможно установить
  • Lol ошибка не удалось подключиться
  • Lol ошибка инициализации графического устройства
  • Lol критическая ошибка