请帮我写一个程序,每间隔1小时给女朋友发一个笑话,笑话是我收集在一个文本文件《笑话合集》中的,每个段落是一个笑话
时间: 2023-05-11 15:04:15 浏览: 94
好的,这个问题很简单。你可以使用 Python 编写一个脚本,使用 time 模块来控制发送笑话的时间间隔,使用 random 模块来随机选择一个笑话。以下是示例代码:
```python
import time
import random
# 读取笑话文件
with open('笑话合集.txt', 'r', encoding='utf-8') as f:
jokes = f.read().split('\n\n')
# 发送笑话
while True:
# 随机选择一个笑话
joke = random.choice(jokes)
# 发送笑话给女朋友
send_joke_to_girlfriend(joke)
# 等待1小时
time.sleep(3600)
```
请注意,`send_joke_to_girlfriend` 函数需要你自己实现,这里只是一个示例。另外,笑话文件需要你自己准备,每个笑话之间需要用两个换行符分隔开。
相关问题
用PY写一个PC版(不是网页版)微信软件聊天辅助工具, 程序要用到import win32gui import win32con d盘中的笑话合集.TXT是一个笑话的集合,文档中每个笑话的间隔是空行 要求每间隔20分钟向指定名字的好友按指定一个笑话, 如果收到“有病”“傻”“有毛病啊”停止发送 如果收到’看过了‘’没意思‘就再发下一个笑话
以下是一个可能的解决方案:
```python
import time
import random
import win32gui
import win32con
# 微信窗口的类名和窗口名
WX_CLASS = "WeChatMainWndForPC"
WX_TITLE = "微信"
# 笑话文件的路径和发送间隔(秒)
JOKE_FILE = "D:\\笑话合集.TXT"
SEND_INTERVAL = 20 * 60
# 要发送笑话的好友和发送次数
FRIEND_NAME = "某某"
SEND_COUNT = 3
# 笑话列表和当前发送的笑话索引
jokes = []
joke_index = 0
# 读取笑话文件
with open(JOKE_FILE, "r", encoding="utf-8") as f:
joke = ""
for line in f:
if line.strip() == "":
jokes.append(joke)
joke = ""
else:
joke += line
if joke != "":
jokes.append(joke)
# 获取微信窗口句柄
hwnd = win32gui.FindWindow(WX_CLASS, WX_TITLE)
# 发送笑话的函数
def send_joke():
global joke_index
if joke_index >= len(jokes):
joke_index = 0
joke = jokes[joke_index]
joke_index += 1
win32gui.SendMessage(hwnd, win32con.WM_SETTEXT, 0, FRIEND_NAME)
time.sleep(1)
win32gui.SendMessage(hwnd, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
win32gui.SendMessage(hwnd, win32con.WM_KEYUP, win32con.VK_RETURN, 0)
time.sleep(1)
win32gui.SendMessage(hwnd, win32con.WM_SETTEXT, 0, joke)
time.sleep(1)
win32gui.SendMessage(hwnd, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
win32gui.SendMessage(hwnd, win32con.WM_KEYUP, win32con.VK_RETURN, 0)
print("发送笑话:", joke)
# 循环发送笑话
send_count = 0
last_send_time = time.time()
while send_count < SEND_COUNT:
# 检查是否收到停止发送的消息
if win32gui.FindWindowEx(hwnd, 0, "Edit", None) != 0:
last_msg = win32gui.SendMessage(hwnd, win32con.WM_GETTEXT, 1024, 0)
if last_msg in ["有病", "傻", "有毛病啊"]:
print("收到停止发送的消息:", last_msg)
break
elif last_msg in ["看过了", "没意思"]:
send_joke()
last_send_time = time.time()
continue
# 检查是否到达发送间隔
if time.time() - last_send_time >= SEND_INTERVAL:
send_joke()
send_count += 1
last_send_time = time.time()
# 随机等待一段时间
time.sleep(random.randint(1, 10))
```
这个程序使用了 `win32gui` 和 `win32con` 模块来控制微信窗口,可以实现自动发送笑话的功能。具体实现过程如下:
1. 读取笑话文件,将每个笑话存储在一个列表中。
2. 获取微信窗口的句柄。
3. 定义一个发送笑话的函数,该函数会向指定的好友发送一个笑话,并更新当前发送的笑话索引。
4. 循环发送笑话,直到达到指定的发送次数或收到停止发送的消息。
5. 在每次循环中,先检查是否收到停止发送的消息,如果是则退出循环;否则检查是否到达发送间隔,如果是则调用发送笑话的函数并更新最后发送时间。
6. 在每次循环中,随机等待一段时间,以避免被微信识别为机器人。
注意,这个程序只是一个示例,实际使用时需要根据具体情况进行修改和调试。另外,自动发送消息可能会违反微信的使用协议,使用时需要自行承担风险。
用PY写一个PC版(不是网页版)微信软件聊天辅助工具,要求发给指定好友 程序要用到import win32gui import win32con d盘中的笑话合集.TXT是一个笑话的集合,文档中每个笑话的间隔是空行 要求每间隔20分钟左右向指定名字的好友按指定一个笑话, 如果收到“有病”“傻”“有毛病啊”停止发送 如果收到’看过了‘’没意思‘就再发下一个笑话
以下是一个可能的解决方案:
```python
import time
import win32gui
import win32con
# 定义微信窗口的类名和标题
WECHAT_CLASS = "WeChatMainWndForPC"
WECHAT_TITLE = "微信"
# 定义笑话文件的路径和发送目标
JOKE_FILE = "D:\\笑话合集.TXT"
TARGET_FRIEND = "某某"
# 读取笑话文件
with open(JOKE_FILE, "r", encoding="utf-8") as f:
jokes = f.read().split("\n\n")
# 获取微信窗口句柄
hwnd = win32gui.FindWindow(WECHAT_CLASS, WECHAT_TITLE)
# 发送笑话
for joke in jokes:
# 如果收到指定的回复,停止发送
if "有病" in last_msg or "傻" in last_msg or "有毛病啊" in last_msg:
break
# 发送笑话
win32gui.SendMessage(hwnd, win32con.WM_SETTEXT, 0, TARGET_FRIEND)
time.sleep(1)
win32gui.SendMessage(hwnd, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
time.sleep(1)
win32gui.SendMessage(hwnd, win32con.WM_SETTEXT, 0, joke)
time.sleep(1)
win32gui.SendMessage(hwnd, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
time.sleep(1200) # 间隔20分钟左右
# 获取最近一条消息
last_msg = win32gui.SendMessage(hwnd, win32con.WM_GETTEXT, 0, 0)
last_msg = last_msg.strip().split("\n")[-1]
# 如果收到指定的回复,继续发送下一个笑话
if "看过了" in last_msg or "没意思" in last_msg:
continue
```
这个程序使用了 `win32gui` 和 `win32con` 模块来控制微信窗口,读取笑话文件,然后按照要求发送笑话。程序会每隔20分钟左右发送一个笑话,如果收到指定的回复,就停止发送,如果收到另外一些回复,就继续发送下一个笑话。
阅读全文