vLang是一个基于模型的微信开发框架,遵循MIT协议发布。
开发与测试环境: Ubuntu Kylin 15.04 64bit Python 3.4 Tornado 4.1
python3 setup.py install
最简单的例程,对用户发送的所有消息,回复“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)
简易乘法计算器
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)
在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
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)的状态消息同步机制,增量、有序传输需求