[英]The bot for VK answers in a private messages, and not in a conversation
我正在使用回調 Api 創建一個參考機器人,用於在 Python 中的 VK 中聊天。 如果您寫入群組消息,機器人將正常工作。 但是,如果您寫入對話(添加了機器人),它會回復私人消息。 發布的所有閱讀等權利。 據我了解(在互聯網上學習信息),我使用user_id
,而不是chat_id
。 但我不明白如何正確修復它(
ps 建議機器人在私人消息和對話中都寫,這取決於他們問的地方。
pps這個問題可能看起來很可笑,但是我剛開始研究這個領域,在網上沒有找到答案:-)
機器人本身:
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。 (data->object->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 - 在其中接收到交易消息。 (對於組,它看起來像 20000005)所以,你將把消息發送到對話(不管是這個 PM 還是與很多人的對話)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.