精华内容
下载资源
问答
  • graia是mirai的一个python库 网上也有很多配置教程但我在使用的过程中任然会碰到许多他们没有讲到的问题,在找到官方群问明白之后觉得和大家分享一下如何解决这些问题 1.mah和mcl版本不适配问题 为了演示错误找了...

    #writen by 10班14号
    graia是mirai的一个python库
    网上也有很多配置教程但我在使用的过程中任然会碰到许多他们没有讲到的问题,在找到官方群问明白之后觉得和大家分享一下如何解决这些问题

    1.mah和mcl版本不适配问题
    在这里插入图片描述
    为了演示错误找了1.0.3的mcl和2.0.2的mah
    目前最稳定的版本是1.0.5的mcl和1.12.0mah
    下载地址为https://github.com/iTXTech/mirai-console-loader/releases/tag/v1.0.5和https://github.com/project-mirai/mirai-api-http/releases/tag/v1.12.0
    使用的话个人看来好像不需要有些教程那么麻烦
    将正确的版本的mcl和mah下载之后,cd到mcl路径输入mcl,看到最后mirai-console started successfully.输入exit关闭。然后把mah放到plugins里面之后再次启动mcl就可以了

    2.控制台里正常输出没有红字报错,但在python运行实例时出现导入错误
    请使用在这里插入图片描述
    这个对python版本好像也有要求,选择python3.8以上的版本比较好,否则会出现导入错误比如她的这个ImportError: cannot import name ‘BaseDispatcher’ from ‘graia.broadcast.entities.event’ 在这里插入图片描述
    pip下载graia-application-mirai的时候不要懒请手动指定版本

    3下面是我个人写的机器人

    # -*- coding: UTF-8 -*-
    import os, random, time,json
    from lxml import etree
    from graia.broadcast import Broadcast, BaseEvent
    from graia.application.entry import *
    from graia.application.message.elements.internal import *
    import requests
    from graia.scheduler import timers
    import graia.scheduler
    from graia.application.event.mirai import FriendRecallEvent, GroupRecallEvent
    import random
    accout=234654570
    def getchat(msg):#智能聊天接口,自己找
        apiUrl = 'http://www.tuling123.com/openapi/api'
        data = {
            'userid': '*****',
            'key': '71c13002104340c58**********************',
            'info': msg,
        }
        try:
            r = requests.post(apiUrl, data=data).json()
            return r.get('text')
        except:
            return
    def cos():
        #cos
        res=requests.get('http://ovooa.com/API/cosplay/api.php?type=text')
        return res.text
    def meizi():
        #随机妹子
        src=random.choice(['http://ovooa.com/API/meinv/api.php?m=1','http://ovooa.com/API/meizi/api.php/?type=text'])
        s = requests.get(src)
        return s.text
    def lovehouse():
        #爱情公寓名言
        res=requests.get('http://ovooa.com/API/aiqing/api.php')
        html = etree.HTML(res.text)
        return html.xpath('//body//text()')[0]
    def dujitang():
        #毒鸡汤
        res = requests.get('http://ovooa.com/API/du/api.php')
        html = etree.HTML(res.text)
        return html.xpath('//body//text()')[0]
    def xiaohua():
        #笑话
        res = requests.get('http://ovooa.com/API/xiaohua/api.php')
        html = etree.HTML(res.text)
        return html.xpath('//body//text()')[0]
    def raokouling():
        #绕口令
        res = requests.get('http://ovooa.com/API/rao/api.php?type=text')
        html = etree.HTML(res.text)
        return html.xpath('//body//text()')[0]
    def get_url(picurl):
        res=requests.get(f'http://ovooa.com/API/QR/api.php?url={picurl}',timeout=(4,4))
        return res.text
    def vipmusic(name,n=1):
        res=requests.get(f'http://ovooa.com/API/QQ_Music/?Skey=&uin=&msg={name.strip()}&n={n}')
        html=etree.HTML(res.text)
        print(f'http://ovooa.com/API/QQ_Music/?Skey=&uin=&msg={name}&n={n}')
        return json.loads(html.xpath('/html//text()')[0])['data']['music']
    def qqkandian(key):
        url = "https://cgi.kandian.qq.com/trpc.tkdqq.kd_share_video_recommend.ShareVideoRecommend/GetFeed?g_tk=0&bkn=0"
        data = {"user": {"account": {"account_type": 1, "user_id": "0", "req_recommend_flag": 0}},
                "device": {"app_version": "0", "qua": "", "os": 3, "device_id": "", "terminal_id": "", "app_type": 3,
                           "guid": "", "ip": "", "network": 0}, "share_rowkey": key,
                "page": {"tab_id": "", "rowkeys": [key], "load_more_count": 0, "refresh_count": 0,
                         "load_type": 1}, "cookie": "", "ext": {}}
        return requests.post(url, json=data).json()['result']['feedData']['feeds'][0]['card']['feed']['tweet']['post']['video']['url']
    loop = asyncio.get_event_loop()
    bcc = Broadcast(loop=loop)
    sche = graia.scheduler.GraiaScheduler(loop=loop, broadcast=bcc)
    app = GraiaMiraiApplication(
        broadcast=bcc,
        connect_info=Session(
            host="http://localhost:10008",  # 填入 httpapi 服务运行的地址
            authKey="yszzsyszzs",  # 填入 authKey
            account=accout,  # 你的机器人的 qq 号
            websocket=True  # Graia 已经可以根据所配置的消息接收的方式来保证消息接收部分的正常运作.
        )
    )
    
    s_group=[1028646382]
    s_friend=[1653490853,2043467698]
    @bcc.receiver("FriendMessage")
    async def friend_message_listener(message: MessageChain, app: GraiaMiraiApplication, friend: Friend):
        if message.get(FlashImage):
            URL = message.get(FlashImage)[0].url
            await app.sendFriendMessage(friend, MessageChain.create([Plain('机器人检测到你发送闪照'), Image.fromNetworkAddress(URL)]))
        if message.get(App):
            con=message.get(App)[0].content
            con=json.loads(con)
            url=con['meta']['data']['contentJumpUrl']
            key=url.split('&')[3].split('=')[1]
            await  app.sendFriendMessage(friend, MessageChain.create([Plain(qqkandian(key))]))
        if 'help' in message.asDisplay():
            await app.sendFriendMessage(friend, MessageChain.create(
                [Plain('1.cos图一张\n2.随机妹子图一张\n3.爱情公寓名言\n4.毒鸡汤\n5.笑话\n6.绕口令\n(输入前面数字序号即可)')]))
        elif '1' in message.asDisplay():
            await  app.sendFriendMessage(friend, MessageChain.create([Image.fromNetworkAddress(cos())]))
        elif '2' in message.asDisplay():
            await  app.sendFriendMessage(friend, MessageChain.create([Image.fromNetworkAddress(meizi())]))
        elif '3' in message.asDisplay():
            await  app.sendFriendMessage(friend, MessageChain.create([Plain(lovehouse())]))
        elif '4' in message.asDisplay():
            await  app.sendFriendMessage(friend, MessageChain.create([Plain(dujitang())]))
        elif '5' in message.asDisplay():
            await  app.sendFriendMessage(friend, MessageChain.create([Plain(xiaohua())]))
        elif '6' in message.asDisplay():
            await  app.sendFriendMessage(friend, MessageChain.create([Plain(raokouling())]))
        elif '点歌'in message.asDisplay():
            mname=message.asDisplay().split('点歌')[-1]
            res=vipmusic(mname)
            await app.sendFriendMessage(friend,MessageChain.create([Plain(res)]))
        elif message.get(Image):
            await app.sendFriendMessage(friend,MessageChain.create([Plain(get_url(message.get(Image)[0].url))]))
        else:
            await app.sendFriendMessage(friend, MessageChain.create([Plain(getchat(message.asDisplay()) + '(智能回复)')]))
    
    
    @bcc.receiver("GroupMessage")
    async def group_message_listener(message: MessageChain, app: GraiaMiraiApplication, group: Group, member: Member):
        message.get(Voice)
        if message.get(FlashImage):
            URL = message.get(FlashImage)[0].url
            await app.sendFriendMessage(1653490853, MessageChain.create(
                [Plain(f'{member.id}{group.name}发送闪照:'), Image.fromNetworkAddress(URL)]))
        if message.get(App):
            con=message.get(App)[0].content
            con=json.loads(con)
            url=con['meta']['data']['contentJumpUrl']
            key=url.split('&')[3].split('=')[1]
            await  app.sendGroupMessage(group,MessageChain.create([Plain(qqkandian(key))]))
        if str(accout) in message.asDisplay():
            if 'help' in message.asDisplay().replace(f'@{accout}',''):
                await app.sendGroupMessage(group,MessageChain.create([Plain('1.cos图一张\n2.随机妹子图一张\n3.爱情公寓名言\n4.毒鸡汤\n5.笑话\n6.绕口令\n')]))
            elif '1' in message.asDisplay().replace(f'@{accout}',''):
                mes=await  app.sendGroupMessage(group,MessageChain.create([At(member.id),Image.fromNetworkAddress(cos())]))
                # time.sleep(4)
                # await app.revokeMessage(mes)
            elif '2' in message.asDisplay().replace(f'@{accout}',''):
                mes=await  app.sendGroupMessage(group,MessageChain.create([At(member.id),Image.fromNetworkAddress(meizi())]))
                # time.sleep(4)
                # await app.revokeMessage(mes)
            elif '3' in message.asDisplay().replace(f'@{accout}',''):
                await  app.sendGroupMessage(group,MessageChain.create([At(member.id),Plain(lovehouse())]))
            elif '4' in message.asDisplay().replace(f'@{accout}',''):
                await  app.sendGroupMessage(group,MessageChain.create([At(member.id),Plain(dujitang())]))
            elif '5' in message.asDisplay().replace(f'@{accout}',''):
                await  app.sendGroupMessage(group,MessageChain.create([At(member.id),Plain(xiaohua())]))
            elif '6' in message.asDisplay().replace(f'@{accout}',''):
                await  app.sendGroupMessage(group,MessageChain.create([At(member.id),Plain(raokouling())]))
            elif '点歌' in message.asDisplay():
                mname = message.asDisplay().split('点歌')[-1]
                res = vipmusic(mname)
                await app.sendGroupMessage(group, MessageChain.create([At(member.id),Plain(f'{res}(可下载)')]))
            else:
                await app.sendGroupMessage(group,MessageChain.create([At(member.id),Plain(f'{getchat(message)}')]))
    
    
    @bcc.receiver("FriendRecallEvent")
    async def recal_listener(message: FriendRecallEvent, app: GraiaMiraiApplication):
        a = await app.messageFromId(message.messageId)
        await app.sendFriendMessage(message.authorId, MessageChain.join(MessageChain.create([Plain('你刚刚撤回了:\n\n')]),a.messageChain.asSendable()))
    
    @bcc.receiver('GroupRecallEvent')
    async def group_recall(message: GroupRecallEvent, app: GraiaMiraiApplication, group: Group):
        mess = await app.messageFromId(message.messageId)
        member = await app.getMember(group.id, message.authorId)
        await app.sendFriendMessage(1653490853, MessageChain.join(
            MessageChain.create([Plain(f'{member.name}({message.authorId}) 刚刚在  {group.name}  撤回了:\n\n')]),
            mess.messageChain.asSendable()))
    
    @bcc.receiver('NewFriendRequestEvent')
    async def new_friend(event:NewFriendRequestEvent):
        await event.accept()
    @bcc.receiver('MemberJoinRequestEvent')
    async def menber_join(event:MemberJoinRequestEvent):
        await event.accept()
    @bcc.receiver('BotInvitedJoinGroupRequestEvent')
    async def menber_invite_join(event:BotInvitedJoinGroupRequestEvent):
        await event.accept()
    
    
    # @sche.schedule(timers.every_custom_seconds(3))
    # async def t(app: GraiaMiraiApplication):
    #     await app.sendFriendMessage(2043467698, MessageChain.create([Plain(f'来张图{random.random()}')]))
    
    app.launch_blocking()
    
    

    可以获取机器人所在的群聊发送的闪照和群友撤回的消息,其他的一些接口挺有趣的就加上去了(虽然没什么用)

    展开全文
  • 为了高效、直接地找到漂亮小姐姐,我用 python + adb 做了一个 python 抖音机器人 douyin-bot? 源码地址https:github.comwangshubdouyin-bot √ 特性特性√ 自动翻页√ 颜值检测√ 人脸识别√自动点赞√ 自动关注√ ...

    o55g08d9dv.jpg广告关闭

    腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!

    为了高效、直接地找到漂亮小姐姐,我用 python + adb 做了一个 python 抖音机器人 douyin-bot? 源码地址https:github.comwangshubdouyin-bot √ 特性特性√ 自动翻页√ 颜值检测√ 人脸识别√自动点赞√ 自动关注√ 随机防 ban 自动回复 原理打开《抖音短视频》app,进入主界面获取手机截图,并对截图进行压缩 (size ...

    usrbinenvpython#-*-coding:utf-8-*- importrequestsimportqqbotimportjson mess=json.load(open(qq.txt,r))defweather(city):r=cityurl=http:www.sojson.comopenapiweatherjson.shtml? city=+cityhtml=requests.get(url)result=json.loads(html.text)ifresult.get(status=200:return暂无【%s】天气预报! %cityres=...

    esr9mxs75w.jpeg

    二、实现第一个聊天机器人(一)安装python aiml库pip installaiml(二)获取alice资源python aiml安装完成后在python安装目录下的site-packages的aiml下会有alice子目录(比如d:program filespython36libsite-packagesaimlbotdataalice),这个是系统自带的一个简单的英文语料库。 (三)编程实现机器人聊天1 程序# ...

    kwyq3e033m.png

    并且该网站有一个非常好的点,就是提供了对外api,可以直接应用于微信公众号,qq等平台,可以说用途非常广泛。 我们甚至可以创建一个qq聊天机器人来供我们娱乐。 附上官网:http:www.turingapi.com2.方向这篇文章旨在是利用官方提供的每个人独特的api-key,用python获取网页信息,实现使用python与图灵机器人对话...

    fyf69towul.jpeg

    python 机器学习经典实例? 课程简介: 在如今这个处处以数据驱动的世界中,机器学习正变得越来越大众化。 它已经被广泛地应用于不同领域,如搜索引擎、机器人、无人驾驶汽车等。 本书首先通过实用的案例介绍机器学习的基础知识,然后介绍一些稍微复杂的机器学习算法,例如支持向量机、极端随机森林、隐马尔可夫模型...

    l0xbr19r6x.png

    python机器学习实战(一) 版权声明:本文为博主原创文章,转载请指明转载地址www.cnblogs.comfydeblogp7140974.html前言这篇notebook是关于机器学习中监督学习的k近邻算法,将介绍2个实例,分别是使用k-近邻算法改进约会网站的效果和手写识别系统. 操作系统:ubuntu14.04 运行环境:anaconda-python2.7-notebook ...

    l0cgzokfgn.png

    python机器学习实战(二) 版权声明:本文为博主原创文章,转载请指明转载地址http:www.cnblogs.comfydeblogp7159775.html前言这篇notebook是关于机器学习监督学习中的决策树算法,内容包括决策树算法的构造过程,使用matplotlib库绘制树形图以及使用决策树预测隐形眼睛类型. 操作系统:ubuntu14.04(win也ok) 运行...

    apx3jso0xa.png

    python机器学习实战(四) 版权声明:本文为博主原创文章,转载请指明转载地址http:www.cnblogs.comfydeblogp7364317.html前言这篇notebook是关于机器学习中logistic回归,内容包括基于logistic回归和sigmoid分类,基于最优化方法的最佳系数确定,从疝气病症预测病马的死亡率。 操作系统:ubuntu14.04 运行环境...

    ibvs4vjrb2.png

    python机器学习实战(三) 版权声明:本文为博主原创文章,转载请指明转载地址www.cnblogs.comfydeblogp7277205.html前言这篇博客是关于机器学习中基于概率论的分类方法--朴素贝叶斯,内容包括朴素贝叶斯分类器,垃圾邮件的分类,解析rss源数据以及用朴素贝叶斯来分析不同地区的态度. 操作系统:ubuntu14.04 运行环境...

    这份清单中包括了各不相同的20个主题,以及一些资深程序员分享使用python的经验,值得收藏。 mybridge ai 的排名结合了内部机器评估的内容质量和各种人为因素,包括阅读次数和阅读时长等。 对于python的初学者,我们推荐以下这些课程:rest api:使用 python,flask,flask-restful 和 flask-sqlalchemy 构建专业的 ...

    wttkkvx46p.jpeg

    目前,聊天机器人从功能和技术的角度,可以分为两类,一类是以 siri、amazon echo、微软小娜等为代表,偏向于工具性的服务型机器人,另一类则是以微软小冰为代表的娱乐型机器人,这两类聊天机器人不仅是应用场景不同,其背后的技术也不尽相同,本文做一个简单的介绍,并给出一个简单有趣的python实例。 工具型聊天...

    4z1orcizfm.png

    原文链接:www.cnblogs.comfydeblogp7140974.html 前言这篇notebook是关于机器学习中监督学习的k近邻算法,将介绍2个实例,分别是使用k-近邻算法改进约会网站的效果和手写识别系统. 操作系统:ubuntu14.04 运行环境:anaconda-python2.7-notebook 参考书籍:机器学习实战 notebook writer ----方阳 k-近邻算法(knn)...

    python网页爬虫工具集一个真实的项目,一定是从获取数据开始的。 无论文本处理,机器学习和数据挖掘,都需要数据,除了通过一些渠道购买或者下载的专业数据外,常常需要大家自己动手爬数据,这个时候,爬虫就显得格外重要了,幸好,python提供了一批很不错的网页爬虫工具框架,既能爬取数据,也能获取和清洗数据...

    2jfqn9949d.png

    原文链接:https:www.cnblogs.comfydeblogp7159775.html 前言这篇notebook是关于机器学习监督学习中的决策树算法,内容包括决策树算法的构造过程,使用matplotlib库绘制树形图以及使用决策树预测隐形眼睛类型. 操作系统:ubuntu14.04(win也ok) 运行环境:anaconda-python2.7-jupyter notebook 参考书籍:机器学习...

    87aoh8odwj.png

    原文链接:https:www.cnblogs.comfydeblogp7364317.html 前言这篇notebook是关于机器学习中logistic回归,内容包括基于logistic回归和sigmoid分类,基于最优化方法的最佳系数确定,从疝气病症预测病马的死亡率。 操作系统:ubuntu14.04 运行环境:anaconda-python2.7-jupyter notebook 参考书籍:机器学习实战和源码 ...

    操作系统:ubuntu14.04 运行环境:anaconda-python2.7-jupyter notebook 参考书籍:机器学习实战和源码,机器学习(周志华) notebook writer ----方阳 注意事项:在这里说一句,默认环境python2.7的notebook,用python3.6的会出问题,还有我的目录可能跟你们的不一样,你们自己跑的时候记得改目录,我会把notebook和...

    60cre1mzn3.png

    一个易于理解的scikit-learn教程,可以帮助您开始使用python机器学习。 使用python进行机器学习机器学习是计算机科学的一个分支,研究可以学习的算法设计。 典型的任务是概念学习,功能学习或“预测建模”,聚类和发现预测模式。 例如,通过经验或指示观察到的可用数据来学习这些任务。 该学科带来的希望是将经验纳入...

    wghw7y0bim.jpeg

    群里大佬分享的经典语录被撤回了,感觉错过一个亿! 怎么办? 用无所不能的 python 就可以将这些撤回的消息发给你的微信,让你从此走上人生巅峰 项目环境语言:python3编辑器:pycharm导包itchat:控制微信的第三方库这个库相信大家不陌生了,之前写的 python 机器人陪你聊天 python 定时给女神发早安 两篇文章里用的...

    puk1n4m6nv.jpeg

    很扎实:对经典有效的机器学习算法的核心内容进行了相当详细的推导; 很应用:将理论实打实地用python代码写出来,可以解决一定的任务; 很前沿:叙述了tensorflow框架、inception-v3fromgoogle、迁移学习等前沿技术“机器学习”在最近虽可能不至于到人尽皆知的程度,却也是非常火热的词汇。 机器学习是英文单词...

    iix3g0blep.jpeg

    编者按:本书节选自图书《python与机器学习实战》,python本身带有许多机器学习的第三方库,但本书在绝大多数情况下只会用到numpy这个基础的科学计算库来进行算法代码的实现。 这样做的目的是希望读者能够从实现的过程中更好地理解机器学习算法的细节,以及了解numpy的各种应用。 不过作为补充,本书会在适当的时候...

    展开全文
  • Python 微信机器人

    万次阅读 2018-05-27 17:06:09
    使用python构造一个微信聊天机器人 最近在学python的过程中无意间发现一个python库:wxpy,其可以实现让微信自动接收、处理消息并进行回复的一系列功能。感觉挺有意思的,便自行摸索学习,并成功地实现了其功能,故...

    使用python构造一个微信聊天机器人

    最近在学python的过程中无意间发现一个python库:wxpy,其可以实现让微信自动接收、处理消息并进行回复的一系列功能。感觉挺有意思的,便自行摸索学习,并成功地实现了其功能,故写下此博客作学习分享。

     

     

    1.安装wxpy

    wxpy 支持 Python 3.4-3.6,以及 2.7 版本。

    PYPI 官方源下载安装:

    pip install -U wxpy

    从豆瓣 PYPI 镜像源下载安装:

    pip install -U wxpy -i "https://pypi.doubanio.com/simple/"

    推荐国内用户使用镜像源下载安装,相比官方源更稳定,需要注意的是,若想确保安装到对应的 Python 版本中,命令中的 “pip” 替换为 “pip3” 或 “pip2”。

    linux下还需安装pillow:

    pip install pillow

     

     

    2.申请一个图灵的APIKEY

    需要去官网注册一个图灵机器人并获取APIKEY.(图灵机器人是一个中文语境下的对话机器人,可以使用免费版,一个账号最多可以创建5个机器人,一个机器人日调用接口数5000次)

    官网地址:http://www.tuling123.com/

    若觉得麻烦不想注册也可以,不需要APIKEY也可以实现简单的微信定时发送消息,简单回复等功能,如果想要智能化的自动回复功能,还是乖乖去注册吧。

     

     

    3.用wxpy登录,发送和回复消息

     

    1. 登录
    from wxpy import * # 导入模块
    bot = Bot() # 初始化机器人,扫码登陆,但每次登陆都得重新扫码
    #bot = Bot(cache_path=True)
    #把登录信息保存下来,不想每次都扫码的可以用这一条

     运行后会弹出微信登录的二维码,扫描后登录网页版微信

         2.发送消息

    friend = bot.friends().search(u'你好友的名字')[0]  
    friend.send(u"哈哈")  
    #指定某个好友并向其发送消息

     运行后会向指定好友发送所写的内容,可以在这个功能的基础上进一步实现定时向某人发送消息的功能。我发现一篇关于“教你用微信每天给女朋友说晚安”的文章,有兴趣可以看一下http://www.cnblogs.com/botoo/p/8622379.html

        3.回复消息

    @bot.register()  
    def reply_msg(msg):  
        msg.reply(u'本人正忙,请稍后回复')  
    embed()

    当好友向你发送消息后就会得到统一回复“本人正忙,请稍后回复”。
     

     

    4.调用图灵机器人API,实现自动回复

    from wxpy import * #导入模块
    bot = Bot(cache_path=True)#扫码登陆
    tuling = Tuling(api_key='自行输入')#初始化图灵机器人
    
    @bot.register(msg_types=TEXT)
    def auto_reply_all(msg):
        tuling.do_reply(msg)
    #自动回复功能,回复所有消息
    bot.join()#开始运行

    以下即为我运行成功自动回复的结果

    (以上源码均源自网络)

    关于用图灵的APIKEY来实现自动回复的文章我还收藏了几篇

    https://blog.csdn.net/getcomputerstyle/article/details/70175167

    https://blog.csdn.net/lin_zhongmu/article/details/77429181

    https://blog.csdn.net/qq_36313726/article/details/78572086

     

    5.关于可能出现的错误

        我在实现微信自动回复的过程中也不是一帆风顺的,在安装好wxpy,做好前期准备后,运行程序时出现ImportError: No module named 'wxpy'的错误,找了很久总是找不到解决方法,最后才在该文中找到解决方案:https://blog.csdn.net/damotiansheng/article/details/43916881

    我把自己做的py文件放到 site_packages 目录下,直接运行,成功地解决了问题。

        还有就是关于'sudo'不是内部或外部命令,也不是可运行的程序或批处理文件的错误,该文也给出了解决方案:

    http://www.zhimengzhe.com/windows/62640.html

     

    6.关于wxpy的一些文章

    https://www.jianshu.com/p/c0baf3c6db15

    https://www.jianshu.com/p/ef75e97146c2

    http://blog.sina.com.cn/s/blog_14c3c70df0102whkp.html

     

    需要注意的是不知道用微信机器人会不会有被封号的危险,所以建议大家用小号。

    关于Python构造机器人的学习分享就到这里,对于Python的学习,今后还会不定时更新,和我一样在自学Python的小伙伴可以关注一波,互相激励。害羞

    展开全文
  • 上一篇文章我们写了用python实现qq机器人的基本操作:xiaowei:使用python打造一个自己的QQ机器人 【基础篇】​zhuanlan.zhihu.com本篇文章,我们来尝试使用语音合成技术,让机器人发送语音消息。博主尝试了市面上...

    上一篇文章我们写了用python实现qq机器人的基本操作:xiaowei:使用python打造一个自己的QQ机器人 【基础篇】​zhuanlan.zhihu.comv2-487270680944f038f61968d70ab97aca_180x120.jpg

    本篇文章,我们来尝试使用语音合成技术,让机器人发送语音消息。博主尝试了市面上大多数知名的语音合成服务商,最后选择了阿里云。先来听一下阿里云语音合成的效果:

    【知乎不能插语音 我也不知道怎么操作 这里假装有语音 可以去我博客文章里听】

    一 、 开通阿里云语音合成

    开通免费版本后,进入控制台,创建一个新的项目:创建项目

    然后进入你的项目,切换到“语音合成”,选择一个你喜欢的声音,点“发布上线”(上方有一个appkey,请记下来):合成配置

    二、 阿里云接口调用之计算鉴权秘钥阿里云的鉴权秘钥(Access Token)是对所有阿里云服务都适用的一种秘钥,就是说任意项目要请求阿里云的接口,都需要计算这个秘钥(区别于TTS接口鉴权)。我们在适用语音合成接口的时候,需要先用阿里云的开发者id和秘钥计算出鉴权秘钥,然后在通过这个鉴权秘钥组合语音合成(TTS)的appkey,来请求语音合成接口。因为鉴权秘钥存在过期时间,最好的解决方法就是,每次请求语音合成接口,都先计算一遍这个秘钥。

    Access Key: 阿里云开发者ID,又称为访问公钥。

    Access Secret: 阿里云开发者秘钥,又称访问秘钥。

    Access Token:通过Access Key 和 Access Secret 计算出来的鉴权秘钥,有时效性。

    app key:项目的公钥,搭配Access Token来请求接口。

    首先安装阿里云SDK核心库: 命令行执行 pip install aliyun-python-sdk-core

    用python计算鉴权秘钥:

    from aliyunsdkcore.client import AcsClient

    from aliyunsdkcore.request import CommonRequest

    import json

    def get_aliyun_secret():

    client = AcsClient('你的开发者ID',

    '你的开发者秘钥',

    'cn-shanghai'

    )

    request = CommonRequest()

    request.set_method('POST')

    request.set_domain('nls-meta.cn-shanghai.aliyuncs.com')

    request.set_version('2019-02-28')

    request.set_action_name('CreateToken')

    r = client.do_action_with_exception(request)

    r = json.loads(r.decode())

    return r['Token'].get('Id')

    三、 阿里云接口调用之语音合成

    语音合成文档: https://help.aliyun.com/document_detail/94737.html

    语音合成带有python的SDK,但是无法pip安装,比较麻烦,所以我们采用Restful API形式(http调用)。

    http调用的方式,我们只需要用requests的post即可,将相关参数post到阿里云接口,即可返回音频。

    import requests

    import base64

    def tts(text):

    data = {

    'appkey':'你的appkey', #语音合成项目里的appkey

    "text": text, #要语音合成的文字

    'token':get_aliyun_secret(), #上一步的鉴权秘钥

    'format':'mp3', #合成语音的格式

    "sample_rate": "16000", #比特率

    "volume":'90', #音量

    "pitch_rate":'0', #语调

    "speech_rate":'-250', #语速

    "voice":'Siyue' #发音人 参数详见 https://help.aliyun.com/document_detail/84435.html

    }

    header = {

    "Content-Type": "application/json;charset=UTF-8"

    }

    r = requests.post('https://nls-gateway.cn-shanghai.aliyuncs.com/stream/v1/tts',data=json.dumps(data),headers=header)

    return base64.b64encode(r.content).decode()

    运行后会返回base64编码的语音。

    四、使用酷Q pro

    免费版的酷Q Air不支持发送语音,我们需要去下载一个酷Q pro,然后开个会员…

    下载地址: https://cqp.cc/t/14901

    然后按照上一篇文章的方法,配置酷Q http API。

    五、发送语音

    以发送群聊语音为例:

    def send_record(group_id,text):

    api_url = 'http://127.0.0.1:5700/send_msg'

    data = {

    'msg_type': 'group',

    'group_id':group_id,

    'message':'[CQ:record,file=base64://{}]'.format(tts(text))

    }

    requests.post(api_url,data=data)

    调用这个方法,传入qq群号,和要发送的文本,即可直接把文字转成语音发送到群聊啦。

    六、 完整代码

    from aliyunsdkcore.client import AcsClient

    from aliyunsdkcore.request import CommonRequest

    import json

    import requests

    accessKey = ''

    accessSecret = ''

    appKey = ''

    botServerApi = 'http://127.0.0.1:5700/send_msg'

    def get_aliyun_secret():

    client = AcsClient(accessKey,accessSecret,'cn-shanghai')

    request = CommonRequest()

    request.set_method('POST')

    request.set_domain('nls-meta.cn-shanghai.aliyuncs.com')

    request.set_version('2019-02-28')

    request.set_action_name('CreateToken')

    r = client.do_action_with_exception(request)

    r = json.loads(r.decode())

    return r['Token'].get('Id')

    def tts(text):

    data = {

    'appkey':'你的appkey', #语音合成项目里的appkey

    "text": text, #要语音合成的文字

    'token':get_aliyun_secret(), #上一步的鉴权秘钥

    'format':'mp3', #合成语音的格式

    "sample_rate": "16000", #比特率

    "volume":'90', #音量

    "pitch_rate":'0', #语调

    "speech_rate":'-250', #语速

    "voice":'Siyue' #发音人 参数详见 https://help.aliyun.com/document_detail/84435.html

    }

    header = {

    "Content-Type": "application/json;charset=UTF-8"

    }

    r = requests.post('https://nls-gateway.cn-shanghai.aliyuncs.com/stream/v1/tts',data=json.dumps(data),headers=header)

    return base64.b64encode(r.content).decode()

    def send_record(group_id,text):

    api_url = 'http://127.0.0.1:5700/send_msg'

    data = {

    'msg_type': 'group',

    'group_id':group_id,

    'message':'[CQ:record,file=base64://{}]'.format(tts(text))

    }

    requests.post(api_url,data=data)

    if __name__ == '__main__':

    send_record(12345678,'今天天气真不错')

    展开全文
  • python聊天机器人

    2020-07-17 19:17:49
    欢迎加入我们卧虎藏龙的python讨论qq群:729683466转眼七月中旬就要过了相信很多小伙伴已经开始了愉悦的假期玩耍之余偶尔也会去调侃一下机器人比如微信支付、微信团队(一个暖男,一...
  • python 图灵机器人

    2019-06-24 17:11:23
    # -*- coding:UTF-8 -*.../usr/bin/python3 import requests import itchat import time def get_response(msg): # 图灵机器人微信好友自动回复 KEY = 'c5bc10cce8eb4757aa04d0045627de81123123123' apiUrl = 'h...
  • python 微信机器人

    2018-11-30 09:29:30
    # coding:utf-8 from wxpy import * ...# 初始化微信机器人 bot = Bot() #给机器的好友列表 robotFriendList = [] #群聊列表 robotGooupsList = [] #需要发送的消息 infos=[ { 'type': 'image'...
  • :sparkles: Python 异步机器人框架 :sparkles: · · · 简介 NoneBot2 是一个可扩展的 Python 异步机器人框架,它会对机器人收到的事件进行解析和处理,并以插件化的形式,按优先级分发给事件所对应的事件响应...
  • python QQ聊天机器人,qqbot 使用简介

    千次阅读 2018-07-29 10:12:36
    qqbot 是一个用 python 实现的、基于腾讯 SmartQQ 协议的 QQ 机器人框架,可运行在 Linux 、 Windows 和 Mac OSX 平台下。 你可以通过扩展 qqbot 来实现: 监控、收集 QQ 消息 自动消息推送 聊天机器人 通过 QQ...
  • python 聊天机器人

    2018-02-25 19:49:05
    http://blog.csdn.net/lin_zhongmu/article/details/77429181
  • python实现机器人聊天

    2019-01-12 22:57:53
    自己弄了个小程序,就是通过访问腾讯AI接口,实现机器人聊天的功能,可以闲聊,也可实现查天气的一些功能。 AI平台链接 腾讯AI开放平台 准备工作 请求接口所需参数,如下图所示 注:sign是通过MD5加密生成的加密...
  • /usr/bin/env python #-*-coding:utf-8-*- #本文档用于界面相关函数 #程序员:陈永* #版权:哈尔滨工业大学 #日期:初稿:2020.12.21 #系统函数 import numpy as np from math import pi # 5次多项式插值求取求取一...
  • python 微信机器人之图灵

    千次阅读 2016-03-15 10:20:40
    前几天在知乎上看到有人用图灵提供的api实现了微信聊天机器人,本人也跟风之下做了一个,用时1天半, 制作微信聊天机器人,需要如下几个条件, 1:web微信通讯协议,和各路接口 2:机器人接口 微信web版的模拟登陆和...
  • python 环境3.7的版本 微信版本:3.0.0.47 版本 python 环境3.7的版本 微信版本:3.0.0.57 版本 ... ...运行 “demo.py”更改里面的代码,进行使用。...可以开发微信机器人。...有问题可以加qq群34030..
  • 不会的请联系我
  • 广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,... 我认为python更适合做ai有两个主要...python也可以用于处理高效的cc ++算法和cudacudnn实现的优秀包装语言,这就...
  • python机器人学习

    2018-01-03 21:31:47
    python机器人学习源代码,适用于python2版本,适合有python基础的学习。
  • PART 1 “幼儿的科学学习是在探究具体事物和解决实际问题中,尝试发现事物间的异同和联系的过程。... --end-- 声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com
  • 方法1:获取页面HTML内容,再通过... #!/usr/bin/env python #coding=gbk import requests import urllib.request ,sys import re import time def get_weather(provice,city): url="http://qq.ip138.com/weat...
  • 毕业论文设计可以下载参考哈。 资源包括 1、python机器人需求文档;2、机器人介绍PPT;3、绪论2000字;4、基于Python的智能聊天机器人的实现-开题报告 2000字
  • 网上有很多智能对话的接口,各个接口性能各异。 简单介绍几个: 1:图灵开放平台 ... 2:小 i 机器人 简介:调用次数无限制,但是基本上智能让它讲讲笑话之类的,聊天就别想了 3:腾讯 Ai 开放平台 ...
  • Python 微信机器人-通过wxpy库向指定名称的好友发送微信消息实例演示。 原来用的是 itchat 库,想向好友发送消息只能通过 UserName 这个关键词来发送,但是这个 UserName 每次重新登录后都是变的,根本没法定位到...
  • 在人工智能时代,聊天机器人日益流行。它是业界设计用来简化人机交互的最新工具。从电子商务到医疗保健机构,每个人都希望使用Chatbot与用户进行交互。 什么是聊天机器人 聊天机器人是一种软件应用程序,用于...
  • 一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,...
  • 点击上方Python知识圈,选择置顶或星标第一时间关注 Python 技术干货!阅读文本大概需要 6 分钟。看过 pk 哥之前的文章的小伙伴知道,pk 哥写过关于微信机器人的文章(用...
  • PyQQbot —— Python 实现的 QQ 机器人

    千次阅读 2018-12-28 09:59:02
    摘要:一、介绍QQBot是一个用python实现的、基于腾讯SmartQQ协议的简单QQ机器人,可运行在Linux和Windows平台下,所有代码均集成在一个[qqbot.py][code]文件中,代码量仅400多行(不包括注释)。程序采用单线程的方式运行...
  • 主要为大家详细介绍了基于Python QQBot库的QQ聊天机器人,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 为了高效、直接地找到漂亮小姐姐,我用 Python + ADB 做了一个 Python 抖音机器人 Douyin-Bot。特性自动翻页颜值检测人脸识别自动点赞自动关注随机防 Ban自动回复原理打开《抖音短视频》APP,进入主界面获取手机截图...
  •  为了找到漂亮小姐姐,作者用 Python + ADB 做了一个 Python 抖音机器人 Douyin-Bot。相信之前微信“跳一跳”风靡的时候,就有小伙伴听说过利用Python和ADB进行刷分的操作,本文里涉及的项目的原理与其相似,不过...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,159
精华内容 2,463
关键字:

pythonqq机器人

python 订阅