故障处理记录-tempdb太大引起磁盘容量不足的处理(更新ing) - 影澜 - 博客园

mikel阅读(840)

来源: 故障处理记录-tempdb太大引起磁盘容量不足的处理(更新ing) – 影澜 – 博客园

上班时候遇到的问题,系统在进行某操作的时候报错,按习惯查看数据库错误日志发现是磁盘无法写入,直接登录数据库服务器,果然C盘是被占满了只有9M剩余,查找文件发现原因在于这个tempdb达到了21G。

当时有想到的方案是:

1、收缩数据库,不知道时间多长不知道会有什么影响,放弃

2、清理日志,但日志清了也只有2G空间,清空的时间也不好说,说不定清完再飚上来,放弃

3、重启服务,一般会初始化成几M大小,但也有可能还是一样大,而且不知道重启后恢复会不会有问题,时间多长,会不会有其他什么影响,放弃;

4、重启服务器,以前也有过宕机无法远程所以重启,采用后tempdb确实初始化了

重启服务器无效的备用方案:把tempdb转移到空间较大的分区(后来查了一下一样也要停止服务来修改再启动服务)

具体方法:检查tempdb的逻辑名字和位置:

SELECT name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');

停止服务,记录下数据库文件的位置,然后打开目录复制数据库相关文件到新的位置,移动也可以,执行以下脚本:

复制代码
USE master;
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev, FILENAME = 'D:\tempdb\tempdb.mdf');
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = templog, FILENAME = 'D:\tempdb\templog.ldf');
GO
复制代码

NAME = tempdev,NAME = templog 是逻辑名,FILENAME 指向的是数据库文件的实际位置

最后检查tempdb移动是否成功:

SELECT name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');

回头会学习一下前3种操作方式的影响和如何确定tempdb增长的原因,再做记录

SqlServer 2008的tempdb数据文件大小暴增处理 - weixin_34148340的博客 - CSDN博客

mikel阅读(804)

来源: SqlServer 2008的tempdb数据文件大小暴增处理 – weixin_34148340的博客 – CSDN博客

tempdb数据文件暴增,导致服务器磁盘空间被耗尽!

 

1.查看tempdb的使用分配情况

  1. use tempdb
  2. go
  3. SELECT top 10 t1.session_id,
  4. t1.internal_objects_alloc_page_count, t1.user_objects_alloc_page_count,
  5. t1.internal_objects_dealloc_page_count , t1.user_objects_dealloc_page_count,
  6. t3.login_name,t3.status,t3.total_elapsed_time
  7. from sys.dm_db_session_space_usage t1
  8. inner join sys.dm_exec_sessions as t3
  9. on t1.session_id = t3.session_id
  10. where (t1.internal_objects_alloc_page_count>0
  11. or t1.user_objects_alloc_page_count >0
  12. or t1.internal_objects_dealloc_page_count>0
  13. or t1.user_objects_dealloc_page_count>0)
  14. order by t1.internal_objects_alloc_page_count desc

2.从internal_objects_alloc_page_count和internal_objects_dealloc_page_count可以看出,给session分配了44096页,计算一下:

select 44096*8/1024/1024 as [size_GB]

 

可能是因为时间太久,已经找不到导致暴增的会话。

 

3.如果产生问题的会话还存在的话,可以根据会话id进一步查看具体执行的SQL内容

  1. select p.*,s.text
  2. from master.dbo.sysprocesses p
  3. cross apply sys.dm_exec_SQL_text(p.SQL_handle) s
  4. where spid = 74

 

临时重启了数据库服务器后解决问题。但是目前还要继续监控分析,因为没有根本解决问题。

sqlserver解决tempdb过大的问题 - u011747152的博客 - CSDN博客

mikel阅读(2133)

来源: sqlserver解决tempdb过大的问题 – u011747152的博客 – CSDN博客


#查出最大的spid
use tempdb
go
SELECT top 10 t1.session_id,
t1.internal_objects_alloc_page_count, t1.user_objects_alloc_page_count,
t1.internal_objects_dealloc_page_count , t1.user_objects_dealloc_page_count,
t3.login_name,t3.status,t3.total_elapsed_time
from sys.dm_db_session_space_usage t1
inner join sys.dm_exec_sessions as t3
on t1.session_id = t3.session_id
where (t1.internal_objects_alloc_page_count>0
or t1.user_objects_alloc_page_count >0
or t1.internal_objects_dealloc_page_count>0
or t1.user_objects_dealloc_page_count>0)
order by t1.internal_objects_alloc_page_count desc

#看是哪条SQL导致的
select s.text,p.*
from master.dbo.sysprocesses p
cross apply sys.dm_exec_SQL_text(p.SQL_handle) s
where spid = 55

实战案例--TEMPDB暴涨 - phper111的博客 - CSDN博客

mikel阅读(936)

来源: 实战案例–TEMPDB暴涨 – phper111的博客 – CSDN博客

前言

tempdb暴增,造成磁盘空间不足,甚至影响业务运行。

正文

如图,tempdb log文件从7.40开始突然暴涨,因为 tempdb 0 M到 40G
 

tempdb 所在磁盘是C 盘
C盘的可用空间正好也为40G
在下午16.22左右的时候tempdb 文件暴涨已经影响到业务使用.临时解决是备份收缩日志。下面通过监控信息查找造成问题的原因:
查看7.40 之后这段时间 的运行语句,发下有个会话1085一直在运行
这个会话分配了内部对象(就是使用了tempdb的对象)
 
而言会话从7.46开始,一直持续到下午16.20 从时间上也非常吻合。所以他就是我们要找的元凶。

原因

对应普通的 简单模式的数据库无法重用日志的主要原因是没有做checkpoint,和存在没有提交的事务。但对于TEMPDB 来讲 他不需要预写日志。因为Tempdb 不支持重做(Redo)但需支持回滚(rollback).这也是tempdb日志存在的原因.
如果一个事务还没有提交,那它可以在任何时候回滚。SQL Server必须做好这种准备,以便能够从日志记录中找回修改前的数据内容,完成回滚。在SQL Server里面,所有的日志记录都有严格顺序,中间不可以有任何跳跃。所以如果某个数据库有没有提交的事务,SQL Server会标记所有从这个事务开始的日志记录(不管和这个事务有没有关系)为活动事务日志 。这些日志记录都有可能“需要”被用来做回滚。

解决

找到语句后,这个语句一直持续运行的原因是,等待ASYNC_NETWORK_IO
这说明,客户端和数据库服务器网络传输存在问题或者程序中未接收数据库传输的数据。更多的是后者。问题就提交给开发,检查代码,对程序进行优化。

补充

查看日志空间使用的方法:
DBCC LOGinfo() 查看vlf的状态
DBCC SQLPERF(LOGSPACE) 建议用,查看日志空间的使用 ,更准。
从UI 或者查
  用下面的语句查:

都是不准的

C# json解析时,得到JObject后怎么判断它的某一键值是否存在?_博问_博客园

mikel阅读(2794)

来源: C# json解析时,得到JObject后怎么判断它的某一键值是否存在?_博问_博客园

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using System.IO;

namespace JsonTest
{
class Program
{
static void Main(string[] args)
{
string str = “{\”3\”:123,body:456,list:{title:’abc’,body:’what’}}”;
JObject jo = JObject.Parse(str);
if (jo.Property(“3”) == null || jo.Property(“3”).ToString() == “”)
{
Console.WriteLine(“键值key不存在!”);
}
bool hasErr = jo.Properties().Any(p => p.Name == “err”)//或是这样
IEnumerable properties = jo.Properties();
foreach (JProperty item in properties)
{
Console.WriteLine(item.Name + “:” + item.Value);
}
Console.ReadKey();
}
}
}
参考:
http://q.cnblogs.com/q/46146/

用Python完成毫秒级抢单,助你秒杀淘宝大单 - 上海小胖 - 博客园

mikel阅读(1044)

Selenium

来源: 用Python完成毫秒级抢单,助你秒杀淘宝大单 – 上海小胖 – 博客园

目录:

  1. 引言
  2. 环境
  3. 需求分析&前期准备
  4. 淘宝购物流程回顾
  5. 秒杀的实现
  6. 代码梳理
  7. 总结

0 引言

年中购物618大狂欢开始了,各大电商又开始了大力度的折扣促销,我们的小胖又给大家谋了一波福利,淘宝APP直接搜索:小胖发福利,每天领取三次粉丝专属现金大红包。

有了现金大红包,如何做到更省钱的剁手呢?今天给大家提供一种思路,用Python实现秒杀订单,借用自动化方式完成最优解。

1 环境

操作系统:Windows

Python版本:3.7.2

2 需求分析&前期准备

2.0 需求分析

我们的目标是秒杀淘宝的订单,这里面有几个关键点,首先需要登录淘宝,其次你需要准备好订单,最后要在指定时间快速提交订单。

登录淘宝,这里就要用到一个爬虫利器Selenium,它是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击、下拉等等操作,所见即所得。另外对于一些 JavaScript 渲染的页面来说,此种抓取方式非常有效。

2.1 Selenium的安装

Selenium 的安装很简单,可采用如下方式。

pip install selenium

Selenium安装好之后,并不能直接使用,它需要与浏览器进行对接。这里拿Chrome浏览器为例。若想使用Selenium成功调用Chrome浏览器完成相应的操作,需要通过ChromeDriver来驱动。

2.2 ChromeDriver的安装

这里是ChromeDriver的官方下载地址。

链接:

https://chromedriver.storage.googleapis.com/index.html

我们在下载之前先来确认下我们使用的Chrome浏览器版本。

在这里插入图片描述

通过ChromeDriver的下载链接,找到与之对应的Chrome浏览器版本,根据你电脑系统的平台类型进行下载。

在这里插入图片描述
在这里插入图片描述

下载完成之后,解压,将其放置在Python安装路径下Scripts文件夹中即可

在这里插入图片描述

上述操作结束后,我们执行如下命令,测试一下

from selenium import webdriver
# 打开Chrome浏览器
browser = webdriver.Chrome()

代码执行后,若成功打开了浏览器,则证明你的ChromeDriver安装的没问题,可以正常愉快地使用Selenium了。

接下来,我们先来回顾下淘宝购物流程。

3 淘宝购物流程回顾

3.1 首先要打开淘宝网站

https://www.taobao.com

换作使用Seleuinm方式,代码如下:

browser.get("https://www.taobao.com")

3.2 我们登录淘宝才能进行下一步操作

在这里插入图片描述
换成Seleuinm方式,代码:

browser.find_element_by_link_text("亲,请登录").click()

这时我们就要就跳到了一个扫码登录的页面,我们用手机进行扫码,登录成功之后进行下一步。

3.3 登录成功之后,我们来打开购物车,链接如下:

https://cart.taobao.com/cart.htm

换成Seleuinm方式,代码:

browser.get("https://cart.taobao.com/cart.htm")

3.4 我们想要全选购物车中的商品,直接点击全选即可

在这里插入图片描述

换成Seleuinm方式,代码:

browser.find_element_by_id("J_SelectAll1").click()

注:若你的购物车商品比较多,又不想全选购买,那就 手动 勾选想要下单的商品。

3.5 勾选好商品后就可以“结算”下单

在这里插入图片描述

换成Seleuinm方式,代码即:

browser.find_element_by_link_text("结 算").click()

3.6 等待提交完订单后才算数

在这里插入图片描述

换成Seleuinm方式,代码即:

browser.find_element_by_link_text('提交订单').click()

3.7 订单成功秒下之后,接下来的付款,慢慢来就好。

在这里插入图片描述

4 秒杀的实现

秒杀的实现,思路也很简单。这里有两个时间点,一是抢购时间,一是当前时间。只需要比较这两个时间点,到了抢购时间立即下单即可。

记录时间,需要使用datetime这个内置模块,代码如下:

import datetime
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')

5 代码梳理

首先得登录淘宝,这里我们定义一个login函数

def login():
    # 打开淘宝首页,通过扫码登录
    browser.get("https://www.taobao.com")
    time.sleep(3)
    if browser.find_element_by_link_text("亲,请登录"):
        browser.find_element_by_link_text("亲,请登录").click()
        print(f"请尽快扫码登录")
        time.sleep(10)

接下来就是勾选购物车中的商品,这里我们定义一个picking函数

def picking(method):
    # 打开购物车列表页面
    browser.get("https://cart.taobao.com/cart.htm")
    time.sleep(3)


    # 是否全选购物车
    if method == 0:
        while True:
            try:
                if browser.find_element_by_id("J_SelectAll1"):
                    browser.find_element_by_id("J_SelectAll1").click()
                    break
            except:
                print(f"找不到购买按钮")
    else:
        print(f"请手动勾选需要购买的商品")
        time.sleep(5)

等待抢购时间,定时秒杀,这里我们定义一个buy函数

def buy(times):
    while True:
        now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
        # 对比时间,时间到的话就点击结算
        if now > times:
            # 点击结算按钮
            while True:
                try:
                    if browser.find_element_by_link_text("结 算"):
                        browser.find_element_by_link_text("结 算").click()
                        print(f"结算成功,准备提交订单")
                        break
                except:
                    pass
            # 点击提交订单按钮
            while True:
                try:
                    if browser.find_element_by_link_text('提交订单'):
                        browser.find_element_by_link_text('提交订单').click()
                        print(f"抢购成功,请尽快付款")
                except:
                    print(f"再次尝试提交订单")
            time.sleep(0.01)

6 总结

短短几十行代码就能秒杀淘宝订单,赶紧行动起来吧!记着,每天在淘宝上搜索小胖发福利,领取粉专属福利哟~

关注公众号「Python专栏」,后台回复「抢单器」获取全套代码!

Linux下MySql出现#1036 – Table ‘ ‘ is read only 错误解决方法 - 独行客 - 博客园

mikel阅读(1054)

来源: Linux下MySql出现#1036 – Table ‘ ‘ is read only 错误解决方法 – 独行客 – 博客园

这两天在进行网站搬家,这次网站搬家采用直接打包mySQL数据库和网页文件的形式进行迁移,上传好mySQL data目录里面的网站数据库至VPS上mysql存放数据库的目录里面,解压就行。我的VPS存放数据库的路径是 /usr/local/mysql/var。

上传好网站数据,解压,配置好数据库链接参数就行,网站就能正常连接上了,我本以为这已 经是顺利迁移完成了,但后来操作的时候,发现只能读取数据库的内容,不能更改写入任何信息,提示#1036 – Table ‘* ‘ is read only (*号为任意表),也就是说表只有只读属性。

通过SSH,给数据库文件777权限,admin是我的数据库文件夹

1、chmod -R 0777 /usr/local/mysql/var/admin/

给数据库目录的所属用户和组改为MySQL

2、 chown -R mysql:mysql admin

但是这样还不能更改数据库,首先,找到mysqladmin所在位置,一般都在mysql/bin下面,我的在/usr/local/mysql/bin 里面,还需要运行以下命令:

3、./mysqladmin -u root -p flush-tables

之后输入root账号的密码,马上就好了,没有任何任何提示,然后测试一下,能正常读写,搬家也就顺利完成。

SpringBoot 第一篇:入门篇 - 追梦1819 - 博客园

mikel阅读(1819)

来源: SpringBoot 第一篇:入门篇 – 追梦1819 – 博客园

前言

博主从去年开始,项目中使用的框架逐渐被 SpringBoot 取代。今年独立负责的两个项目也都是用 SpringBoot ,看过不少资料、博客。网上的资源,内容有长有短,参差不齐。有的内容甚至存在误导性,误导读者从另一个坑跳进另一个坑。另外,在项目中使用的 SpringBoot 的功能比较零散。

基于此,想系统整理其相关的知识点以及项目中踩得坑,并记录。一是作为自己的一个成长笔记,一是提醒后来的新人绕过已经踩过的坑。

此为本系列博客的写作初心。

概念

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

springboot 不是一门新技术。它是一个简化Spring应用开发的一个框架,整个Spring技术栈的一个大整合,更提供了J2EE开发的一站式解决方案。

博主更愿意把它理解为一个技术平台(不知道这样理解是否合适,欢迎大佬拍砖),几乎把所有的Java主流技术都整合进去,让开发者“随用随取”,不会陷入到繁杂的配置文件中无法自拔。

优点

  1. 自动化配置(springboot的核心特性);
  2. 简化spring的配置,无需xml配置文件;
  3. 内嵌了Tomcat、Jetty等容器;
  4. 直接运行jar包;

    ……

核心

spring 应用程序开发中,有四个核心:

  • 自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置
  • 起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。
  • 命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需传统项目构建。
  • Actuator:让你能够深入运行中的Spring Boot应用程序,一套究竟。

由于篇幅所限,此处先接触一下基本概念,不做深入讲解。后续会一一展开。

快速构建项目

maven构建项目

  1. 进入SpringBoot 项目构建网站 https://start.spring.io/ (如下);

  1. 选择对应的工具、语言、版本、相关信息、依赖等,按住 alt + Enter 下载,然后解压,导入IDE。

IDEA 构建项目

个人推荐使用 idea 构建, 方便,简洁,“傻瓜式”构建,直接 下一步 即可。感兴趣的可以参照之前的博客:https://www.cnblogs.com/yanfei1819/p/7798499.html

项目结构说明

如上图所示,Spring Boot项目的基础结构共三个文件:

  • src/main/java 程序开发以及主程序入口
  • src/main/resources 配置文件
  • src/test/java 测试程序
  • DemoApplication 类是程序入口
  • application.properties 是程序配置文件

在引入web模块后,src/main/resources/static 是静态资源文件放置路径;src/main/resources/template 是使用模板引擎时放置的 .html 静态页面。还有其他的一些路径,后续会一一阐述。

程序启动

程序员的入门课一般都是 Hello Word! ,下面我们演示 SpringBoot 版的 Hello Word! 。

创建controller层:

package com.yanfei1819.demo.web.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * Created by 追梦1819 on 2019-05-06.
 */
@Controller
public class HelloWordController {
    @ResponseBody
    @GetMapping("/helloWord") // <===> @RequestMapping(value = "/helloWord",method = RequestMethod.GET)
    public String helloWord(){
        return "Hello Word,SpringBoot!";
    }
}

注意两点:

  1. @GetMapping("/helloWord") 等价于 @RequestMapping(value = "/helloWord",method = RequestMethod.GET)
  2. 加上 @ResponseBody 后,返回结果不会被解析为跳转路径,而是直接写入返回值中。如果不加,则会解析为跳转路径;
  3. 程序默认的端口号是 8080,可以通过 application.properties 配置文件的 server.port= 进行修改。

以上程序通过 postman 测试结果是:

总结

SpringBoot 涉及的内容很多,如果没有一个系统的主线去学习,会感觉很零散。以上内容作为本系列博客的入门篇。后续会将 SpringBoot 的功能点一一展开。

本文同步于公众号【技术和人生】,欢迎关注。

.NETCore 快速开发做一个简易商城 - nicye - 博客园

mikel阅读(1389)

来源: .NETCore 快速开发做一个简易商城 – nicye – 博客园

.NETCore 快速开发做一个简易商城

介绍

上一篇介绍 《.NETCore 基于 dbfirst 体验快速开发项目》,讲得不太清楚有些多人没看懂。这次吸取教训,将一个简易商城做为案例,现实快速开发。

本案例用于演示或学习,不具有商业价值。

必备环境

1、node、node、node,重要的说三遍,现代开发必备环境之一,安装文件大小不过十几兆。

2、dotnet-SDK 2.1 +

3、SQLServer 2005 +,或者 SQLServer express

4、genms 命令,安装方法:dotnet tool install genms -g

特别说明 genms

genms 是一个开源的,依据SQLserver数据库快速开发生成工具。

生成原则基于ado.net包装,完成每种数据类型挖掘、数据缓存自动管理、链式查询语法、高可用读写分离等繁琐工作。

设计数据库模型

这次我们选择 SQLserver 存储数据,使用【Microsoft SQL Server Manaement Studio】自带的【数据库关系图】建表,建好表如下:

选择工作目录

由于是demo学习项目,我们选择在桌面创建目录【genms_shop】,在文件窗口地址栏输入cmd回车,如下图。

使用 genms 首次生成完整的项目

假设我们的 sqlserver 服务器就在本地,那么使用如下命令:

genms –help

genms . -D shop -N es -R -A -S

很快就生成好了,genms 准备执行开发环境初始化,如果首次执行 npm install -g gulp-cli 可能有些慢,如图:

如无意外会自动运行该项目,打开浏览器访问 http://localhost:5000/ 如图:

预览运行项目

这是 genms 生成的后台管理系统,现实繁琐的增删查改,我们尝试增加【分类】数据体验下操作,如图:

添加几次数据后,回到 Category 首页查看如图:

再来看看 goods 页面,和添加一个 goods:

总结

在当今,面向 dbfirst 开发的思想比较”落后“,许多同行在对比他们的同时,却忽略了什么是结果导向。技术都是实现业务的工具,不管是 code first 还是 dbfirst 都是为解决业务而存在。

genms 可以快速更新生成的代码,现实了缓存、读写分离(故障无感知切换)等等优势,这个开发模式我已经使用了很多年,并且会一直坚持下去。

本文demo源码:https://github.com/2881099/genms_shop

开源地址:https://github.com/2881099/dotnetgen_sqlserver

感谢支持开源的你们,谢谢观赏!!

如何用机器人监听老板微信? - 猪哥66 - 博客园

mikel阅读(1096)

来源: 如何用机器人监听老板微信? – 猪哥66 – 博客园

随着微信社交的兴起,我们加入的群也越来越多,一个不经意就被拉入好几个群,群是大家协同交流的平台,但是微信群却越来越泛滥,不知道大家有没有统计过自己浪费在毫无营养的群中的时间?
群聊
因为群质量或者群太吵的原因我们往往会将群设置为勿扰模式,而这样又有可能会错过一些自己比较关注的人说的话,比如女神、老板、和产品狗。。。

为了解决这个痛点,猪哥今天带大家一起来看看如何用python开发一个可以监听老板群聊的机器人

一、需求分析

1.女神在聊什么

你可以暗恋公司的某个妹子已久,她的人缘很好常常会在公司群里和大家聊天,所以你一直关注着希望能投其所好,或者产生共鸣,但是作为程序员的你却每天忙成狗,该怎么办?

2.老板有什么指示

在公司大群里,也许老板今天心情买了一些水果犒劳大家,然后在群里说:前台有水果,结果等你看到群消息时,前台只剩下妹子了。为什么吃零食总没有你的份?

3.又要改需求

你好不容易实现了一个功能,结果产品验收不通过,它说已经在项目群里和你说了并且@了你,但是你沉醉于实现功能忘了看。看来今晚又得加班改需求了,心好累怎么办?
改需求

二、功能设计

鉴于上面的需求分析,我们来设计一下功能:我们希望在某些群中监听某些人的讲话,如果他说话了不管发了什么,然后都记录下来,最好是能发到微信上这样更方便查看。

三、功能实现

上期为大家详细介绍了如何用Python创建一个微信机器人与好友聊天功能,今天我们会用wxpy库来一些群功能吧!

1.接收群消息

上次我们实现使用机器人与好友聊天只是实现了接收好友消息,那如何接收群消息呢?请看下图
在这里插入图片描述
这样我们就接收到群消息了,也可以将机器人引入到群中,让大家调戏。

2.过滤有用群消息

能接收到群消息之后,我们如何过滤我们需要的消息呢?这里我们可以在接收到群消息后比较下这个群是不是我们需要监听的群,然后再比较当前消息发送者在不在我们要监听的对象中,如果两者都满足便实现了消息过滤。

在配置文件中指定需要监听人的名称(最好是备注名,防止微信昵称重名)和需要监听的群
在这里插入图片描述
根据配置需要监听的群和人去过滤群消息
在这里插入图片描述

3.转发有用群消息

在我们拿到有用群消息后,我们如何保存这些信息呢?有很多种保存信息的方式,你可以存文件,存数据库,也可以选择转发。这里猪哥就选择将信息转发,这样有几个优点:简单、实时、永久保存。

那转发给谁?你可以转发到指定好友或者文件助手都行,在猪哥的代码中是转发到机器人管理员那里,如果你没有设置管理员那么就转发到文件助手中。
在这里插入图片描述
管理员设置技巧:如果你用小号登录,那么你可以设置你的大号为管理员;如果你没有小号用自己的大号登录,那这个你就空着默认就设置文件助手为管理员,相关信息发送至你的文件助手中。

四、功能演示

监听模式演示

五、总结

目前微信机器人第二阶段开发完成,本次不仅仅新增监听模式,还新增了以下以下一些功能:

  1. 机器人群聊:让机器人加入群聊,让更多的人来撩~
  2. 转发模式:可将老板重要指示转发至其他群
  3. 监控模式:监控群中别人发的分享,这样就可以第一时间发现是否有人在群中发广告
  4. 管理员:指定管理员后可以远程控制机器人的各个开关

大家可以根据自己的日常需求来自由发挥,个性化机器人哦~

Github项目地址:https://github.com/pig6/wxrobot
wxpy官方文档:https://wxpy.readthedocs.io/zh/latest

代码下载后可以直接运行,不需要修改,最后再送大家一张wxpy速查表!
在这里插入图片描述