微信守护机器人,365天24小时全方面守护对象

前言:
舔狗必备神器,全天24小时守护对象你值得拥有,hhh, (手动啪我)

技术结构:
本工具使用python语言,是一个可执行的桌面程序哦,使用python tkinter 作为GUI,python tkinter简单易学,你值得拥有,废话少说,下面贴你们最爱的源码,想要打包好的程序请私聊我

守护机器人使用说明:
1、remind_sentence文件夹下的文件为早上起床、午餐提示、晚餐提示、晚安提示的随机词列表,可以自行添加,但是文件编码必须是UTF-8
2、微信名称记住不是微信ID也不是备注,是对方的微信名
3、有四个时间段的问候,如果哪个时间段不需要可以不填
4、如果扫码登陆不了请使用可以登陆网页微信的微信号

python tkinter源码

 def __init__(self):
        # 初始化对象
        root = Tk()
        # 给主窗口设置标题内容
        root.title("微信聊天机器人")
        # 设置窗口大小
        root.geometry('300x150')
        # 设置窗口是否可变长、宽,True:可变,False:不可变
        root.resizable(width=False, height=False)  
        # 登陆微信
        self.login = Button(root, text="启动机器人", command=self.start_robot)
        self.login.grid(row=30, column=1, sticky='N')
        # 微信名称
        self.wxnametext = Label(root, text="微信名称:").grid(row=0, column=0, sticky='W')
        self.wxnameinput = Entry(root)
        self.wxnameinput.grid(row=0, column=1, sticky='NW')
        # 起床时间
        self.morning_text = Label(root, text="早上问候时间:").grid(row=1, column=0, sticky='W')
        self.morning_input = Entry(root, textvariable="", validate='focusout', width=5, validatecommand=self.check_morning, invalidcommand=self.check)
        self.morning_input.grid(row=1, column=1, sticky='W')
        # 午餐时间
        self.lunch_text = Label(root, text="午餐问候时间:").grid(row=1, column=1, sticky='E')
        self.lunch = Entry(root, textvariable="", validate='focusout', width=5, validatecommand=self.check_lunch, invalidcommand=self.check)
        self.lunch.grid(row=1, column=3, sticky="W")
        # 下班时间
        self.closed_text = Label(root, text="下班问候时间:").grid(row=2, column=0, sticky='W')
        self.closed = Entry(root, textvariable="", validate='focusout', width=5, validatecommand=self.check_closed, invalidcommand=self.check)
        self.closed.grid(row=2, column=1, sticky='W')
        # 晚餐时间
        self.dinner_text = Label(root, text="晚餐问候时间:").grid(row=2, column=1, sticky='E')
        self.dinner = Entry(root, textvariable="", validate='focusout', width=5, validatecommand=self.check_dinner, invalidcommand=self.check)
        self.dinner.grid(row=2, column=3, sticky='W')
        # 晚安问候
        self.night_text = Label(root, text="晚安问候时间:").grid(row=3, column=0, sticky='W')
        self.night = Entry(root, textvariable="", validate='focusout', width=5, validatecommand=self.check_night, invalidcommand=self.check)
        self.night.grid(row=3, column=1, sticky='W') 
        # 进入消息循环
        root.mainloop()

这里说明一下validatecommand和invalidcommand传的是校验函数,校验函数下面贴

```python
def check_morning(self):
        '''判断是否是一个有效的日期字符串'''
        morning = self.morning_input.get()
        try:
            time.strptime(morning, "%H:%M")
            return True
        except ValueError:
            self.morning_input.delete(0, END)
            return False

    def check_lunch(self):
        '''判断是否是一个有效的日期字符串'''
        lunch = self.lunch.get()
        try:
            time.strptime(lunch, "%H:%M")
            return True
        except ValueError:
            self.lunch.delete(0, END)
            return False

    def check_closed(self):
        '''判断是否是一个有效的日期字符串'''
        closed = self.closed.get()
        try:
            time.strptime(closed, "%H:%M")
            return True
        except ValueError:
            self.closed.delete(0, END)
            return False

    def check_dinner(self):
        '''判断是否是一个有效的日期字符串'''
        dinner = self.dinner.get()
        try:
            time.strptime(dinner, "%H:%M")
            return True
        except ValueError:
            self.dinner.delete(0, END)
            return False

    def check(self):
        tkinter.messagebox.showinfo("提示", "请输入正确的日期,格式为24小时制")
        return False

    def check_night(self):
        '''判断是否是一个有效的日期字符串'''
        night = self.night.get()
        try:
            time.strptime(night, "%H:%M")
            return True
        except Exception:
            self.night.delete(0, END)
            return False

time.strptime校验时间,delete删除用户输入,tkinter.messagebox.showinfo弹窗提示

重点来了

 # 在规定时间内进行关心她操作
    def start_care(self):
        morning = self.morning_input.get()
        lunch = self.lunch.get()
        closed = self.closed.get()
        dinner = self.dinner.get()
        night = self.night.get()
        try:
            # 待发送的内容,先置为空
            message = ""
            # 来个死循环,24小时关心她
            while True:
                # 提示
                print("守护中,时间:%s" % time.ctime())
                # 每天定时问候,早上起床,中午吃饭,晚上吃饭,晚上睡觉
                # 获取时间,只获取时和分,对应的位置为倒数第13位到倒数第8位
                now_time = time.ctime()[-13:-8]

                if morning == "":
                    morning = '99:00'
                if lunch == "":
                    lunch = '99:00'
                if closed == "":
                    closed = '99:00'
                if dinner == "":
                    dinner = '99:00'
                if night == "":
                    night = '99:00'

                if now_time == morning:
                    # 随机取一句问候语
                    message = choice(str_list_good_morning)
                    self.send_message(message)
                    print("提醒女友早上起床:%s" % time.ctime())

                elif now_time == lunch:
                    message = choice(str_list_good_lunch)
                    self.send_message(message)
                    print("提醒女友中午吃饭:%s" % time.ctime())
                  
                elif now_time == closed:
                    message = choice(str_list_closing_time)
                    self.send_message(message)
                    print("提醒女友下班:%s" % time.ctime())

                elif now_time == dinner:
                    message = choice(str_list_good_dinner)
                    self.send_message(message)
                    print("提醒女友晚上吃饭:%s" % time.ctime())

                elif now_time == night:
                    message = choice(str_list_good_dream)
                    self.send_message(message)
                    print("提醒女友晚上睡觉:%s" % time.ctime())

                time.sleep(60)
        except Exception:
            tkinter.messagebox.showerror("提示", "守护机器人异常,请重新启动")

后台线程守护

def start_robot(self):
        try:
            t1 = threading.Thread(target=self.start_care, args=())
            t1.setDaemon(True)
            t1.start()
        except Exception:
            tkinter.messagebox.showerror("提示", "守护机器人启动失败")
        
if __name__ == "__main__":
    bot = Bot(cache_path=True)

setDaemon设置主线程结束子线程也结束运行,Bot微信登陆,cache_path设置记住登陆

环境要求 PHP >= 7.0 PHP fileinfo 拓展 储存文件需要用到 PHP gd 拓展 控制台显示二维码 PHP posix 拓展 控制台显示二维码(linux) PHP 系统命令 拓展 执行clear命令 PHP SimpleXML 拓展 解析XML 安装 请确保已经会使用composer! 运行微信账号的语言设置务必设置为简体中文!!否则可能出现未知的错误! 1、git git clone https://github.com/HanSon/vbot.git cd vbot composer install 2、composer composer require hanson/vbot 运行 正常运行 php example/index.php 带session运行 php example/index.php --session yoursession 关于session : 带session运行会自动寻找设定session指定的cookies,如不存在则新建一个文件夹位于 /tmp/session 中,当下次修改代码时再执行就会免扫码自动登录。 如果不设置,vbot会自动设置一个6位的字符的session值,下次登录也可以直接设定此值进行面扫码登录。 PS:运行后二维码将保存于设置的缓存目录,命名为qr.png,控制台也会显示二维码,扫描即可(linux用户请确保已经打开ANSI COLOR) 警告!执行前请先查看index.php的代码,注释掉你认为不需要的代码,避免对其他人好友造成困扰 请在terminal运行!请在terminal运行!请在terminal运行! 目录结构 vbot demo (vbot 当前在运行的代码,也欢迎大家提供自己的一些实战例子) example (较为初级的实例) src (源码) tmp (假设缓存目录设置在此) session hanson (设定值 php index.php --session hanson) 523eb1 (随机值) users 23534234345 (微信账号的UIN值) file (文件) gif (表情) jpg (图片) mp3 (语音) mp4 (视频) contact.json (联系人 debug模式下存在) group.json (群组 debug模式下存在) member.json (所有群的所有成员 debug模式下存在) official.json (公众号 debug模式下存在) special.json (特殊账号 debug模式下存在) message.json (消息) 体验 扫码后,验证输入“echo”即可自动加为好友并且拉入vbot群。 vbot并非24小时执行,有时会因为开发调试等原因暂停功能。如果碰巧遇到关闭情况,可加Q群 492548647 了解开放时间。执行后发送“拉我”即可自动邀请进群。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值