@skands757

Не работает бот ВКонтакте, что делать?

Есть такой скрипт бота для ВКонтакте на Python:
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType

# авторизация в ВК
vk_session = vk_api.VkApi(token='токен_группы')
vk = vk_session.get_api()
longpoll = VkLongPoll(vk_session)

# количество попыток
attempts_left = 100

# обрабатываем сообщения, оставленные под постами в группе
for event in longpoll.listen():
    if event.type == VkEventType.WALL_REPLY_NEW:
        # id поста, к которому был оставлен комментарий
        post_id = event.wall_id

        # текст комментария
        comment_text = event.text.lower()

        # если пользователь написал "крутить" и осталось хотя бы одна попытка
        if comment_text == 'крутить' and attempts_left > 0:
            # уменьшаем количество попыток
            attempts_left -= 1

            # отвечаем пользователю
            vk.wall.createComment(
                owner_id='-группа',  # id группы со знаком "-"
                post_id=post_id,
                message=f'В этот раз вам не повезло. Осталось {attempts_left} попыток.'
            )

            # если количество попыток равно 20, то отвечаем пользователю о его победе
            if attempts_left == 20:
                vk.wall.createComment(
                    owner_id='-группа',
                    post_id=post_id,
                    message='Поздравляем, вы победили. Приз можно получить в личных сообщениях группы.'
                )

        # если пользователь отправил сообщение в личные сообщения группы
        elif event.type == VkEventType.MESSAGE_NEW:
            # id пользователя
            user_id = event.user_id

            # получаем последние n комментариев, оставленных под постом
            n = 20  # в данном случае 20, т.к. это максимальное количество попыток
            comments = vk.wall.getComments(owner_id='-группа', post_id=post_id, count=n)['items']

            # проверяем, была ли у данного пользователя победа
            won = False
            for comment in comments:
                if comment['from_id'] == vk.groups.getById()[0]['id'] and 'поздравляем, вы победили' in comment['text'].lower():
                    won = True

            # если пользователь не был победителем, то отвечаем ему
            if not won:
                vk.messages.send(
                    user_id=user_id,
                    message='Извините, вы не являетесь победителем.'
                )


Пытаюсь запустить на Termux

Выдает такую ошибку
Traceback (most recent call last):
  File "/storage/emulated/0/Music/bot.py", line 14, in <module>
    if event.type == VkEventType.WALL_REPLY_NEW:
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/data/com.termux/files/usr/lib/python3.11/enum.py", line 786, in __getattr__
    raise AttributeError(name) from None
AttributeError: WALL_REPLY_NEW
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
Нет такого свойства в этом классе: https://vk-api.readthedocs.io/en/latest/_modules/v...
Зато оно есть в другом: https://vk-api.readthedocs.io/en/latest/_modules/v...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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