搞了个微信机器人,求大家调戏!可以查天气,可以成语接龙…… - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ktmud
V2EX    微信

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

  •  
  •   ktmud 2012-11-26 23:11:37 +08:00 19576 次点击
    这是一个创建于 4708 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用微信公众平台的开放信息接口,用 nodejs 搞了个自动回复的机器人。主要功能部分成了 npm 模块,回复规则可以自定义。

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

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




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




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



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

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

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

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

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

    源码还不太明白怎么用,希望有更详细点的文档,怎么二次开发之类的。就更好了。
    ktmud
        25
    ktmud  
    OP
       2012-12-06 14:12:52 +08:00
    @anyforever github 上的源码更新了一下,给 examples/ 添加了一点注释,你可以再看看
    anyforever
        26
    anyforever  
       2012-12-06 19:26:35 +08:00
    @ktmud 谢谢,我去看一下
    plan9
        27
    plan9  
       2012-12-06 23:30:19 +08:00
    为什么我登录不了微信公众平台
    没有遇到跟我一样问题的人么
    nasa
        28
    nasa  
       2012-12-11 09:56:07 +08:00
    @ktmud 谢谢更新了注释。
    heloo
        29
    heloo  
       2012-12-11 12:08:12 +08:00
    很有意思, 可以先简单分词一下, 在做匹配
    nasa
        30
    nasa  
       2012-12-12 13:47:45 +08:00
    @ktmud 非常感谢更新了搜索的例子。
    zhangkai_ch
        31
    zhangkai_ch  
       2012-12-31 10:33:40 +08:00
    学习一下。
    wzxjohn
        32
    wzxjohn  
       2013-01-01 17:53:51 +08:00
    @ktmud 为什么我想运行的时候总是提示我
    module.js:340
    throw err;
    ^
    Error: Cannot find module 'debug'
    我已经安装了debug模块啊纠结。。。
    ktmud
        33
    ktmud  
    OP
       2013-01-05 22:32:56 +08:00
    @wzxjohn 你是在哪儿运行?有试过执行 `npm install` 么?
    wzxjohn
        34
    wzxjohn  
       2013-01-05 23:00:16 +08:00
    @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
       2013-01-06 00:03:19 +08:00
    @wzxjohn 你是把这个作为一个 npm 模块在你自己的代码里跑,还是直接在 weixin-robot 的根目录下 npm start 跑的示例?无论如何,请确认你的 package.json 的 dependencies 里面有 debug 模块
    wzxjohn
        36
    wzxjohn  
       2013-01-06 01:15:50 +08:00
    @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
       2013-01-07 12:03:23 +08:00
    @wzxjohn 你应该总是使用自己的项目目录 https://github.com/ktmud/weixin-robot/wiki/Usage
    wzxjohn
        38
    wzxjohn  
       2013-01-09 00:42:54 +08:00
    @ktmud 试了各种方法。。。怎么弄都不行。。。。。。。。。跪了。。。
    wzxjohn
        39
    wzxjohn  
       2013-01-09 00:46:18 +08:00
    @ktmud 我勒个去。。。这次居然成功了。。。直接git clone,npm install,npm start就好了。。。
    ry_wang
        40
    ry_wang  
       2013-08-15 10:12:28 +08:00
    @ktmud 请问这种功能是必须要微信公众服务号么? 订阅号可以进行这个操作么?谢谢。
    ktmud
        41
    ktmud  
    OP
       2013-08-19 22:30:02 +08:00
    @ry_wang 这个功能可以用的时候还没有订阅号和服务号的区别
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2785 人在线 &nbp; 最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 03:57 PVG 11:57 LAX 20:57 JFK 23:57
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86