Compare commits

...

102 Commits
test ... master

Author SHA1 Message Date
d35fa08ae9 Merge pull request '更新 main.py' (#53) from ruler229-patch-10 into master
Reviewed-on: #53
2025-05-29 14:10:09 +08:00
e730e4f07d 更新 main.py 2025-05-29 14:10:02 +08:00
71d3fef258 Merge pull request '更新 main.py' (#52) from ruler229-patch-9 into master
Reviewed-on: #52
2025-05-29 12:56:03 +08:00
3b7154c43c 更新 main.py 2025-05-29 12:55:52 +08:00
3081e27492 Merge pull request '更新 main.py' (#51) from ruler229-patch-8 into master
Reviewed-on: #51
2025-05-29 11:55:38 +08:00
d1018dcb6b 更新 main.py 2025-05-29 11:55:31 +08:00
7011750868 Merge pull request '更新 main.py' (#50) from ruler229-patch-7 into master
Reviewed-on: #50
2025-05-29 11:52:58 +08:00
3de65377c8 更新 main.py 2025-05-29 11:52:10 +08:00
QAQ
0eaec7a561 Merge pull request '删除测试' (#49) from QAQ into master
Reviewed-on: #49
2025-05-24 13:29:40 +08:00
“QAQ”
c604a07c81 删除测试 2025-05-24 13:29:04 +08:00
QAQ
893bce1805 Merge pull request '获取本地目录测试' (#48) from QAQ into master
Reviewed-on: #48
2025-05-24 13:17:19 +08:00
“QAQ”
d1d6307dc0 获取本地目录测试 2025-05-24 13:16:21 +08:00
QAQ
68f98f2b20 Merge pull request '本地目录测试' (#47) from QAQ into master
Reviewed-on: #47
2025-05-24 11:34:49 +08:00
“QAQ”
8997b1ebb3 本地目录测试 2025-05-24 11:33:50 +08:00
QAQ
feee265119 Merge pull request '本地目录测试' (#46) from QAQ into master
Reviewed-on: #46
2025-05-24 11:19:54 +08:00
“QAQ”
8cce90d4b4 本地目录测试 2025-05-24 11:19:17 +08:00
QAQ
22c2029103 Merge pull request '尝试短的语音功能' (#45) from QAQ into master
Reviewed-on: #45
2025-05-24 11:14:06 +08:00
“QAQ”
8f21c75592 尝试语音功能 2025-05-24 11:13:35 +08:00
QAQ
fa5f1f5ad0 Merge pull request '尝试语音功能' (#44) from QAQ into master
Reviewed-on: #44
2025-05-24 11:07:08 +08:00
“QAQ”
3bb631114f 尝试语音功能 2025-05-24 11:05:50 +08:00
QAQ
4a4f151e64 Merge pull request 'master' (#43) from master into QAQ
Reviewed-on: #43
2025-05-24 10:54:53 +08:00
71ee4c7bf8 Merge pull request '更新 main.py' (#42) from ruler229-patch-6 into master
Reviewed-on: #42
2025-05-23 15:26:04 +08:00
f1bc92f73f 更新 main.py 2025-05-23 15:25:58 +08:00
979eb197d6 Merge pull request '更新 main.py' (#41) from ruler229-patch-5 into master
Reviewed-on: #41
2025-05-23 15:03:11 +08:00
9391193e27 更新 main.py 2025-05-23 15:03:05 +08:00
35d1939d0b Merge pull request '更新 main.py' (#40) from ruler229-patch-4 into master
Reviewed-on: #40
2025-05-23 14:55:50 +08:00
49e1bb15a9 更新 main.py 2025-05-23 14:55:44 +08:00
0be461c61e Merge pull request '更新 main.py' (#39) from ruler229-patch-3 into master
Reviewed-on: #39
2025-05-23 14:27:13 +08:00
f4f40cd4aa 更新 main.py 2025-05-23 14:27:05 +08:00
6ff728b21f Merge pull request '在折现上显示数据' (#38) from saipo_test into master
Reviewed-on: #38
2025-05-23 12:32:37 +08:00
08f05ccaf9 在折现上显示数据 2025-05-23 12:32:07 +08:00
f827007657 Merge pull request '修改绘图bug' (#37) from saipo_test into master
Reviewed-on: #37
2025-05-23 12:28:16 +08:00
87a2ef7a1e 修改绘图bug 2025-05-23 12:27:36 +08:00
60ae392ae3 Merge pull request 'saipo_test' (#36) from saipo_test into master
Reviewed-on: #36
2025-05-23 12:19:51 +08:00
31f82db044 绘制日产量折线图 2025-05-23 12:19:13 +08:00
612115f7fc Merge pull request 'master' (#35) from master into saipo_test
Reviewed-on: #35
2025-05-23 12:02:39 +08:00
QAQ
895da59df9 Merge pull request '修改try' (#34) from QAQ into master
Reviewed-on: #34
2025-05-22 22:07:54 +08:00
“QAQ”
299d70c731 修改TRY 2025-05-22 22:06:50 +08:00
QAQ
68e57cdc4b Merge pull request 'master' (#33) from master into QAQ
Reviewed-on: #33
2025-05-22 21:50:30 +08:00
1005de3350 Merge pull request 'saipo_test' (#32) from saipo_test into master
Reviewed-on: #32
2025-05-22 21:46:38 +08:00
df152f1d8b 修改引用bug 2025-05-22 21:46:13 +08:00
a493233253 Merge pull request 'master' (#31) from master into saipo_test
Reviewed-on: #31
2025-05-22 21:45:41 +08:00
QAQ
1bcee67180 Merge pull request '修改引用astrbot.core.utils.session_waiter' (#30) from QAQ into master
Reviewed-on: #30
2025-05-22 21:32:17 +08:00
“QAQ”
3612be8201 修改引用astrbot.core.utils.session_waiter 2025-05-22 21:31:43 +08:00
QAQ
946f78a5a6 Merge pull request '提交井字棋游戏' (#29) from QAQ into master
Reviewed-on: #29
2025-05-22 21:17:54 +08:00
“QAQ”
cbb078eb4a 提交井字棋游戏 2025-05-22 21:16:12 +08:00
QAQ
a6944e856c Merge pull request '修改获取骚话文本方式' (#28) from QAQ into master
Reviewed-on: #28
2025-05-22 20:15:04 +08:00
“QAQ”
f5dc744507 修改获取骚话文本方式 2025-05-22 20:14:12 +08:00
QAQ
aef43f0720 Merge pull request '添加来句骚话功能' (#27) from QAQ into master
Reviewed-on: #27
2025-05-22 20:07:24 +08:00
“QAQ”
306800bec1 添加来句骚话功能 2025-05-22 20:05:15 +08:00
QAQ
66dc9e65fb Merge pull request '修改Import位置' (#26) from QAQ into master
Reviewed-on: #26
2025-05-22 18:03:18 +08:00
“QAQ”
58b02cd42d 修改Import位置 2025-05-22 18:02:53 +08:00
QAQ
dfd54bc96a Merge pull request '使用aiohttp' (#25) from QAQ into master
Reviewed-on: #25
2025-05-22 17:59:17 +08:00
“QAQ”
c769412f71 使用aiohttp 2025-05-22 17:58:49 +08:00
QAQ
c176402f38 Merge pull request '修改HTTP请求' (#24) from QAQ into master
Reviewed-on: #24
2025-05-22 17:54:19 +08:00
“QAQ”
5c6cec0d39 修改HTTP请求 2025-05-22 17:53:47 +08:00
QAQ
c4fb786d5a Merge pull request 'Dora表情包' (#23) from QAQ into master
Reviewed-on: #23
2025-05-22 17:44:21 +08:00
“QAQ”
263c2476fc Dora表情包 2025-05-22 17:41:15 +08:00
QAQ
09232b7bac Merge pull request '测试vscode提交' (#22) from QAQ into master
Reviewed-on: #22
2025-05-22 14:52:30 +08:00
“QAQ”
8f30dd73ec 测试vscode提交 2025-05-22 14:29:05 +08:00
51cc7fc8ec Merge pull request '更新 main.py' (#21) from ruler229-patch-2 into master
Reviewed-on: #21
2025-05-22 11:32:17 +08:00
9db0c3747b 更新 main.py 2025-05-22 11:32:09 +08:00
78fdda18cc Merge pull request '更新 main.py' (#20) from ruler229-patch-1 into master
Reviewed-on: #20
2025-05-22 11:05:26 +08:00
920b098df6 更新 main.py 2025-05-22 11:05:15 +08:00
45dcf35257 Merge pull request '修改bug' (#19) from saipo_test into master
Reviewed-on: #19
2025-05-22 03:38:15 +08:00
1653fb98e7 修改bug 2025-05-22 03:37:58 +08:00
8b846255e2 Merge pull request '部署' (#18) from saipo_test into master
Reviewed-on: #18
2025-05-22 03:36:23 +08:00
405e2024cd 部署 2025-05-22 03:36:02 +08:00
675dc706d8 Merge pull request '再次测试' (#17) from saipo_test into master
Reviewed-on: #17
2025-05-22 03:33:15 +08:00
7d1331faa0 再次测试 2025-05-22 03:32:13 +08:00
23669b399b Merge pull request '测试自动部署' (#16) from saipo_test into master
Reviewed-on: #16
2025-05-22 02:57:57 +08:00
74bbbacb94 测试自动部署 2025-05-22 02:57:22 +08:00
53c26f8595 Merge pull request '更新 main.py' (#15) from ruler229-patch-9 into master
Reviewed-on: #15
2025-05-21 21:52:42 +08:00
1f2f8e09db 更新 main.py 2025-05-21 21:52:34 +08:00
9d59f9f1c3 Merge pull request '更新 main.py' (#14) from ruler229-patch-7 into master
Reviewed-on: #14
2025-05-21 21:50:31 +08:00
e06ce3931e 更新 main.py 2025-05-21 21:50:23 +08:00
0ccd9b482a Merge pull request '更新 main.py' (#13) from ruler229-patch-6 into master
Reviewed-on: #13
2025-05-21 20:49:17 +08:00
7cf5e48eb4 更新 main.py 2025-05-21 20:49:01 +08:00
8e6da4b569 Merge pull request '更新 main.py' (#12) from ruler229-patch-5 into master
Reviewed-on: #12
2025-05-21 20:38:54 +08:00
ee3cfbecdb 更新 main.py 2025-05-21 20:38:48 +08:00
QAQ
62064c3cc6 Merge pull request '更新 main.py' (#11) from qaq-patch-1 into master
Reviewed-on: #11
2025-05-21 20:38:01 +08:00
QAQ
e693a02e51 更新 main.py
测试
2025-05-21 20:37:22 +08:00
f43310dd4a Merge pull request '更新 main.py' (#10) from ruler229-patch-4 into master
Reviewed-on: #10
2025-05-21 20:35:06 +08:00
080270b0b9 更新 main.py 2025-05-21 20:35:00 +08:00
ebec9ed323 Merge pull request '更新 main.py' (#9) from QAQ/astrbot_plugin_dajiao:qaq-patch-1 into master
Reviewed-on: #9
2025-05-21 20:27:36 +08:00
QAQ
09594360ad Merge branch 'master' into qaq-patch-1 2025-05-21 20:27:12 +08:00
9a12b3c2a4 Merge pull request '更新 main.py' (#8) from ruler229-patch-3 into master
Reviewed-on: #8
2025-05-21 20:23:54 +08:00
a53af94e9d 更新 main.py 2025-05-21 20:23:44 +08:00
QAQ
f70cc6bdad 更新 main.py 2025-05-21 20:22:20 +08:00
a66a6817a8 Merge pull request '更新 main.py' (#7) from ruler229-patch-2 into master
Reviewed-on: #7
2025-05-21 20:20:58 +08:00
9006c815ad 更新 main.py
注释掉等号部分
2025-05-21 20:09:08 +08:00
9c7a91d867 处理缩进 2025-05-21 19:58:41 +08:00
eebe7f6ff4 修改重复函数名 2025-05-21 19:55:47 +08:00
ff37c30515 Merge pull request '更新 main.py' (#5) from Ruler229/astrbot_plugin_dajiao:master into master
Reviewed-on: #5
2025-05-21 19:50:07 +08:00
01009ccb5c 更新 main.py 2025-05-21 19:41:50 +08:00
f33a3c8f59 修改bug 2025-05-12 16:34:15 +08:00
5cef6d3e74 修改时长排行榜文本bug 2025-05-12 16:31:53 +08:00
c0796d1d45 增加时长排行功能 2025-05-12 16:28:25 +08:00
30f7a420cc 增加打打你的 2025-05-08 19:30:47 +08:00
830617229d 增加打打你的 2025-05-08 19:30:21 +08:00
0368b2f6e9 增加产量排行榜 2025-05-08 11:48:26 +08:00
95728b03ac 修改新用户bug 2025-05-06 20:57:37 +08:00
3 changed files with 410 additions and 3 deletions

72
TicTacToeGame.py Normal file
View File

@ -0,0 +1,72 @@
import random
from typing import Optional
class TicTacToeGame:
def __init__(self):
self.board = [" "] * 9
self.player_symbol = "X"
self.computer_symbol = "O"
self.current_player = "X" # X先走
def print_board(self) -> str:
"""返回棋盘字符串"""
board_str = (
f"\n {self.board[0]} | {self.board[1]} | {self.board[2]} \n"
"-----------\n"
f" {self.board[3]} | {self.board[4]} | {self.board[5]} \n"
"-----------\n"
f" {self.board[6]} | {self.board[7]} | {self.board[8]} \n"
)
return board_str
def check_winner(self) -> Optional[str]:
"""检查是否有玩家获胜"""
win_combinations = [
[0, 1, 2], [3, 4, 5], [6, 7, 8], # 横向
[0, 3, 6], [1, 4, 7], [2, 5, 8], # 纵向
[0, 4, 8], [2, 4, 6] # 对角线
]
for combo in win_combinations:
if self.board[combo[0]] == self.board[combo[1]] == self.board[combo[2]] != " ":
return self.board[combo[0]]
return None
def is_board_full(self) -> bool:
"""检查棋盘是否已满"""
return " " not in self.board
def computer_move(self) -> int:
"""电脑AI移动"""
for i in range(9):
if self.board[i] == " ":
self.board[i] = self.computer_symbol
if self.check_winner() == self.computer_symbol:
return i
self.board[i] = " "
for i in range(9):
if self.board[i] == " ":
self.board[i] = self.player_symbol
if self.check_winner() == self.player_symbol:
self.board[i] = self.computer_symbol
return i
self.board[i] = " "
move_order = [4, 0, 2, 6, 8, 1, 3, 5, 7]
for move in move_order:
if self.board[move] == " ":
return move
return -1
def make_move(self, position: int) -> bool:
"""玩家移动"""
if 0 <= position <= 8 and self.board[position] == " ":
self.board[position] = self.current_player
return True
return False
def switch_player(self):
"""切换当前玩家"""
self.current_player = "O" if self.current_player == "X" else "X"

View File

@ -59,8 +59,8 @@ def insertUser(openid):
,charset='utf8'
)
cur = conn.cursor()
sql = "INSERT INTO dajiaouser (openid,nameid) VALUES (%s,%s)"
cur.execute(sql, (openid,"小jb"))
sql = "INSERT INTO dajiaouser (openid,nameid,baglist) VALUES (%s,%s,%s)"
cur.execute(sql, (openid,'小jb','{"baglist":[{"id":1,"num":1}]}'))
conn.commit()
cur.close()
conn.close()

337
main.py
View File

@ -5,7 +5,17 @@ from astrbot.api import logger
import random
from .back import time_long, volume, isUserExist, insertUser, seconds_to_hms, ml_to_l_ml, get_user_name
import pymysql
import matplotlib
import matplotlib.pyplot as plt
import os
from .Tool import get_tool_name
import astrbot.api.message_components as Comp
from astrbot.core.utils.session_waiter import (
session_waiter,
SessionController,
)
import aiohttp # 需要异步HTTP客户端
from .TicTacToeGame import TicTacToeGame
@register("helloworld", "YourName", "一个简单的 Hello World 插件", "1.0.0")
class MyPlugin(Star):
@ -37,6 +47,67 @@ class MyPlugin(Star):
conn.close()
yield event.plain_result(f"Hello,{get_user_name(event.get_sender_id())}, 你坚持了{time}s哦{a}.射出{V}ml,{b}!")
@filter.command("帮我连打十次")
async def dajiaoX(self, event: AstrMessageEvent):
if isUserExist(event.get_sender_id()) != True:
insertUser(event.get_sender_id())
user_name = event.get_sender_id()
conn=pymysql.connect(host = '192.168.31.9' # 连接名称默认127.0.0.1
,user = 'saipo' # 用户名
,passwd='Grasste0403' # 密码
,port= 3306 # 端口默认为3306
,db='saipo' # 数据库名称
,charset='utf8' # 字符编码
)
cur = conn.cursor()
time = [];V = [];a = [];b = []
for i in range(0,10):
time.append(round(random.uniform(1, 600), 2))
V.append(round(random.uniform(0.01,100), 2)) if i==0 else V.append(round(random.uniform(1, V[i-1]+1), 2))
a.append(time_long(time[i]))
b.append(volume(V[i]))
sql = "INSERT INTO dajiao (openid, timelong, volume) VALUES (%s, %s, %s),(%s, %s, %s),(%s, %s, %s),(%s, %s, %s),(%s, %s, %s),(%s, %s, %s),(%s, %s, %s),(%s, %s, %s),(%s, %s, %s),(%s, %s, %s)"
values = (user_name,time[0],V[0],user_name,time[1],V[1],user_name,time[2],V[2],user_name,time[3],V[3],user_name,time[4],V[4],user_name,time[5],V[5],user_name,time[6],V[6],user_name,time[7],V[7],user_name,time[8],V[8],user_name,time[9],V[9])
cur.execute(sql,values)
conn.commit()
cur.close()
conn.close()
yield event.plain_result(f"Hello,{get_user_name(event.get_sender_id())},准备开始挑战十连咯!\n第一次你坚持了{time[0]}s哦,{a[0]}.射出{V[0]}ml,{b[0]}!\n第二次你坚持了{time[1]}s哦,{a[1]}.射出{V[1]}ml,{b[1]}!\n第三次你坚持了{time[2]}s哦,{a[2]}.射出{V[2]}ml,{b[2]}!\n第四次你坚持了{time[3]}s哦,{a[3]}.射出{V[3]}ml,{b[3]}!\n第五次你坚持了{time[4]}s哦,{a[4]}.射出{V[4]}ml,{b[4]}!\n第六次你坚持了{time[5]}s哦,{a[5]}.射出{V[5]}ml,{b[5]}!\n第七次你坚持了{time[6]}s哦,{a[6]}.射出{V[6]}ml,{b[6]}!\n第八次你坚持了{time[7]}s哦,{a[7]}.射出{V[7]}ml,{b[7]}!\n第九次你坚持了{time[8]}s哦,{a[8]}.射出{V[8]}ml,{b[8]}!\n第十次你坚持了{time[9]}s哦,{a[9]}.射出{V[9]}ml,{b[9]}!\n哎呀,一点也打不出来了!杂鱼!")
@filter.command("打打你的")
async def dajiao_other(self, event: AstrMessageEvent, message: str):
if isUserExist(event.get_sender_id()) != True:
insertUser(event.get_sender_id())
time = round(random.uniform(1, 600), 2)
V = round(random.uniform(0.01,100), 2)
a = time_long(time)
b = volume(V)
conn=pymysql.connect(host = '192.168.31.9' # 连接名称默认127.0.0.1
,user = 'saipo' # 用户名
,passwd='Grasste0403' # 密码
,port= 3306 # 端口默认为3306
,db='saipo' # 数据库名称
,charset='utf8' # 字符编码
)
sql = "SELECT openid FROM dajiaouser WHERE nameid = %s"
cur = conn.cursor()
cur.execute(sql, (message,))
user_name_dajiao = cur.fetchall()[0][0]
if user_name_dajiao is None:
cur.close()
conn.close()
yield event.plain_result(f"没有找到这个人哦!")
sql = "INSERT INTO dajiao (openid, timelong, volume) VALUES (%s, %s, %s)"
values = (user_name_dajiao,time,V)
cur.execute(sql,values)
conn.commit()
cur.close()
conn.close()
yield event.plain_result(f"Hello,{get_user_name(event.get_sender_id())},你帮助{get_user_name(user_name_dajiao)}进行了一次打胶, TA坚持了{time}s哦{a}.射出{V}ml,{b}!")
@filter.command("我的时长成就")
@ -162,13 +233,277 @@ class MyPlugin(Star):
conn.close()
yield event.plain_result(f"背包列表:\n{baglist_str}")
testNumber = 0
@filter.command("产量成就排行")
async def volumerank(self, event: AstrMessageEvent):
conn=pymysql.connect(host = '192.168.31.9' # 连接名称,默认
,user = 'saipo'
,passwd='Grasste0403' # 密码
,port= 3306 # 端口默认为3306
,db='saipo' # 数据库名称
,charset='utf8' # 字符编码
)
cur = conn.cursor()
sql = "SELECT du.uid, du.nameid, t.max_volume, MAX(dj.eventTime) AS eventTime FROM dajiaouser du LEFT JOIN (SELECT openid, MAX(volume) AS max_volume FROM dajiao GROUP BY openid) t ON du.openid = t.openid LEFT JOIN dajiao dj ON du.openid = dj.openid AND t.max_volume = dj.volume GROUP BY du.uid, du.nameid, t.max_volume;"
cur.execute(sql)
date = cur.fetchall()
ranklist = []
for i in range(len(date)):
ranklist.append((date[i][0], date[i][1], date[i][2], date[i][3]))
ranklist.sort(key=lambda x: x[2], reverse=True)
ranklist_str = "产量最高排名\n"
for i in range(len(ranklist)):
ranklist_str += f"{i+1} uid:{ranklist[i][0]} nameid:{ranklist[i][1]} 最高产量:{ranklist[i][2]}ml 打胶时间:{ranklist[i][3]}\n"
ranklist_str += "\n"
sql2 = "SELECT du.uid, du.nameid, t.min_volume, MAX(dj.eventTime) AS eventTime FROM dajiaouser du LEFT JOIN (SELECT openid, MIN(volume) AS min_volume FROM dajiao GROUP BY openid) t ON du.openid = t.openid LEFT JOIN dajiao dj ON du.openid = dj.openid AND t.min_volume = dj.volume GROUP BY du.uid, du.nameid, t.min_volume;"
cur.execute(sql2)
date2 = cur.fetchall()
ranklist2 = []
for i in range(len(date2)):
ranklist2.append((date2[i][0], date2[i][1], date2[i][2], date2[i][3]))
ranklist2.sort(key=lambda x: x[2])
ranklist_str += "产量最低排名\n"
for i in range(len(ranklist2)):
ranklist_str += f"{i+1} uid:{ranklist2[i][0]} nameid:{ranklist2[i][1]} 最低产量:{ranklist2[i][2]}ml 打胶时间:{ranklist2[i][3]}\n"
yield event.plain_result(ranklist_str)
cur.close()
conn.close()
@filter.command("时长成就排行")
async def timerank(self, event: AstrMessageEvent):
conn=pymysql.connect(host = '192.168.31.9' # 连接名称,默认
,user = 'saipo'
,passwd='Grasste0403' # 密码
,port= 3306 # 端口默认为3306
,db='saipo' # 数据库名称
,charset='utf8' # 字符编码
)
cur = conn.cursor()
sql = "SELECT du.uid, du.nameid, t.max_timelong, MAX(dj.eventTime) AS eventTime FROM dajiaouser du LEFT JOIN (SELECT openid, MAX(timelong) AS max_timelong FROM dajiao GROUP BY openid) t ON du.openid = t.openid LEFT JOIN dajiao dj ON du.openid = dj.openid AND t.max_timelong = dj.timelong GROUP BY du.uid, du.nameid, t.max_timelong;"
cur.execute(sql)
date = cur.fetchall()
ranklist = []
for i in range(len(date)):
ranklist.append((date[i][0], date[i][1], date[i][2], date[i][3]))
ranklist.sort(key=lambda x: x[2], reverse=True)
ranklist_str = "时长最长排名\n"
for i in range(len(ranklist)):
ranklist_str += f"{i+1} uid:{ranklist[i][0]} {ranklist[i][1]} 最长时长:{ranklist[i][2]}s 打胶时间:{ranklist[i][3]}\n"
ranklist_str += "\n"
sql2 = "SELECT du.uid, du.nameid, t.min_timelong, MAX(dj.eventTime) AS eventTime FROM dajiaouser du LEFT JOIN (SELECT openid, MIN(timelong) AS min_timelong FROM dajiao GROUP BY openid) t ON du.openid = t.openid LEFT JOIN dajiao dj ON du.openid = dj.openid AND t.min_timelong = dj.timelong GROUP BY du.uid, du.nameid, t.min_timelong;"
cur.execute(sql2)
date2 = cur.fetchall()
ranklist2 = []
for i in range(len(date2)):
ranklist2.append((date2[i][0], date2[i][1], date2[i][2], date2[i][3]))
ranklist2.sort(key=lambda x: x[2])
ranklist_str += "时长最短排名\n"
for i in range(len(ranklist2)):
ranklist_str += f"{i+1} uid:{ranklist2[i][0]} {ranklist2[i][1]} 最短时长:{ranklist2[i][2]}s 打胶时间:{ranklist2[i][3]}\n"
yield event.plain_result(ranklist_str)
cur.close()
conn.close()
@filter.command("我的日产量")
async def mydayvolume(self, event: AstrMessageEvent):
if isUserExist(event.get_sender_id()) != True:
insertUser(event.get_sender_id())
conn=pymysql.connect(host = '192.168.31.9' # 连接名称,默认
,user = 'saipo'
,passwd='Grasste0403' # 密码
,port= 3306 # 端口默认为3306
,db='saipo' # 数据库名称
,charset='utf8' # 字符编码
)
cur = conn.cursor()
sql = "SELECT DAY(eventTime),round(sum(volume),2) FROM dajiao WHERE openid = %s and DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(eventTime) GROUP BY DAY(eventTime);"
openid = event.get_sender_id()
cur.execute(sql,(openid,))
date = cur.fetchall()
if len(date) == 0:
cur.close()
conn.close()
yield event.plain_result(f"没有找到数据哦!")
day = []
volume = []
for i in range(len(date)):
day.append(date[i][0])
volume.append(date[i][1])
plt.plot(day, volume)
plt.title('dayvolume')
plt.xlabel('day')
plt.ylabel('volume')
plt.xticks(day)
#设置显示数据
for x, y in zip(day, volume):
plt.text(x, y, f'{y}', ha='center', va='bottom', fontsize=10)
plt.grid()
plt.savefig('dayvolume.png')
plt.close()
with open('dayvolume.png', 'rb') as f:
image_data = f.read()
image = Comp.Image.fromBytes(image_data)
chain = [
Comp.At(qq=event.get_sender_id()),
Comp.Plain("日产量折线图:"),
image,
]
yield event.chain_result(chain)
cur.close()
conn.close()
testNumber = 0
@filter.command("测试")
async def test(self, event: AstrMessageEvent):
global testNumber
testNumber = testNumber + 1
yield event.plain_result(f"累积结果: {testNumber}")
@filter.command("Dora")
async def Dora(self, event: AstrMessageEvent):
async with aiohttp.ClientSession() as session:
async with session.get('https://www.doro.asia/api/random-sticker') as resp:
if resp.status == 200:
data = await resp.json()
if data.get('success', False):
image_url = data['sticker']['url']
chain = [
Comp.At(qq=event.get_sender_id()), # At 消息发送者
Comp.Plain("来看这个图:"),
Comp.Image.fromURL(image_url), # 使用API返回的图片URL
]
yield event.chain_result(chain)
else:
yield "获取表情包失败"
else:
yield "API请求失败"
@filter.command("来句骚话")
async def lovelive(self, event: AstrMessageEvent):
async with aiohttp.ClientSession() as session:
async with session.get('https://api.lovelive.tools/api/SweetNothings') as resp:
if resp.status == 200:
text = await resp.text() # 获取返回的文本内容
chain = [
Comp.At(qq=event.get_sender_id()), # At 消息发送者
Comp.Plain(text) # 使用API返回的文本
]
yield event.chain_result(chain)
else:
yield "获取骚话失败"
@filter.command("部署")
async def bushutest(self, event: AstrMessageEvent):
yield event.plain_result("自动部署成功!!")
@filter.command("井字棋")
async def tic_tac_toe_handler(self, event: AstrMessageEvent):
"""井字棋游戏处理器"""
try:
# 初始化游戏
game = TicTacToeGame()
# 发送初始说明和空棋盘
instructions = (
"欢迎来到井字棋游戏!\n"
"输入1-9的数字来选择位置:\n"
" 1 | 2 | 3 \n"
"-----------\n"
" 4 | 5 | 6 \n"
"-----------\n"
" 7 | 8 | 9 \n"
"\n当前棋盘:" + game.print_board()
)
yield event.plain_result(instructions)
@session_waiter(timeout=60, record_history_chains=False)
async def game_waiter(controller: SessionController, event: AstrMessageEvent):
nonlocal game
idiom = event.message_str # 用户发来的成语,假设是 "一马当先"
# 玩家回合
if game.current_player == game.player_symbol:
move = int(idiom) - 1
if not game.make_move(move):
await event.send(event.make_result(chain=[Comp.Plain("无效移动,请重试。")]))
controller.keep(timeout=60, reset_timeout=True)
return
else:
# 电脑回合
move = game.computer_move()
game.board[move] = game.current_player
# 检查游戏状态
winner = game.check_winner()
if winner:
result = event.make_result()
result.chain = [
Comp.Plain(f"{game.print_board()}\n"),
Comp.Plain("恭喜你赢了!" if winner == game.player_symbol else "电脑赢了!")
]
await event.send(result)
controller.stop()
return
if game.is_board_full():
result = event.make_result()
result.chain = [
Comp.Plain(f"{game.print_board()}\n"),
Comp.Plain("平局!")
]
await event.send(result)
controller.stop()
return
# 切换玩家并继续游戏
game.switch_player()
# 发送更新后的棋盘
result = event.make_result()
if game.current_player == game.player_symbol:
result.chain = [
Comp.Plain(f"{game.print_board()}\n"),
Comp.Plain("轮到你走了请输入1-9:")
]
else:
result.chain = [
Comp.Plain(f"{game.print_board()}\n"),
Comp.Plain("电脑思考中...")
]
await event.send(result)
# 重置超时时间
controller.keep(timeout=60, reset_timeout=True)
try:
await game_waiter(event)
except TimeoutError:
yield event.plain_result("井字棋游戏超时结束!")
except Exception as e:
yield event.plain_result(f"游戏出错: {str(e)}")
finally:
event.stop_event()
except Exception as e:
logger.error(f"井字棋游戏错误: {str(e)}")
yield event.plain_result("游戏发生错误,请稍后再试。")
@filter.command("帮我清理")
async def clean(self, event: AstrMessageEvent):
if isUserExist(event.get_sender_id()) != True:
insertUser(event.get_sender_id())
V = round(random.uniform(0.01,100), 2)
b = volume(V)
if V>=10:
yield event.plain_result(f"让我帮你好好清理一下哦~哧溜哧溜,嗯嗯,又射了{V}ml,{b}!")
else:
yield event.plain_result(f"让我帮你好好清理一下哦~哧溜哧溜,哎呀,全都清理干净啦,杂鱼杂鱼!")