赞
踩
一、目标:
针对于微信用户,最近想做一个机器人,想要以下功能
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会返回给你一张图片
- 引用来自https://zhuanlan.zhihu.com/p/268885550
- import asyncio
- from wechaty import Wechaty, Message
-
- class MyBot(Wechaty):
- async def on_message(self, msg: Message):
- talker = msg.talker()
- await talker.ready()
- if msg.text() == "ding":
- await talker.say('dong')
- elif msg.text() == 'image':
- file_box = FileBox.from_url(
- 'https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/'
- 'u=1116676390,2305043183&fm=26&gp=0.jpg',
- name='ding-dong.jpg')
- await talker.say(file_box)
-
- async def main():
- bot = MyBot()
- await bot.start()
-
- asyncio.run(main())
4.编写代码2:完成定时群发功能
-
- #encoding = utf-8
- from wechaty import Wechaty
- from wechaty.plugin import WechatyPlugin
- from apscheduler.schedulers.asyncio import AsyncIOScheduler
- import asyncio
- import datetime
- #from wechaty import get_room_id
-
- class DailyPlugin(WechatyPlugin):
- @property
- def name(self) -> str:
- return 'dayily'
-
- async def tick(self):
- rooms = await self.bot.Room.find_all()
- for currRoom in rooms:
- print(f'room pay load topic: {currRoom.payload.topic}, topic: {currRoom.topic}, currRoom.room_id: {currRoom.room_id}')
-
- topic = currRoom.payload.topic
- if(topic.startswith("ding") or topic.startswith("曼玲-食神券坊外卖")):
- room = currRoom
- await room.say(f'您好,我是食神券坊智能机器人,今天正式上线! -> {datetime.datetime.now()}')
-
- async def init_plugin(self, wechaty: Wechaty):
- await super().init_plugin(wechaty)
- scheduler = AsyncIOScheduler()
- scheduler.add_job(self.tick, 'cron', hour=9, minute=43, second=55)
- scheduler.start()
-
- async def main():
- bot = Wechaty().use(DailyPlugin())
- await bot.start()
-
- asyncio.run(main())
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。