当前位置:   article > 正文

wechaty-python实现机器人_wechaty python

wechaty python

一、目标:
针对于微信用户,最近想做一个机器人,想要以下功能
1.群内定时发送点餐消息(已完成)
2.微信朋友圈重要信息发布
3.个人自定义智能机器人
4.群内热点提醒;朋友圈每日热点;个人热点新闻
5.天气查询功能
6.讲段子功能
注:如果想做群聊机器人有两种方式
1.完成微信用户群发(企业微信外部群):建立企业微信并建立外部群(可对没有使用企业微信的用户发消息),如果你要使用wechaty请直接看二及以后的教程
2.完成企业微信内部成员群发(企业微信内部群):可对企业内人员发消息,不用wechaty机器人,方便快捷,详见api接口

二、调研及结果:
1.ItChat、wechat-wxpy等等大部分开源包都不行(由于使用web协议,微信已经封了且很容易封号),据说17年以前申请的微信且没有换过绑定的手机号的可以使用web协议,也就是ItChat,但不稳定。

2.使用wechaty,该项目使用ipad协议,稳定可用,不会被封号,但比ItChat复杂一些;且需要申请token(国内为“句宝客”公司提供)

3.申请token免费须知:
(1)新账户可有7天使用权限
(2)每发一篇文章到各个平台(简书、知乎、掘金等等),一篇文章可使用3个月;(联系微信号juzibot)
(3)贡献一个MVP(最小项目),联系微信Juzi.Bot(微信号juzibot),可获得永久免费资格

如果你要买付费的token:200每月
详见开源奖励计划:https://wechaty.js.org/docs/contributor-program/
token详细说明:https://github.com/juzibot/Welcome/wiki/Everything-about-Wechaty#1Token-%E7%9A%84%E5%8A%9F%E8%83%BD%E5%92%8C%E7%94%B3%E8%AF%B7
三、可用的项目:https://github.com/wechaty/python-wechaty
步骤:(必须要python3.7以上版本,我用的python3.7)
1.安装wechaty
pip install wechaty

2.导入申请的token
export WECHATY_PUPPET_HOSTIE_TOKEN='your-token'3.编写代码1,最基础功能:发送ding会返回给你一张图片
 

  1. 引用来自https://zhuanlan.zhihu.com/p/268885550
  2. import asyncio
  3. from wechaty import Wechaty, Message
  4. class MyBot(Wechaty):
  5.     async def on_message(self, msg: Message):
  6.         talker = msg.talker()
  7.         await talker.ready()
  8.         if msg.text() == "ding":
  9.             await talker.say('dong')
  10.         elif msg.text() == 'image':
  11.             file_box = FileBox.from_url(
  12.                 'https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/'
  13.                 'u=1116676390,2305043183&fm=26&gp=0.jpg',
  14.                 name='ding-dong.jpg')
  15.             await talker.say(file_box)
  16. async def main():
  17.     bot = MyBot()
  18.     await bot.start()
  19. asyncio.run(main())

4.编写代码2:完成定时群发功能

  1. #encoding = utf-8                                                                                                                                                                                            
  2. from wechaty import Wechaty
  3. from wechaty.plugin import WechatyPlugin
  4. from apscheduler.schedulers.asyncio import AsyncIOScheduler
  5. import asyncio
  6. import datetime
  7. #from wechaty import get_room_id
  8. class DailyPlugin(WechatyPlugin):
  9.   @property
  10.   def name(self) -> str:
  11.     return 'dayily'
  12.   async def tick(self):
  13.     rooms = await self.bot.Room.find_all()
  14.     for currRoom in rooms:
  15.         print(f'room pay load topic: {currRoom.payload.topic}, topic: {currRoom.topic}, currRoom.room_id: {currRoom.room_id}')
  16.         topic =  currRoom.payload.topic
  17.         if(topic.startswith("ding") or topic.startswith("曼玲-食神券坊外卖")):
  18.             room = currRoom
  19.             await room.say(f'您好,我是食神券坊智能机器人,今天正式上线! -> {datetime.datetime.now()}')
  20.   async def init_plugin(self, wechaty: Wechaty):
  21.     await super().init_plugin(wechaty)
  22.     scheduler = AsyncIOScheduler()
  23.     scheduler.add_job(self.tick, 'cron', hour=9, minute=43, second=55)
  24.     scheduler.start()
  25. async def main():
  26.   bot = Wechaty().use(DailyPlugin())
  27.   await bot.start()
  28. asyncio.run(main())


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/907635
推荐阅读
相关标签
  

闽ICP备14008679号