Бот не работает в беседе ВК

ВКонтакте при ответе выдаёт ошибку 901 - недостаточно прав. Сам бот не получает сообщения из бесед, хотя такие права у него есть. Задача бота простейшая - отправлять два сообщения в сутки.

import requests
import time
import json
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
    
# Токены и идентификаторы
VK_TOKEN = 'token'  # Замените на ваш токен ВКонтакте
GROUP_ID = 'id'  # Замените на ID вашего сообщества ВКонтакте

def send_message_vk(message, user_id):
    """Отправляет сообщение пользователю ВКонтакте."""
    print(f"Отправка сообщения: {message}  в  {user_id}")
    url = f"https://api.vk.com/method/messages.send?access_token={VK_TOKEN}&user_id={user_id}&message={message}&random_id=0&v=5.119"
    response = requests.get(url)
    print(f"Ответ ВКонтакте: {response.json()}")
    return response.json()

def send_daily_greeting(message):
    """Отправляет приветствие в ВК-беседу."""
    try:
        send_message_vk(message, GROUP_ID)
        print("Приветствие отправлено в ВК")
    except Exception as e:
        print(f"Ошибка при отправке приветствия: {e}")

def send_test_message(message):
    """Отправляет тестовое сообщение."""
    try:
        send_message_vk(message, GROUP_ID)
        print("Тестовое сообщение отправлено!")
    except Exception as e:
        print(f"Ошибка при отправке тестового сообщения: {e}")

vk = vk_api.VkApi(token=VK_TOKEN)
longpoll = VkLongPoll(vk)

while True:
    # Отправка приветствия утром
    now = time.localtime()
    if now.tm_hour == 8:
        vk.method('messages.send', {'user_id': GROUP_ID, 'message': "Доброе утро!", 'random_id': 0, 'v': '5.119'})
        time.sleep(3600)  # Ждем 1 час для избежания ограничения API
    # Отправка приветствия вечером
    if now.tm_hour == 23:
        vk.method('messages.send', {'user_id': GROUP_ID, 'message': "Спокойной ночи!", 'random_id': 0, 'v': '5.119'})
        time.sleep(3600)  # Ждем 1 час для избежания ограничения API

    # Проверка на команду "тест"
    command = input("Введите команду 'тест' для отправки тестового сообщения: ")
    if command.startswith("тест"):
        test_message = command[5:-1]  # Извлекаем текст из скобок
        send_test_message(f"тест ({test_message})")

    # Ждем 1 минуту
    time.sleep(60)

Бот работает из PythonAnywhere.


Ответы (0 шт):