python微信机器人部署服务器_玩法收藏/云服务器/零基础微信机器人实践( Python )...

最近想做个微信机器人,主要是为了个人方便。在腾云阁发现这个教程,得到了一些启发。(修改转载已取得腾讯云授权)

技术路径和实现思路

首先编程语言使用了 Python , Python 语法简洁、第三方扩展丰富,也因为这里采用的微信消息框架 itchat 是基于 Python 的。

服务器当然使用腾讯云,这里我使用的是单核 1G 内存的最低配置,因为作为个人用的这个配置绰绰有余了,并且以后有更多用途的时候可以直接升级服务器配置和存储,这就是云服务器的巨大优势。

因为对于大部分人来说,拿到一台崭新的服务器要部署服务是非常麻烦的,所以我也不喜欢,于是乎想到了使用 docker 容器来运行我的代码,这样不用手动去配置服务器的运行环境,我只需要创建一个 docker 镜像就可以了,但是这样感觉还是挺麻烦的,还要安装 docker ,还要上传镜像。然后我发现了 daocloud ,它可以帮助我完成容器管理和镜像生成的工作。

所以我们部署路径是这样的:

编写代码->提交代码到 github 上->daocloud 自动生成 docker 镜像并部署到我们的云服务器上->自动运行

也就是提交代码到分支,然后,然后自动更新发布,服务就这么运行成功了

具体过程

所以对云服务器的配置而言,我只需要为其安装 daocloud 的被控端程序即可,然后就可以再也不用管这台服务器了,太爽了吧~

恰好发现腾讯云也支持了 daocloud 的系统,在为云服务器安装系统的时候选择服务市场-Docker 容器-Daocloud 混合式容器管理平台即可。

哇,那这样岂不是爽上加爽,不用登录服务器做任何配置~拿来即用,真刺激。

安装过程就不多说了,他们也提供了文档,非常简单,两行命令而已,然后我们可以在 daocloud 后台添加我们的主机了。

然后我们去创建一个项目

需要我们设置代码源,可以选择 github 和 coding ,确实比较人性化,那么我们就需要自己去 github 创建好 git 项目了,这里省略过,选择好后就可以创建了。

项目创建成功后我们只需要选择我们的代码分支构建一下就好了,这时容器镜像就创建好了,下来就是部署。

创建一个应用,会提示我们选择镜像来源,这里选择之前构建的镜像

点击部署最新版本就好了

然后我们分别在项目设置和应用设置里配置自动构建和自动部署,这样以后我们只要提交了代码, daocloud 会帮我们自动构建镜像然后部署,不需要我们自己手动操作,只需要专注代码逻辑,不用再操心部署了。

过程就是这么简单,腾讯云服务器作为基础,我们全程不用手动配置自己的服务器,多么轻松惬意。

程序实现

前面重点讲了服务器配置和程序部署,但是实际上部署的程序我们还没讲。

容器打包必须要有一个 Dockerfile 来告诉容器如何构建镜像,为了构建方便我们采用的 daocloud 提供的 python 镜像,以下是 dockerfile 的内容:

FROM daocloud.io/python:3-onbuild

ENTRYPOINT ["python"]

CMD ["run.py"]

可以看到,我们启动服务的文件是

#!/usr/bin/env python3

import bot.xiaoweiwei as wechat

def main():

wechat.run()

if __name__ == "__main__":

main()

import itchat

from target.youku import YoukuData

from target.qqvideo import QQVideoData

from plugins.tuling import get_response

@itchat.msg_register('Text')

def text_reply(msg):

itchat.send('/抠鼻',msg['FromUserName'])

return u'你好,请在群聊里面撩我 /微笑'

@itchat.msg_register('Text', isGroupChat=True)

def group_reply(msg):

if msg['isAt']:

if u'播放量' in msg['Text']:

data = YoukuData()

if not data.check:

return '查询失败!'

num = data.get_play_num()

itchat.send(u'优酷目前累计播放量为:%s' % num, msg['FromUserName'])

data = QQVideoData()

if not data.check:

return '查询失败!'

num = data.get_play_num()

return u'腾讯视频目前累计播放量为:%s' % num

elif u'订阅' in msg['Text']:

data = YoukuData()

if not data.check:

return '查询失败!'

num = data.get_sub_num()

return '目前优酷订阅人数为:%s' % num

elif '详细播放' in msg['Text']:

itchat.send('查询中...', msg['FromUserName'])

data = YoukuData()

if not data.check:

return '查询失败!'

d = data.get_play_num_more()

itchat.send(d, msg['FromUserName'])

data = QQVideoData()

if not data.check:

return '查询失败!'

d = data.get_play_num_more()

return d

else:

return get_response(msg['Text'][5:])

def run():

itchat.auto_login(True,enableCmdQR=2)

itchat.run()

>youku.py

```python

import util

homepage = 'http://i.youku.com/i/UMzg0ODQyNDk4OA==/videos'

class YoukuData(object):

def __init__(self,url=homepage):

self.ulr = url

self.check = True

self.soup = util.get_soup(url)

if self.soup is None:

self.check = False

#获得播放量

def get_play_num(self):

vnum = self.soup.select('.vnum')

if vnum is not None:

x = vnum[0]

n = x.get('title')

num = n

else:

num = '**找不到播放量**'

return num

#获得订阅数

def get_sub_num(self):

snum = self.soup.select('.snum')

if snum is not None:

x = snum[0]

n = x.get('title')

num = n

else:

num = '**找不到订阅数**'

return num

#详细播放量

def get_play_num_more(self):

titles = self.soup.select('.v-meta-title')

nums = self.soup.select('.v-num')

times = self.soup.select('.v-publishtime')

s = ' 优酷视频-最新%d 个视频:\n' % len(titles)

for x in range(len(titles)):

s += str(x+1) + '.'+titles[x].string+'\n 播放量:'+nums[x].string+'\n'

return s

这里程序实现很简单,使用的是 itchat 提供的方法,具体可以参考 itchat 项目https://github.com/littlecodersh/ItChat

总结

以上就是快速实现微信机器人的思路,其实主要想表达的就是现在的云技术对于开发者、对于编程初学者都是非常友好的,我们完全不必要投入过多精力在运维和发布维护上,只需要专注代码就可以。这也是云为我们生活带来的另一个方面的改变吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431350.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

arduino 水位传感器_云南可信赖的威卡压力传感器哪里有

云南可信赖的威卡压力传感器哪里有 k52gh264云南可信赖的威卡压力传感器哪里有 在生产生活中,对压力表的正确使用为工业生产提供了一定程度的便利。.指针转动受阻在检修过程中,先给弹賛管式压力表施加压力,如果发现被检测表的指针成比例变快或…

小甲鱼Python笔记(下)

二十八 二十九 文件 打开文件 open(文件名[,模式][,缓冲])  注意open是个函数不是方法 模式: 缓冲: 大于1的数字代表缓冲区的大小(单位是字节),-1(或者是任何负数)代表使用默认缓冲区大小 只…

linux内核编译后 make: 警告:检测到时钟错误.,系统时钟 make: 警告:检测到时钟错误。您的创建可能是不完整的。...

修改Linux的时间修改Linux时间一般涉及到3个命令: date, clock, hwclockdate: 修改系统当前的时间:[root]#date –s ‘2005/12/5 10:01:00系统当前的时间改成2005年12月5日,10点01分这个修改在系统重启后就…

linux服务器搭建_学linux可以做什么具体的就业方向是什么

学linux可以做什么当今世界流行的操作系统有3大类,Linux、Mac OS和Windows操作系统,Linux操作系统因其开源、免费、跨平台、良好的界面等特性,深受广大程序员们的青睐!Linux操作系统被广泛的应用于企业服务器领域,目前…

vue 给iframe设置src_vue组件中使用iframe元素

需要在本页面中展示vue组件中的超链接,地址栏不改变的方法:GoBack{{item.name}}export default {name: hello,data () {return {iframeState:false,goBackState:false,webAddress: [{name:segmentFault,link:https://segmentfault.com/a/1190000004502619},{name:博…

iOS coredata 避免添加重复数据

首先你要知道你数据中那一项是唯一的 然后对这个唯一进行现查后插的顺序进行处理 在查的时候 第一次array肯定是空的 判断array的内容为0的话先插入第一次数据 然后再做唯一那个参数是否存在 不在的话则插入数据 这样就可以避免重复数据了 就是一个逻辑的问题 之前没想通 然后今…

linux下安装两个tomcat,linux安装两个tomcat-Go语言中文社区

解压apache-tomcat-7.0.86.tar.gz,把解压后的复制一份修改/etc/profile文件:vim /etc/profile#################我添加的start######################################first tomcat######################CATALINA_BASE/root/app/apache-tomcat-7.0.86CA…

python中sn的意思_python获取内存SN编号等信息

物理机内存检查,#!/usr/bin/env python# -*-coding:UTF-8 -*-import osmemdict dict()memditail dict()#os.popen()os.system( dmidecode -t memory >./mem.txt )memstros.popen(cat ./mem.txt)mem_countos.popen("cat ./mem.txt |grep Number Of Devic…

中文域名销售平台_中国开关网.商城被搭建为南京某公司官网,这样的域名你喜欢吗?...

南京盛企电子有限公司是一个民营企业,成立于1997年6月,主要生产led广告板、薄膜开关、薄膜面板及其相类似的产品。公司拥有国内先进的制版系统、精细的丝网晒版设备、世界先进的丝网印刷机、数控恒温远红外烘道、uv固化机、模切机、激光切割机、电子产品…

linux远程虚拟桌面,2020-07-23 Linux 远程连接虚拟桌面

写在前面我的服务器为Centos7,其他 Linux 发行版可能略有差异。此方法不需要有物理显示屏。可以多用户同时登录,同一用户可以开启多个虚拟桌面。TigerVNC 安装使用这个软件提供 VNC 服务。Centos 下安装sudo yum install -y tigervnc-server用户模式开启…

kcbzps oracle_Oracle 11g DRCP配置与使用(上)

Oracle 11g推出了驻留连接池(Database Resident Connection Pool)特性,提供了数据库层面上的连接池管理机制,为应对高并发、短会话前端应用进行有益的尝试。DRCP的配置很简单,本篇中让我们一起来配置一个11g环境上的DRCP,分析其工…

2019数据安装勾选_【安装部署】esweb服务器如何单独部署

推荐指数:☆☆☆☆☆背景:在勤哲Exce服务器软件的使用过程中,有的客户并发用户数多,可将esweb服务器单独部署。具体安装步骤:首先,在一台服务器上安装除填报网站外的应用程序。双击安装包运行。点击”接受“…

linux多点触控软件测试,测试工程师日常工作中高频Linux命令

最近,一直在整理Linux这块的命令 。出发点,是在浩瀚的Linux命令和每个命令众多的参数中,挑选出一些高频的场景和命令 。加速测试从业者学习效率 & 学习精准度 。花最少的时间,学到最适用的技能 。Linux命令整理这事&#xff…

html css 前端实现消息提醒数_自学的福音,web前端学习全套视频教程+最新学习思维导图都在这里...

1、产品经理。这些是负责策划应用程序的一群人。他们会想出很多新鲜的、奇怪的、甚至是不可能实现的应用。一般来说,产品经理都追求丰富的功能。2、UI设计师。这些人负责应用程序的视觉设计和交互模拟。3、项目经理。这些人负责实际地运行和维护应用程序。4、最终用…

5233杨光--Linux第一次实验

学习计时:共14小时 读书:2小时 代码:7小时 作业:2小时 博客:3小时 一、学习目标 1. 能够独立安装Linux操作系统 2. 能够熟练使用Linux系统的基本命令 3. 熟练使用Linux中用户管理命令/系统相关命令/文件目录相关命…

求序列最长不下降子序列_最长不下降子序列nlogn算法详解

今天花了很长时间终于弄懂了这个算法……毕竟找一个好的讲解真的太难了,所以励志我要自己写一个好的讲解QAQ这篇文章是在懂了这个问题n^2解决方案的基础上学习。解决的问题:给定一个序列,求最长不下降子序列的长度(nlogn的算法没法求出具体的…

cmap参数 plt_plt.imshow的参数有哪些?

plt.imshow( X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, shape=None, filternorm=1, filterrad=4.0, imlim=None, resample=None, url=None, *, data=None, **kwargs, ) 参数:X图像数据。支持的…

安装Linux后windows在哪启动,在Linux下安装windows后解决Linux不能启动能问题

我的机器是Windows和Linux双系统,那天由于Windows用就了比较卡,就重装了一下Windows,结果导致重启后linux系统不知道到哪去了。懒得去重装Linux了,于是查找了一下资料,经过一番折腾,终于把我的Linux救回来了…

asp.net web开发步骤_WEB开发流程

1.需求确定2.分析与设计 (1)架构分析与设计 (2)业务逻辑分析 (3)业务逻辑设计 (4)界面设计3.开发环境搭建4.开发-测试-开发-测试5.文档编纂各个阶段过程都是有文档的,需求有需求的文档,设计有设计的文档,测试也有测试的文档.首先来看需求确定:需求…

Dart基础学习02--变量及内置类型

Dart基础学习02--变量及内置类型 Dart中的变量 首先看一个变量的定义和赋值 var name Bob; 在Dart中变量名都是引用,这里的name就是一个指向值为Bob的字符串的引用。 默认值 在Dart中没有初始化的变量都有一个默认值null,哪怕是int型的变量它的初始值也…