vlang

微信开发框架
授权协议 MIT
开发语言 Python
所属分类 手机/移动开发、 微信开发/微信公众号开发
软件类型 开源软件
地区 国产
投 递 者 吕天逸
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

vLang 使用说明

vLang是一个基于模型的微信开发框架,遵循MIT协议发布。

安装

开发与测试环境: Ubuntu Kylin 15.04 64bit Python 3.4 Tornado 4.1

python3 setup.py install

入门

1. Hello World!

最简单的例程,对用户发送的所有消息,回复“Hello World!”

from vlang.menu import Menu
from vlang.server import start

class MainMenu(Menu):
    def action(self):
        yield "Hello World"

# token需和微信后台填写一致
settings = {"url" :"/weixin",
                   "port" : 8080,
                   "token" : "WQif56gU" }
start(MainMenu(), settings)

2. 微信计算器

  • 简易乘法计算器

from vlang.menu import Menu
from vlang.server import start

class MainMenu(Menu):
    def action(self):
        num0 = yield "请输入因数1:"    #用户输入将保存在num0里.
        num1 = yield "请输入因数2:"
        num2 = float(num0) * float(num1)
        yield "计算结果:\n {0} x {1} = {2}".format(num0,num1,num2)

settings = {"url" :"/weixin",
                   "port" : 8080,
                   "token" : "WQif56gU" }
start(MainMenu(), settings)
  • 带有二级级菜单的四则运算器,能计算加减法,乘法。

from vlang.menu import Menu
from vlang.server import start

class MainMenu(Menu):
    def tag(self):
        self.name = "计算器"
    def action(self):
        reply = yield self.makeMenu()  # 根据子菜单的名字,生成菜单列表
        yield self.autoJump(reply)  # 根据回复,跳转到对应菜单

class Menu_1(Menu):
    def tag(self):
        self.name = "加减法"
    def action(self):
        reply = yield self.makeMenu()
        yield self.autoJump(reply)

class Menu_1_1(Menu):
    def tag(self):
        self.name = "加法"
    def action(self):
        num0 = yield "请输入加数1:"
        num1 = yield "请输入加数2:"
        num2 = float(num0) + float(num1)
        yield "计算结果:\n {0} + {1} = {2}".format(num0, num1, num2) 

class Menu_1_2(Menu):
    def tag(self):
        self.name = "减法"
    def action(self):
        num0 = yield "请输入被减数:"
        num1 = yield "请输入减数:"
        num2 = float(num0) - float(num1)
        reply = yield '''计算结果:\n {0} - {1} = {2}
回复“ 0 ”可回到主菜单'''.format(num0, num1, num2) 
        if reply == "0" : yield MainMenu  # 跳转到指定菜单

class Menu_2(Menu):
    def tag(self):
        self.name = "乘法"
    def action(self):
        num0 = yield "请输入因数1:"
        num1 = yield "请输入因数2:"
        num2 = float(num0) * float(num1)
        yield "计算结果:\n {0} x {1} = {2}".format(num0, num1, num2)

# 链接菜单
menuTree = MainMenu()  # 新建一个菜单树
menuTree.add(Menu_1)  # 链接一级菜单
menuTree.add(Menu_2)
menuTree.Menu_1.add(Menu_1_1)  # 链接二级菜单
menuTree.Menu_1.add(Menu_1_2)

# 设置并启动服务器
settings = {"url" :"/weixin",
                   "port" : 8080,
                   "token" : "WQif56gU" }
start(menuTree, settings)

Menu

在vLang中,微信项目是由一个个菜单链接而构成的, 本节将详细介绍vLang中菜单的结构,链接,启动。

结构

菜单是继承自vlang.menu.Menu的类,并需重载其action()方法,用来接收,处理,回复微信消息。 在多级菜单中,还需重载tag()方法,用以保存一些设置,目前仅有self.name这一项,用以指定菜单的名字。

from vlang.menu import Menu

class MainMenu(Menu):
    def tag(self):
        #用以保存本菜单的设置。
        self.name = "主菜单"

    def action(self):
        #当收到用户消息时,vLang会调用对应菜单的action(),并传入用户消息。
        pass

链接

为了简化开发,vLang支持多级菜单。菜单与其子菜单的链接使用add(Menu)。 在上文 四则运算器 一例中,

menuTree = MainMenu()    #新建一个菜单树,必须为Menu类的实例。
menuTree.add(Menu_1)     #链接一级菜单
menuTree.add(Menu_2)
menuTree.Menu_1.add(Menu_1_1) #链接二级菜单
menuTree.Menu_1.add(Menu_1_2)

启动

vlang.server.start(menuTree, settings)

其中, menuTree是Menu类的实例,如果有多级菜单,启动前需先链接菜单。 settings是一个包含许多设置的字典

settings = {"url" :"/weixin",            
                   "port" : 8080,        #默认为 80 端口
                   "ip":"127.0.0.1",     #默认为"" , 绑定所有地址,
                   "token" : "WQif56gU",#在微信公众号官网设置的token
                   "work" : "WQif56gU"}  #可同时服务的用户数量,也是线程数量,默认为10

yield!

Python中 yield 关键字具有神奇的魔力。 vLang中,yield用于: 回复/接收消息跳转菜单

回复

  • 给用户发送消息:

yield "您好,欢迎光临!"
  • 给用户发送消息,并得到回复:

reply = yield "请输入用户名:"
  • 缓存一段话,暂不发给用户,程序将继续执行至下一个yield语句处。一般用于缓存一段错误信息:

def action(self):
    while(True):
        try:
            reply = yield "请输入整数:"
            num = int(reply)
            break
        except ValueError:
            yield "您输入的不是整数,请重试\n", self.BUFFER  # 缓存一段话,后面添加个self.buffer即可。

如果用户输入了"haha",int(reply)将抛出ValueError异常 程序实际回复:

您输入的不是整数,请重试 请输入整数:

可缓存多段文本,当程序继续执行到没有self.buffer的yield语句时,vLang才会将缓存区文本发送给用户。

跳转

以 入门 小节中,四则运算器 为例。

  • 跳转到另一个菜单:

yield Menu_1_2

能够传入Menu,或者Menu的实例。 例如,跳转到主菜单可以这样写:

yield MainMenu

也可以这样写:

yield menuTree
  • 跳转到现行菜单的开始点:

yield self

特别的,如果没有显式指定下一个菜单,当action() 执行完后,默认跳转到现行菜单的开始点。

  • 跳转到父菜单:

yield self.baseMenu
  • 当然,跳转菜单的同时也能给用户回复消息,也缓存一段信息:

yield "充值失败!", MainMenu , self.buffer

不过,上面的三个参数得 按顺序 写。其原型是:(String , Menu , self.buffer)

版本

目前版本为 0.2.1 ,是开源的第一个版本。

  • 下个版本中,将会有如下改进

    • autoJump() 支持模糊匹配

    • 加入日志模块

    • 加入消息加解密功能

    • 支持多媒体消息,如语音,图片,图文,地理位置等

  • 未来版本中,可能有如下改进

    • 在80端口处提供一个管理员网页,方便设置,管理

    • 提供幸运大转盘,刮刮卡等等常见活动

    • 接入 其他开源项目,以支持中文分词和情感分析

    • ……

    • 非常期待您的建议!

  • 前言 vlang(v语言)自从6月份突然炒热起来,不知不觉到了11月,正式版就要出来了,在11月的GitHub Trending榜中依然排在前10。这着实令人好奇,因此笔者决定试用一下vlang,写一个小应用,体验一下感受。 v语言上手 v语言可以在GitHub传送门中clone下载,支持多操作系统,有以下的特性: 快速编译 快速转译 热更 其余的,还有自带的GUI库、结合Go与Rust的语言特性

  • PS:主要为自己学习,,,,看的时候顺便翻译的,,,渣翻(非全人工)勿喷. 介绍 V是一种用于构建可维护软件的静态类型编译编程语言。 它与Go相似,也受到Oberon、Rust、Swift的影响。 V是一种非常简单的语言,阅读这份文档大概只需要半小时的时间,读完之后,您将学习到V的全部内容. 尽管很简单,但是它为开发人员提供了很多功能,你能用其它编程语言做的任何事情,都可以用V做到. Hello

  • AD: http://a.scwy.net/ 无意中看到.https://vlang.io/,还有网友很积极的来了个中文网 https://www.v-lang.cn/ 安装: mkdir -p ~/code && cd ~/code # ~/code directory has to be used (it's a temporary limitation) git clone https:/

  • 【vlang 】vpm的使用 install v install markdown vpgk vpkg get https://github.com/vlang/markdown --global used module just import this module main import markdown fn main() { text := '# Markdown Rock

  • 磨刀霍霍向vlang 工欲善其事必先利其器。在开始v语言相关语法知识学习之前,我们首先需要部署好vlang的运行环境。目前vlang语言只支持linux和mac系统,笔者本人选择使用Centos,下面是基本的安装部署步骤: 安装clang编译器 下载v语言源码 修改默认编译器 编译源码 建立软链接 测试安装结果 源码更新 现在我们对上述安装步骤展开具体介绍。 1. 安装clang编译器 为了能编译

  • import vweb import net.http import regex // import sqlite // can change to 'mysql', 'pg' const ( port = 8013 ) struct App { vweb.Context // mut: // db shared sqlite.DB } pub fn (app App) before_

  • 1: clone it git clone https://github.com/vlang/v 2:build it cd v make 3:create symlink and you can run cmd v anywhere sudo ln -s [path to V repo]/v /usr/local/bin/v 4:run helloworld cd examples v r

  • 参考 V语言中文教程 - 基础部分 转载于:https://www.cnblogs.com/taadis/p/vlang.html

  • Vlang文档: https://vlang.io/docs github资料地址: https://github.com/vlang-zh/vlang-zh.github.io 持续更新中

 相关资料
  • 作者结合自己的实际开发经验,归纳整理出来分享给微信开发的入门者或正在研究的开发者。

  • 本文向大家介绍微信开发 微信授权详解,包括了微信开发 微信授权详解的使用技巧和注意事项,需要的朋友参考一下 最近有机会做到一个微信项目;把其中自己整理的笔记分享给大家,有不足或错误的地方望大家指正! 1关于微信授权这块的流程图,如下 一些代码碎片仅供参考: 本地存储的运用: 1. 做微信开发,建议先造一些数据,取到对应的openId ,方便在浏览器里调试; 2.稍微麻烦的就是每次调整完成,需要发布

  • 开发工具 微信开发者工具 VSCode https://zh.snipaste.com/ VSCode插件 小程序开发助手 minapp css tree vscode开发微信小程序安装的插件: wechat-snippet 微信小程序代码辅助,代码片段自动完成 minapp 微信小程序标签、属性的智能补全(同时支持原生小程序、mpvue 和 wepy 框架,并提供 snippets) 需要输入<

  • 本文向大家介绍微信开发之微信jssdk录音功能开发示例,包括了微信开发之微信jssdk录音功能开发示例的使用技巧和注意事项,需要的朋友参考一下 项目需求简单描述 用户长按录音,松手后直接结束录音,结束录音后,用户可以选择重新录音、播放刚才的录音,上传录音(这里的上传录音指上传到自己服务器,上传步骤是,前端调用wx.uploadVoice,后台再到微信服务器下载音频文件,上传到自己的服务器)。注意,

  • 本文向大家介绍asp.net微信开发(开发者接入),包括了asp.net微信开发(开发者接入)的使用技巧和注意事项,需要的朋友参考一下 先上图,看一看需要进行哪些项目的操作:   在项目的根目录或者特定的文件夹内,创建一个ashx文件(一般处理程序文件),如图 精彩专题分享:ASP.NET微信开发教程汇总,欢迎大家学习。 以上就是关于asp.net微信开发的第一篇,针对开发者接入进行学习,之后会有

  • 本文向大家介绍微信开发协议小结,包括了微信开发协议小结的使用技巧和注意事项,需要的朋友参考一下 1.发布的消息对应一个ID(只要单个方向唯一即可,服务器端可能会根ID判断重复接收),消息重传机制确保有限次的重试,重试失败给予用户提示,发送成功会反馈确认,客户端只有收到确认信息才知道发送成功。发送消息可能不会产生新SyncKey。 2.基于版本号(SynKey)的状态消息同步机制,增量、有序传输需求