V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
ktmud
V2EX  ›  微信

搞了个微信机器人,求大家调戏!可以查天气,可以成语接龙……

  •  
  •   ktmud · Nov 26, 2012 · 20011 views
    This topic created in 4902 days ago, the information mentioned may be changed or developed.
    用微信公众平台的开放信息接口,用 nodejs 搞了个自动回复的机器人。主要功能部分做成了 npm 模块,回复规则可以自定义。

    源码放在了 github 上:
    https://github.com/ktmud/weixin-robot

    目前维护的是豆瓣同城的官方微信:douban-event ,可以直接发送位置查找附近活动。




    另外还蛋疼地做了一些额外功能,比如查天气和成语接龙:




    然后因为自定义回复很简单,所以还写了很多自动回复的对话:



    当机器人的感觉真的很好玩啊……

    求大家前往调教,以便正式推广前,它能回答的问题能更多一些~
    41 replies    1970-01-01 08:00:00 +08:00
    wyx
        1
    wyx  
       Nov 26, 2012
    嘿,请问他回复的信息是怎么产生的呢?
    ktmud
        2
    ktmud  
    OP
       Nov 26, 2012
    @wyx 人工编辑的…… =。=

    不涉及任何人工智能,全部是正则表达式指定的死规则。优点是写起来很方便,缺点当然是不够高级…… 不过因为加了“操作等待模式”,所以基本的对话需求都可以通过自定义回复程序来满足。
    wyx
        3
    wyx  
       Nov 27, 2012
    还是不懂你什么意思,不然我问 你知道我是谁么? 它能给出回复么? 我没看你们的代码,不过我建议专门把这部分抽象出来,以后好进一步开发
    vilicvane
        4
    vilicvane  
       Nov 27, 2012
    哈哈, 好久不见, 居然在这里碰倒了.
    money
        5
    money  
       Nov 27, 2012
    感觉很好玩,好想学
    manhere
        6
    manhere  
       Nov 27, 2012
    加入AIML就更好玩了
    passluo
        7
    passluo  
       Nov 27, 2012
    顶楼主
    imom0
        8
    imom0  
       Nov 27, 2012
    已调戏。
    发送位置返回附近活动挺赞的。
    ktmud
        9
    ktmud  
    OP
       Nov 27, 2012
    @wyx 就是属于穷举法,把用户可能发送的消息都列出来,然后人工编辑回复。。。 很低级的

    https://github.com/ktmud/weixin-robot/tree/master/examples/dialogs
    ktmud
        10
    ktmud  
    OP
       Nov 27, 2012
    @manhere =.= 其实我没听说过这个,回头研究一下!
    bullda
        11
    bullda  
       Nov 27, 2012
    怎么和某个微信帐号关联?求一个更详细一点的README。
    blank_dlh
        12
    blank_dlh  
       Nov 27, 2012
    前段时间也搞了个查天气的 支持输入名称和发送地理位置 感觉比较坑爹没敢发出来- -
    ktmud
        13
    ktmud  
    OP
       Nov 27, 2012
    @blank_dlh 好吧。。。我脸皮比较厚,呵呵呵
    blank_dlh
        14
    blank_dlh  
       Nov 27, 2012
    @ktmud 嘿嘿 你这个好多了啊-- 我那个纯属闲的蛋疼
    eallern
        15
    eallern  
       Nov 27, 2012
    楼主啊,你这功能还不如 微信里的哆啦A梦好玩 在微信里,ID 是:dlam888

    回复很有意思。。。。。大家也可以去玩玩看。。
    Tiny
        16
    Tiny  
       Nov 27, 2012
    兄弟 原来你在这里~
    thisisvoa
        17
    thisisvoa  
       Nov 27, 2012
    是不是用node js 实现的
    liuyl
        18
    liuyl  
       Nov 29, 2012
    fromUser和toUser,都是不可读的格式么?没办法搞成明文?
    nodexy
        19
    nodexy  
       Nov 29, 2012
    有学习能力么? 这个很关键啊
    ktmud
        20
    ktmud  
    OP
       Nov 29, 2012
    @liuyl 没办法吧,微信的策略,我也不知道是不是因为要保密还是怎样……
    ktmud
        21
    ktmud  
    OP
       Nov 29, 2012
    @nodexy 可以另外写一个模块做这种事,现有的只是一个单纯的回复系统,也想保持这种单纯
    liuyl
        22
    liuyl  
       Nov 30, 2012
    @ktmud 估计是不想让公众账号直接发消息给私人账号?那设置一下权限就好了。搞成这样挺不方便的
    nasa
        23
    nasa  
       Dec 1, 2012
    多谢 正在学习你的源码 :)
    anyforever
        24
    anyforever  
       Dec 4, 2012
    挺喜欢这个开源产品的,可以学习一下了。可是node.js还没装上呢,config的时候总是提示某句话语法错误 -_-|||

    源码还不太明白怎么用,希望有更详细点的文档,怎么二次开发之类的。就更好了。
    ktmud
        25
    ktmud  
    OP
       Dec 6, 2012
    @anyforever github 上的源码更新了一下,给 examples/ 添加了一点注释,你可以再看看
    anyforever
        26
    anyforever  
       Dec 6, 2012
    @ktmud 谢谢,我去看一下
    plan9
        27
    plan9  
       Dec 6, 2012
    为什么我登录不了微信公众平台
    没有遇到跟我一样问题的人么
    nasa
        28
    nasa  
       Dec 11, 2012
    @ktmud 谢谢更新了注释。
    heloo
        29
    heloo  
       Dec 11, 2012
    很有意思, 可以先简单分词一下, 在做匹配
    nasa
        30
    nasa  
       Dec 12, 2012
    @ktmud 非常感谢更新了搜索的例子。
    zhangkai_ch
        31
    zhangkai_ch  
       Dec 31, 2012
    学习一下。
    wzxjohn
        32
    wzxjohn  
       Jan 1, 2013
    @ktmud 为什么我想运行的时候总是提示我
    module.js:340
    throw err;
    ^
    Error: Cannot find module 'debug'
    我已经安装了debug模块啊纠结。。。
    ktmud
        33
    ktmud  
    OP
       Jan 5, 2013
    @wzxjohn 你是在哪儿运行?有试过执行 `npm install` 么?
    wzxjohn
        34
    wzxjohn  
       Jan 5, 2013
    @ktmud 自己的VPS。试过了,木有用。。。还是提示
    module.js:340
    throw err;
    ^
    Error: Cannot find module 'debug'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (/root/lib/robot.js:1:75)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:362:17)
    ktmud
        35
    ktmud  
    OP
       Jan 6, 2013
    @wzxjohn 你是把这个作为一个 npm 模块在你自己的代码里跑,还是直接在 weixin-robot 的根目录下 npm start 跑的示例?无论如何,请确认你的 package.json 的 dependencies 里面有 debug 模块
    wzxjohn
        36
    wzxjohn  
       Jan 6, 2013
    @ktmud 直接在根目录下跑的。话说这个能放到AppFog上跑么?
    我直接把Git上的源码Clone下来npm install 然后npm start,提示我:
    sh: 1: supervisor: not found
    npm ERR! [email protected] start: `supervisor --debug examples/app.js`
    npm ERR! `sh "-c" "supervisor --debug examples/app.js"` failed with 127
    npm ERR!
    npm ERR! Failed at the [email protected] start script.
    npm ERR! This is most likely a problem with the weixin-robot package,
    npm ERR! not with npm itself.
    npm ERR! Tell the author that this fails on your system:
    npm ERR! supervisor --debug examples/app.js
    npm ERR! You can get their info via:
    npm ERR! npm owner ls weixin-robot
    npm ERR! There is likely additional logging output above.

    npm ERR! System Linux 3.2.0-29-generic-pae
    npm ERR! command "nodejs" "/usr/bin/npm" "start"
    npm ERR! cwd /root/weixin-robot
    npm ERR! node -v v0.8.16
    npm ERR! npm -v 1.1.69
    npm ERR! code ELIFECYCLE
    npm ERR!
    npm ERR! Additional logging details can be found in:
    npm ERR! /root/weixin-robot/npm-debug.log
    npm ERR! not ok code 0
    ktmud
        37
    ktmud  
    OP
       Jan 7, 2013
    @wzxjohn 你应该总是使用自己的项目目录 https://github.com/ktmud/weixin-robot/wiki/Usage
    wzxjohn
        38
    wzxjohn  
       Jan 9, 2013
    @ktmud 试了各种方法。。。怎么弄都不行。。。。。。。。。跪了。。。
    wzxjohn
        39
    wzxjohn  
       Jan 9, 2013
    @ktmud 我勒个去。。。这次居然成功了。。。直接git clone,npm install,npm start就好了。。。
    ry_wang
        40
    ry_wang  
       Aug 15, 2013
    @ktmud 请问这种功能是必须要微信公众服务号么? 订阅号可以进行这个操作么?谢谢。
    ktmud
        41
    ktmud  
    OP
       Aug 19, 2013
    @ry_wang 这个功能可以用的时候还没有订阅号和服务号的区别
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   951 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 68ms · UTC 20:24 · PVG 04:24 · LAX 13:24 · JFK 16:24
    ♥ Do have faith in what you're doing.