python - VK-Api 键盘无论我做什么 Python 都不起作用
问题描述
所以我尝试制作键盘很长一段时间,但它不起作用 main.py
from flask import Flask, request, json
from settings import *
import messageHandler
app = Flask(__name__)
#Проверка перезагрузки сайта
@app.route('/')
def hello_world():
return 'Hi there'
@app.route('/', methods=['POST'])
def processing():
#Распаковываем json из пришедшего POST-запроса
data = json.loads(request.data)
#Узнаём какой запрос мы получили от ВК
if 'type' not in data.keys():
return 'not vk'
#Если подтверждение сервера
if data['type'] == 'confirmation':
return confirmation_token
#Если новое сообщение
if data['type'] == 'message_new':
messageHandler.create_answer(data['object']['message'], token)
return 'ok'
if __name__ == '__main__':
app.run()`
api.py
import vk
session = vk.Session()
api = vk.API(session, v=5.103)
def send_message(peer_id, token, message, random_id, keyboard):
api.messages.send(peer_id=int(peer_id), access_token=token, message=message, random_id=random_id)
消息处理程序.py
import api
from vk_api.utils import get_random_id
import os
import importlib
from command_handler import command_list
def load_modules():
# путь от рабочей директории, ее можно изменить в настройках приложения
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(text):
message = "Прости, я тебя не поняла, попоробуй написать 'помощь'."
for c in command_list:
if text in c.keys:
message = c.process()
return message
def create_answer(data, token):
load_modules()
peer_id = data['from_id']
message = get_answer(data['text'].lower())
random_id = get_random_id() #int(round(time() * 100000))
api.send_message(peer_id, token, message, random_id)
command_handler.py
command_list = []
class Command:
def __init__(self):
self.__keys = []
self.description = ''
command_list.append(self)
@property
def keys(self):
return self.__keys
@keys.setter
def keys(self, mas):
for k in mas:
self.__keys.append(k.lower())
def process(self):
pass
用键盘命令
import command_handler
def info():
message = "Приветствую вас в военно политической игре"
return message
def keyboard():
keyboard = {"one_time": True, "buttons": [[{"action": {"type": "text", "payload": "{\"button\": \"1\"}", "label": "Кнопка"}, "color": "positive"}, {"action": {"type": "text", "payload": "{\"button\": \"2\"}", "label": "Кнопка" }, "color": "positive"}]]}
return keyboard
wpg_command = command_handler.Command()
wpg_command.keys = ['впи', 'цивка', 'wpg']
wpg_command.description = 'Позволяет поиграть в военно политическую игру'
wpg_command.process = info
我尝试使用很多东西,比如添加
self.keyboard = {}...
...
def keyboard(self):
return self.keyboard
进入command_handler,但我对类真的很糟糕,并对所有这些文件进行了很多更改,但除了机器人停止工作之外什么也没发生......请帮助我
解决方案
推荐阅读
- javascript - 尝试将图像上传到 Firebase 存储
- css - 在 Laravel 8 中添加 CSS
- javascript - 映射两个数组以将不同的数据合并到一个 IF 项目 id 在 javascript 中是相同的
- ionic-framework - Ionic 3后台模式返回为假
- node.js - 如何使用节点 js 使用 mongobd 激活和停用用户帐户
- c# - 无法将两个参数传递给操作 ASP.NET MVC
- wordpress - 有人知道如何更改 WordPress 上的灰色 URL 吗?
- python - 如何使用 tkinter python 在控制台底部显示进度条
- sql - 如何在sql oracle中比较两个日期时间
- sql - 拆分日志以分隔行红移