<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          vlang微信開發(fā)框架

          聯(lián)合創(chuàng)作 · 2023-09-24 15:48

          vLang 使用說明

          vLang是一個基于模型的微信開發(fā)框架,遵循MIT協(xié)議發(fā)布。

          安裝

          開發(fā)與測試環(huán)境: Ubuntu Kylin 15.04 64bit Python 3.4 Tornado 4.1

          python3 setup.py install

          入門

          1. Hello World!

          最簡單的例程,對用戶發(fā)送的所有消息,回復(fù)“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 "請輸入因數(shù)1:"    #用戶輸入將保存在num0里.
                  num1 = yield "請輸入因數(shù)2:"
                  num2 = float(num0) * float(num1)
                  yield "計算結(jié)果:\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()  # 根據(jù)子菜單的名字,生成菜單列表
                  yield self.autoJump(reply)  # 根據(jù)回復(fù),跳轉(zhuǎn)到對應(yīng)菜單
          
          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 "請輸入加數(shù)1:"
                  num1 = yield "請輸入加數(shù)2:"
                  num2 = float(num0) + float(num1)
                  yield "計算結(jié)果:\n {0} + {1} = {2}".format(num0, num1, num2) 
          
          class Menu_1_2(Menu):
              def tag(self):
                  self.name = "減法"
              def action(self):
                  num0 = yield "請輸入被減數(shù):"
                  num1 = yield "請輸入減數(shù):"
                  num2 = float(num0) - float(num1)
                  reply = yield '''計算結(jié)果:\n {0} - {1} = {2}
          回復(fù)“ 0 ”可回到主菜單'''.format(num0, num1, num2) 
                  if reply == "0" : yield MainMenu  # 跳轉(zhuǎn)到指定菜單
          
          class Menu_2(Menu):
              def tag(self):
                  self.name = "乘法"
              def action(self):
                  num0 = yield "請輸入因數(shù)1:"
                  num1 = yield "請輸入因數(shù)2:"
                  num2 = float(num0) * float(num1)
                  yield "計算結(jié)果:\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)
          
          # 設(shè)置并啟動服務(wù)器
          settings = {"url" :"/weixin",
                             "port" : 8080,
                             "token" : "WQif56gU" }
          start(menuTree, settings)

          Menu

          在vLang中,微信項目是由一個個菜單鏈接而構(gòu)成的, 本節(jié)將詳細(xì)介紹vLang中菜單的結(jié)構(gòu),鏈接,啟動。

          結(jié)構(gòu)

          菜單是繼承自vlang.menu.Menu的類,并需重載其action()方法,用來接收,處理,回復(fù)微信消息。 在多級菜單中,還需重載tag()方法,用以保存一些設(shè)置,目前僅有self.name這一項,用以指定菜單的名字。

          from vlang.menu import Menu
          
          class MainMenu(Menu):
              def tag(self):
                  #用以保存本菜單的設(shè)置。
                  self.name = "主菜單"
          
              def action(self):
                  #當(dāng)收到用戶消息時,vLang會調(diào)用對應(yīng)菜單的action(),并傳入用戶消息。
                  pass

          鏈接

          為了簡化開發(fā),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是一個包含許多設(shè)置的字典

          settings = {"url" :"/weixin",            
                             "port" : 8080,        #默認(rèn)為 80 端口
                             "ip":"127.0.0.1",     #默認(rèn)為"" , 綁定所有地址,
                             "token" : "WQif56gU",#在微信公眾號官網(wǎng)設(shè)置的token
                             "work" : "WQif56gU"}  #可同時服務(wù)的用戶數(shù)量,也是線程數(shù)量,默認(rèn)為10

          yield!

          Python中 yield 關(guān)鍵字具有神奇的魔力。 vLang中,yield用于: 回復(fù)/接收消息跳轉(zhuǎn)菜單

          回復(fù)

          • 給用戶發(fā)送消息:

          yield "您好,歡迎光臨!"
          • 給用戶發(fā)送消息,并得到回復(fù):

          reply = yield "請輸入用戶名:"
          • 緩存一段話,暫不發(fā)給用戶,程序?qū)⒗^續(xù)執(zhí)行至下一個yield語句處。一般用于緩存一段錯誤信息:

          def action(self):
              while(True):
                  try:
                      reply = yield "請輸入整數(shù):"
                      num = int(reply)
                      break
                  except ValueError:
                      yield "您輸入的不是整數(shù),請重試\n", self.BUFFER  # 緩存一段話,后面添加個self.buffer即可。

          如果用戶輸入了"haha",int(reply)將拋出ValueError異常 程序?qū)嶋H回復(fù):

          您輸入的不是整數(shù),請重試 請輸入整數(shù):

          可緩存多段文本,當(dāng)程序繼續(xù)執(zhí)行到?jīng)]有self.buffer的yield語句時,vLang才會將緩存區(qū)文本發(fā)送給用戶。

          跳轉(zhuǎn)

          以 入門 小節(jié)中,四則運算器 為例。

          • 跳轉(zhuǎn)到另一個菜單:

          yield Menu_1_2

          能夠傳入Menu,或者M(jìn)enu的實例。 例如,跳轉(zhuǎn)到主菜單可以這樣寫:

          yield MainMenu

          也可以這樣寫:

          yield menuTree
          • 跳轉(zhuǎn)到現(xiàn)行菜單的開始點:

          yield self

          特別的,如果沒有顯式指定下一個菜單,當(dāng)action() 執(zhí)行完后,默認(rèn)跳轉(zhuǎn)到現(xiàn)行菜單的開始點。

          • 跳轉(zhuǎn)到父菜單:

          yield self.baseMenu
          • 當(dāng)然,跳轉(zhuǎn)菜單的同時也能給用戶回復(fù)消息,也緩存一段信息:

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

          不過,上面的三個參數(shù)得 按順序 寫。其原型是:(String , Menu , self.buffer)

          版本

          目前版本為 0.2.1 ,是開源的第一個版本。

          • 下個版本中,將會有如下改進(jìn)

            • autoJump() 支持模糊匹配

            • 加入日志模塊

            • 加入消息加解密功能

            • 支持多媒體消息,如語音,圖片,圖文,地理位置等

          • 未來版本中,可能有如下改進(jìn)

            • 在80端口處提供一個管理員網(wǎng)頁,方便設(shè)置,管理

            • 提供幸運大轉(zhuǎn)盤,刮刮卡等等常見活動

            • 接入 其他開源項目,以支持中文分詞和情感分析

            • ……

            • 非常期待您的建議!

          瀏覽 24
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本午夜福利 | 亚洲日韩在线天堂 | 国产乱伦视频一区二区 | 国内精品久久久久久久星 | 无码人妻精品一区二区蜜桃在线看 |