系列文章目录
基础:requests的基本使用:QQ机器人基础 传送门
pythonQQ机器人系列:使用requests实现QQ机器人聊天(0-2) 传送门
pythonQQ机器人系列:使用requests实现QQ机器人聊天(2-0)传送门
目录
系列文章目录
前言
一.源代码
二.源代码讲解
main源代码讲解
get源代码讲解
post源代码讲解(多群喊话)
前言
建议使用(2-0)的代码,比这个好用
此文章继承前面的文章,这次更新了本地词库的回答和多群回话,并且这个文章从新讲解源代码,为了大家更好的阅读不能像前面那样更新,都在一篇文章上,对看文章的人来说也并不友好,所以一篇文章咱们也就更新或优化二到三次,就会出下一篇文章,重新介绍。
最后谢谢大家的支持。
下载go-cqhttp。
找一个属于自己机器版本的下载即可,下载完后自行运行程序并加载好,360等可能会弹提示,这个是无毒的可以放心。
其他的是不需要改动的,改好后在运行一次go-cqhttp.bat就行了。
这个样就算是启动好了,当然有些可能开了设备锁,这个自行解决就可以了,有些时候扫码弄设备锁会弹链接,复制一下到浏览器打开扫一下就行了。
当然,大家也可能会遇到风控,当然风控是不会封号的,只是限制了你不能用框架了,把QQ号晾几天,水水群就行了。
一.源代码
这次,各个文件给分开进行编写,下面是文件的图示
下面分别是main,get,post文件的源代码
#main的源代码
import time
import BF2_API_get
def main_system(url,headers):
while True:
# 实例化
example_get_mess_html = BF2_API_get.get_mess_html(url,headers)
example_post_mess_html = BF2_API_get.get_mess_aggregate()
example_answer_check = BF2_API_get.answer_check()
example_answer_logic = BF2_API_get.answer_logic()
example_post_mes = BF2_API_get.post_mes()
# 新消息检查
example_get_mess_html.res_get_html()
self_qq_again = example_answer_check.answer_post_qq()
if self_qq_again == self_qq: # 对比QQ号验证是否有新消息
print('>>>:' * 3 + '无消息')
example_clear = BF2_API_get.list_clear()
clear = example_clear.list_clears() # 清除集合中的所有元素
time.sleep(3)
pass
else:
print('>>>:' * 3 + '新消息')
# 调用API实现机器人回复
#获取新消息
mes_content = example_post_mess_html.separate_mes_html()
#获取回答消息
msg = example_answer_logic.get_API_answer(mes_content=mes_content)
#进行提交回复消息
post_msg = example_post_mes.post_mes_API(msg=msg, group_id=group_id)
time.sleep(2)
example_clear = BF2_API_get.list_clear()
clear = example_clear.list_clears() # 清除集合中的所有元素
if msg == "接收消息中......":
BF2_API_get.Pending_implementation().shouting()
print('已退出.............')
if __name__ == '__main__':
res_mes_post = {"instruction_message": "message_seq","group_id": "736038975"}
group_id = res_mes_post["group_id"]#自行修改QQ群号
url = "http://127.0.0.1:5700/get_group_msg_history?group_id=" + group_id
self_qq = 2712065523#qq机器人的QQ
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36"}
main_system(url=url, headers=headers)
#get源代码
import requests
import pandas as pd # 准备实现本地词库
import BF2_API_post
import time
path = 'words\word.xlsx' # 本地词库路径
message_append = [] # 添加获取的全部内容
data_word = pd.read_excel(path)
word_question = data_word.loc[:, 'question'] # 读取question内容
word_answer = data_word.loc[:, 'answer'] # 读取answer内容
total = data_word.shape[0] # data.shape可以获取行列的总数
class get_mess_html(): # 获取网页的json并获取消息
def __init__(self, url, headers):
self.url = url
self.headers = headers
def res_get_html(self): # 获取最新的消息数据
res = requests.get(url=self.url, headers=self.headers).json() # 获取数据json
mes_list = res["data"]["messages"] # 键值取值
for res_get_mes in mes_list: # 循环获取全部内容
message_append.append(res_get_mes)
return None
class get_mess_aggregate(): # 回答消息
def separate_mes_html(self):
mes_get_append = message_append[-1] # 最新的消息记录
mes_content = mes_get_append["message"] # 拿取消息内容
mes_content_sender = mes_get_append["sender"]["nickname"] # 拿取消息发送者的名字
print(">>>>>>>>>:获取:" + mes_content_sender + ':' + mes_content) # 检查是否正常
return mes_content
class answer_logic():
def get_API_answer(self,mes_content): # 本地词库一级回答
# 回答消息的第一优先级
# 放到前面提前处理
num = 0
for num in range(total):
num = +num # 前加的意思是先进行一次运行下一次再 +1
answer_Pre_post = str(word_question[num])
'''
因为回答的消息在同行,所以后面也是num。
因为xlsx里面的数字是int类型,我们获取的消息里面的数字是str
所以要用str转化一下,这个漏洞我找了好久
哭~~~~~。
'''
if mes_content == answer_Pre_post:
msg = word_answer[num]
return msg # 弹出本地词库消息,便于下面发送
else:
pass
if mes_content == "菜单": # 回答消息的第二优先级
msg = "聊天\n多群喊话\n继续加油"#\n可以实现多行输出
return msg
elif mes_content == "多群喊话":
#_API_post.Multi_group_shouting().Get_group_list()
#_API_post.Multi_group_shouting().Shouting_realization(mes_content)
#print('>>>:' * 3 +"已完成多群喊话 ")
msg = '接收消息中......'
return msg
else: # 回答消息的第三优先级
urls = "http://api.qingyunke.com/api.php?key=free&appid=0&msg={}".format(mes_content)
answer_get = requests.get(url=urls).json()
answer_content = answer_get["content"] # 获取API回答的内容
print('>>>:' * 3 + "回答:" + answer_content) # 检察是否可以正常运行
msg = answer_content
return msg
class post_mes():
def post_mes_API(self, msg, group_id): # 进行回复
urls = "http://127.0.0.1:5700/send_group_msg?group_id=" + group_id + "&message=" + str(msg)
answer_post_use = requests.post(url=urls).json() # 发送消息
print('>>>:' * 3 + "已回答")
class answer_check(): # 检查消息是否刷新
def answer_post_qq(self): # 获取发送者的QQ号
poster_qq = message_append[-1]["sender"]["user_id"]
return poster_qq # 对比自身QQ号
class list_clear():
def list_clears(self): # 清除列表中的所有元素
message_append.clear()
return None
class Pending_implementation():#使用这个类实现各种功能的使用,相当于一个中转站
def shouting(self):
res_mes_post = {"instruction_message": "message_seq", "group_id": "736038975"}
group_id = res_mes_post["group_id"]
url = "http://127.0.0.1:5700/get_group_msg_history?group_id=" + group_id
self_qq = 2712065523
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36"}
group_id_list = []
group_name_list = []
while True:
# 实例化
example_get_mess_html = get_mess_html(url, headers)
example_post_mess_html = get_mess_aggregate()
example_answer_check = answer_check()
example_answer_logic = answer_logic()
example_post_mes = post_mes()
# 新消息检查
example_get_mess_html.res_get_html()
self_qq_again = example_answer_check.answer_post_qq()
if self_qq_again == self_qq: # 对比QQ号验证是否有新消息
print('>>>:' * 3 + '无消息')
example_clear = list_clear()
clear = example_clear.list_clears() # 清除集合中的所有元素
time.sleep(3)
pass
else:
print('>>>:' * 3 + '新消息')
# 调用API实现机器人回复
# 获取新消息
mes_content = example_post_mess_html.separate_mes_html()
BF2_API_post.Multi_group_shouting().Get_group_list()
BF2_API_post.Multi_group_shouting().Shouting_realization(mes_content)
time.sleep(2)
example_clear = list_clear()
clear = example_clear.list_clears() # 清除集合中的所有元素
break
#post源代码
import requests
group_id_list = []
group_name_list = []
class Multi_group_shouting(): #实现多群喊话
def Get_group_list(self):#获取群列表
url = 'http://127.0.0.1:5700/get_group_list'
res = requests.get(url=url).json()
message_group_list = res['data']
for list in message_group_list:#将群添加到集合中
group_id = list['group_id']
group_name = list['group_name']
# print(list['group_id'],list['group_name'])
group_id_list.append(group_id)
group_name_list.append(group_name)
print(group_name, group_id, '已添加')
return None
def Shouting_realization(self,word):
num = 0
for list in group_id_list:
url = 'http://127.0.0.1:5700/send_group_msg?group_id=' + str(list) + '&message=' + str(word)
req = requests.post(url=url).text
name_group = group_name_list[num]
num = num + 1
print(name_group, list, "已发送")
return None
if __name__ == '__main__':
url = 'http://127.0.0.1:5700/get_group_list'
word = str(input("ee:"))
Multi_group_shouting().Get_group_list()
Multi_group_shouting().Shouting_realization(word)
二.源代码讲解
main源代码讲解
我们此处只讲一个逻辑,便于下面的查看,后面再细讲。
import time
import BF2_API_get
def main_system(url,headers):
while True:
# 实例化
example_get_mess_html = BF2_API_get.get_mess_html(url,headers)
example_post_mess_html = BF2_API_get.get_mess_aggregate()
example_answer_check = BF2_API_get.answer_check()
example_answer_logic = BF2_API_get.answer_logic()
example_post_mes = BF2_API_get.post_mes()
# 新消息检查
example_get_mess_html.res_get_html()
self_qq_again = example_answer_check.answer_post_qq()
if self_qq_again == self_qq: # 对比QQ号验证是否有新消息
print('>>>:' * 3 + '无消息')
example_clear = BF2_API_get.list_clear()
clear = example_clear.list_clears() # 清除集合中的所有元素
time.sleep(3)
pass
else:
print('>>>:' * 3 + '新消息')
# 调用API实现机器人回复
#获取新消息
mes_content = example_post_mess_html.separate_mes_html()
#获取回答消息
msg = example_answer_logic.get_API_answer(mes_content=mes_content)
#进行提交回复消息
post_msg = example_post_mes.post_mes_API(msg=msg, group_id=group_id)
time.sleep(2)
example_clear = BF2_API_get.list_clear()
clear = example_clear.list_clears() # 清除集合中的所有元素
if msg == "接收消息中......":
BF2_API_get.Pending_implementation().shouting()
print('已退出.............')
if __name__ == '__main__':
res_mes_post = {"instruction_message": "message_seq","group_id": "736038975"}
group_id = res_mes_post["group_id"]
url = "http://127.0.0.1:5700/get_group_msg_history?group_id=" + group_id
self_qq = 2712065523
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36"}
main_system(url=url, headers=headers)
首先我们先实例化类(也就是给他们换个名字,把他们的名字变短一点),对于实现QQ群里面的回复,我们需要下面的几步操作。
一.获取最新的群消息
二.等待新消息
1.新消息出现,先查找本地词库是否有这个词,如果没有,再对比设置的二级回复,,如果前面都没有,最后使用网上的聊天机器人进行回答
2.回答完后提交给QQ,上传消息
三.重新循环
这就是大概的逻辑,我们也就会按照这个逻辑,进行程序的编写。
get源代码讲解
import requests
import pandas as pd # 准备实现本地词库
import BF2_API_post
import time
正常的引入库,我们使用pandas这个库准备实现本地词库的回答,我们到讲post的时候讲pandas。
class get_mess_html(): # 获取网页的json并获取消息
def __init__(self, url, headers):
self.url = url
self.headers = headers
def res_get_html(self): # 获取最新的消息数据
res = requests.get(url=self.url, headers=self.headers).json() # 获取数据json
mes_list = res["data"]["messages"] # 键值取值
for res_get_mes in mes_list: # 循环获取全部内容
message_append.append(res_get_mes)
return None
这部分的代码就是拿取群历史消息了,关于键值取值什么的前面讲了,也就不多说了,下面是图示,拿取所有的消息,并添加到列表中。
我们再通过下面的代码进一步提取信息,我们只需要最新的消息,所有直接索引最后一个消息集合,再通过键值取值的方法拿取发送者的名字与内容,最后将内容弹出,我们对名字不感兴趣。
class get_mess_aggregate(): # 回答消息
def separate_mes_html(self):
mes_get_append = message_append[-1] # 最新的消息记录
mes_content = mes_get_append["message"] # 拿取消息内容
mes_content_sender = mes_get_append["sender"]["nickname"] # 拿取消息发送者的名字
print(">>>>>>>>>:获取:" + mes_content_sender + ':' + mes_content) # 检查是否正常
return mes_content
下面是我们的逻辑回复的部分,因为我们要实现本地词库的回答,所以我就将本地词库的回答设置为一级回复(也就for循环是放在了if上面,return弹出后,后面的内容也就不再执行,如果没有弹出msg,就继续执行下面的内容,所以可以算一个一级回复) ,对于其他的回复也就放到了下面,我下面所写的二级回复,也就是“菜单”那个,说实话,也没多大用,还有消息可以用“\n”实现多行发送消息(下有图示),这里为什么多群喊话弹出的msg是“接收消息”,对于这个问题,到下面再说,或者去main源代码里的最下面看看,我没想出什么好招来实现多群喊话(我好菜),对于最后的第三优先级回复我们就是使用的青客云的聊天机器人(下有图示)了,在咱还没训练出机器人之前,也只能用这种机器人了。
class answer_logic():
def get_API_answer(self,mes_content): # 本地词库一级回答
# 回答消息的第一优先级
# 放到前面提前处理
num = 0
for num in range(total):
num = +num # 前加的意思是先进行一次运行下一次再 +1
answer_Pre_post = str(word_question[num])
'''
因为回答的消息在同行,所以后面也是num。
因为xlsx里面的数字是int类型,我们获取的消息里面的数字是str
所以要用str转化一下,这个漏洞我找了好久
哭~~~~~。
'''
if mes_content == answer_Pre_post:
msg = word_answer[num]
return msg # 弹出本地词库消息,便于下面发送
else:
pass
if mes_content == "菜单": # 回答消息的第二优先级
msg = "聊天\n多群喊话\n继续加油"#\n可以实现多行输出
return msg
elif mes_content == "多群喊话":
#_API_post.Multi_group_shouting().Get_group_list()
#_API_post.Multi_group_shouting().Shouting_realization(mes_content)
#print('>>>:' * 3 +"已完成多群喊话 ")
msg = '接收消息中......'
return msg
else: # 回答消息的第三优先级
urls = "http://api.qingyunke.com/api.php?key=free&appid=0&msg={}".format(mes_content)
answer_get = requests.get(url=urls).json()
answer_content = answer_get["content"] # 获取API回答的内容
print('>>>:' * 3 + "回答:" + answer_content) # 检察是否可以正常运行
msg = answer_content
return msg
"\n"的使用
青客云聊天机器人
一级回复代码讲解
path = 'words\word.xlsx' # 本地词库路径
data_word = pd.read_excel(path)
word_question = data_word.loc[:, 'question'] # 读取question内容
word_answer = data_word.loc[:, 'answer'] # 读取answer内容
total = data_word.shape[0] # data.shape可以获取行列的总数
num = 0
for num in range(total):
num = +num # 前加的意思是先进行一次运行下一次再 +1
answer_Pre_post = str(word_question[num])
'''
因为回答的消息在同行,所以后面也是num。
因为xlsx里面的数字是int类型,我们获取的消息里面的数字是str
所以要用str转化一下,这个漏洞我找了好久
哭~~~~~。
'''
if mes_content == answer_Pre_post:
msg = word_answer[num]
return msg # 弹出本地词库消息,便于下面发送
else:
pass
上面的代码包含了整个get源代码上面那一块没有被放进类里面的代码,以及回复逻辑类中的代码,为什么我把这两块代码分开了呢,因为我感觉如果回复消息的时候去运行前面的代码,浪费时间,所以就把他们丢到了外面,他们的值本来就是不变的所以先去运行他们后,应该可以节省时间。
path进行设置路径,后面用pandas进行读取文件,用data_word.loc[:, 'question'],可以读取整个question这一列,相应的data_word.loc[:, 'answer'],也可以读取整个answer这一列(下有图示)。
至于total = data_word.shape,可以获取数据的维度,下图所示
前面是行,后面是列,我们只需要行数,所以索引4就可以了。
话说,为什么我要用这个行呢?因为你的词库的遍历是有限的,要是无限的遍历,会出现你最喜欢的,红色的,error,error,error,所以知道害怕了吧(好像也就我会怕,我好菜)。
下面代码的num = +num意思是先运行一次后再加一,这就是后加(是后加吧?,还是前加,额~,算了!不管了,反正不重要,懂了就行),通过这样一次一次的循环,遍历完所有的词。
额,至于我为什么要用str,answer_Pre_post = str(word_question[num]),你可以看见Excel中我弄了一个“666”,这玩意获取出来,是“int类型”,而“mes_content”又是“str类型”,所以就必须转化一下(话说,这玩意整了我好久才找出他来,这个bug真气死我了),下面也简单的让大家看一下他们的索引。
所以,因为所对应的回答在同一列,所以他们后面的索引也都是num,最后弹出msg就可以了,当然如果本地词库里面没有回复,他就继续往下运行了。
class post_mes():
def post_mes_API(self, msg, group_id): # 进行回复
urls = "http://127.0.0.1:5700/send_group_msg?group_id=" + group_id + "&message=" + str(msg)
answer_post_use = requests.post(url=urls).json() # 发送消息
print('>>>:' * 3 + "已回答")
这个类,就单纯的实现QQ消息的发送也并没有什么好讲的(你们应该都会,相信你们),如果不懂这个url的话,可以去看看我前面写的以及go-cqhttp这个。
class answer_check(): # 检查消息是否刷新
def answer_post_qq(self): # 获取发送者的QQ号
poster_qq = message_append[-1]["sender"]["user_id"]
return poster_qq # 对比自身QQ号
class list_clear():
def list_clears(self): # 清除列表中的所有元素
message_append.clear()
return None
这个两个类也就合起来讲了,这两个类也是很简单,第一个单纯在前面的列表中拿取最后一个消息中发送者的QQ号,然后把QQ号弹出。第二个,额,这个还需要讲???就把那个放内容的列表清空。
当然下面还有一块重头戏,我们现在先跳过去,因为下面那个是多群喊话这个功能实现的一个中转站,我是比着我先写好的main源代码改的,
post源代码讲解(多群喊话)
import requests
group_id_list = []
group_name_list = []
class Multi_group_shouting(): #实现多群喊话
def Get_group_list(self):#获取群列表
url = 'http://127.0.0.1:5700/get_group_list'
res = requests.get(url=url).json()
message_group_list = res['data']
for list in message_group_list:#将群添加到集合中
group_id = list['group_id']
group_name = list['group_name']
# print(list['group_id'],list['group_name'])
group_id_list.append(group_id)
group_name_list.append(group_name)
print(group_name, group_id, '已添加')
return None
def Shouting_realization(self,word):
num = 0
for list in group_id_list:
url = 'http://127.0.0.1:5700/send_group_msg?group_id=' + str(list) + '&message=' + str(word)
req = requests.post(url=url).text
name_group = group_name_list[num]
num = num + 1
print(name_group, list, "已发送")
return None
if __name__ == '__main__':
url = 'http://127.0.0.1:5700/get_group_list'
word = str(input("ee:"))
Multi_group_shouting().Get_group_list()
Multi_group_shouting().Shouting_realization(word)
我们先在头顶上方上两个列表,一个存获取的群号,另一个存名字。再我们定义类,一个获取信息,另一个发送消息。对于我们的获取消息的类,也是不麻烦,通过键值取值的方法,拿取群号和群名,然后添加到列表中。发送消息的类,用切片的方法拿取列表中的群号与群名,当然url中只需要群号,群名我们在输出中使用(就这么点破代码,还整了我好久的时间,我人麻了)。
main源代码以及get源代码的结尾
首先,main中的实例化类我们不在多讲,进行消息的检查,需要刷新页面也就是需要如下,通过下面进行刷新页面,以及拿取检查所需要的QQ号
# 新消息检查
example_get_mess_html.res_get_html()
self_qq_again = example_answer_check.answer_post_qq()
下面便是检查消息是否为新消息,通过对比自身的QQ号来判定,当然这样也是有缺陷的,不过对于现在的我们来说是最好的。
如果相等,就是没有消息,清除掉列表中的内容,重新循环。
如果不相等,就是有新消息。
#获取新消息
mes_content = example_post_mess_html.separate_mes_html()
#获取回答消息
msg = example_answer_logic.get_API_answer(mes_content=mes_content)
#进行提交回复消息
post_msg = example_post_mes.post_mes_API(msg=msg, group_id=group_id)
time.sleep(2)
example_clear = BF2_API_get.list_clear()
clear = example_clear.list_clears() # 清除集合中的所有元素
这些就是正常的获取消息内容,把消息内容传递给逻辑回复的类,进行判断进行几级回复,然后提交回复内容,再清除列表中的内容。
if msg == "接收消息中......":
BF2_API_get.Pending_implementation().shouting()
print('已退出.............')
因为最上面我们已经引入过post源码了
import BF2_API_get
所以,我们调用get源码中的中转站的类,进行多群喊话的中转。
在这里解释一下,为什么要用中转,因为需要多群喊话,所以,就必须让代码捕捉到我们要喊话的内容,而单纯的我们上面的代码,是不具备捕捉喊话内容的功能的,所以我们就通过这个中转站实现捕捉内容,这个中转站的内容跟main源码差不多。
class Pending_implementation():#使用这个类实现各种功能的使用,相当于一个中转站
def shouting(self):
res_mes_post = {"instruction_message": "message_seq", "group_id": "736038975"}
group_id = res_mes_post["group_id"]
url = "http://127.0.0.1:5700/get_group_msg_history?group_id=" + group_id
self_qq = 2712065523
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36"}
group_id_list = []
group_name_list = []
while True:
# 实例化
example_get_mess_html = get_mess_html(url, headers)
example_post_mess_html = get_mess_aggregate()
example_answer_check = answer_check()
example_answer_logic = answer_logic()
example_post_mes = post_mes()
# 新消息检查
example_get_mess_html.res_get_html()
self_qq_again = example_answer_check.answer_post_qq()
if self_qq_again == self_qq: # 对比QQ号验证是否有新消息
print('>>>:' * 3 + '无消息')
example_clear = list_clear()
clear = example_clear.list_clears() # 清除集合中的所有元素
time.sleep(3)
pass
else:
print('>>>:' * 3 + '新消息')
# 调用API实现机器人回复
# 获取新消息
mes_content = example_post_mess_html.separate_mes_html()
BF2_API_post.Multi_group_shouting().Get_group_list()
BF2_API_post.Multi_group_shouting().Shouting_realization(mes_content)
time.sleep(2)
example_clear = list_clear()
clear = example_clear.list_clears() # 清除集合中的所有元素
break
我们只说改动的部分
这是main源码的原来部分。
if self_qq_again == self_qq: # 对比QQ号验证是否有新消息 print('>>>:' * 3 + '无消息') example_clear = BF2_API_get.list_clear() clear = example_clear.list_clears() # 清除集合中的所有元素 time.sleep(3) pass else: print('>>>:' * 3 + '新消息') # 调用API实现机器人回复 #获取新消息 mes_content = example_post_mess_html.separate_mes_html() #获取回答消息 msg = example_answer_logic.get_API_answer(mes_content=mes_content) #进行提交回复消息 post_msg = example_post_mes.post_mes_API(msg=msg, group_id=group_id) time.sleep(2) example_clear = BF2_API_get.list_clear() clear = example_clear.list_clears() # 清除集合中的所有元素 if msg == "接收消息中......": BF2_API_get.Pending_implementation().shouting() print('已退出.............')
这是中转站改动的部分。
if self_qq_again == self_qq: # 对比QQ号验证是否有新消息 print('>>>:' * 3 + '无消息') example_clear = list_clear() clear = example_clear.list_clears() # 清除集合中的所有元素 time.sleep(3) pass else: print('>>>:' * 3 + '新消息') # 调用API实现机器人回复 # 获取新消息 mes_content = example_post_mess_html.separate_mes_html() BF2_API_post.Multi_group_shouting().Get_group_list() BF2_API_post.Multi_group_shouting().Shouting_realization(mes_content) time.sleep(2) example_clear = list_clear() clear = example_clear.list_clears() # 清除集合中的所有元素 break
我们把main源码中的获取回答消息与发送消息进行了去除,然后把我们写好的喊话的函数放进去,因为我们的获取消息的函数还在,所以就会等待新的消息,这个新的消息会被放入我们写好的喊话功能中去,这样就会实现我们想要的喊话功能,如果没有新消息就会一直在这里监听,不过,任何新消息都会被当成喊话的内容,到最后,喊话完后,就会跳出这个中转站函数的循环,进入到我们写好的主程序循环中去(累死了,想睡觉)。
制作不易,希望大家喜欢。下面的时间我会进行优化,暂时不会更新,毕竟代码写的太杂乱了,得让代码好康,又好用。如有不懂的地方,我会解答的,当然也希望听听大佬的意见。