VK的机器人在私人信息中回答,而不是在对话中



我正在使用回调Api在Python中创建一个用于VK聊天的参考机器人。如果你在群里写消息,机器人就会正常工作。但是,如果你给一个对话(添加了机器人(写信,它会回复私人消息。发布了所有阅读权等。据我所知(在互联网上学习信息(,我使用user_id,而不是chat_id。但我不知道如何正确修复它(

p.s.机器人最好在私人信息和对话中都写,这取决于他们问的地方。

也许这个问题看起来很可笑,但我刚开始研究这个领域,在网上没有找到答案:-(

机器人本身:

import vk
import random
import messageHandler
@ app.route ('/', methods = ['POST'])
def processing ():
data = json.loads (request.data)
if 'type' not in data.keys ():
return 'not vk'
if data ['type'] == 'confirmation':
return confirmation_token
elif data ['type'] == 'message_new':
messageHandler.create_answer (data ['object'] ['message'], token)
return 'ok'

"响应者":

import importlib
from command_system import command_list
def load_modules ():
# path from the working directory, it can be changed in the application settings
files = os.listdir ("mysite / commands")
modules = filter (lambda x: x.endswith ('. py'), files)
for m in modules:
importlib.import_module ("commands." + m [0: -3])
def get_answer (body):
# Default message if unrecognizable
message = "Sorry, I don't understand you. Write '/ help' to see my commands."
attachment = ''
for c in command_list:
if body in c.keys:
message, attachment = c.process ()
return message, attachment
def create_answer (data, token):
load_modules ()
user_id = data ['from_id']
message, attachment = get_answer (data ['text']. lower ())
vkapi.send_message (user_id, token, message, attachment)

我英语说得不好,所以我为不正确的翻译道歉(

使用Peer_id,而不是from_id。(数据->对象->peer_id(我使用了php,但遇到了类似的问题。这就是解决方案(可能是这样的:

def create_answer (data, token):
load_modules ()
user_id = data ['peer_id'] # id source edited
message, attachment = get_answer (data ['text']. lower ())
vkapi.send_message (user_id, token, message, attachment)

from_id-发送消息的人

peer_id-在其中接收到dealogue消息。(对于团体,它看起来像20000005(所以,你会把信息发送到对话中(无论是这次下午还是与很多人的对话(

最新更新