当机器人向用户发送消息时,它会崩溃并显示错误:vk_api.exceptions.ApiError: [901] Can't send messages for users without permission,机器人在设置中具有所有必要的权限,并且用户没有禁止消息。
编码:
import vk_api
from vk_api.utils import get_random_id
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
vk_session = vk_api.VkApi(token="Тут ваш токен")
vk = vk_session.get_api()
longpoll = VkBotLongPoll(vk_session, "Айди сообщества (Не кастомное) пример: 94124211")
for event in longpoll.listen():
if event.obj.text != "":
if event.from_user:
vk.messages.send(
user_id=event.obj.from_id,
random_id=get_random_id(),
message=event.obj.text)
我自己遇到了这个错误,问题原来是我的机器人试图回复自己的消息,即 问题消息上的 getFromId 和 getText 显示服务器响应和减去 id,而不是预期的用户消息
bot 的消息是如何从 VK 进入消息包的,目前还在整理中。
与社区的通信只能由用户自己发起。代表小组给没有与他通信的人写信是行不通的。但是,一旦发起对话,社区就可以无时间或数量限制地发送消息。这将一直持续到用户禁止社区给自己写信为止。
用户可以发起聊天:
来源:社区帖子。
901 - 用户拒绝代表社区发送消息。这意味着用户要么已禁止接收来自组的消息,要么尚未写入。如果 VKontakte 用户没有向该组写消息,那么他将无法接收它们,因为这很可能是反垃圾邮件。
问题很可能出在用户 ID 中。可以使用:event.user_id